sokol icon indicating copy to clipboard operation
sokol copied to clipboard

sg_create_image with OpenGL + SG_FILTER_*_MIPMAP* produces GL_INVALID_ENUM (1280)

Open jdah opened this issue 1 year ago • 3 comments

tiny bug: in _sg_gl_create_image uses _sg_gl_filter to convert sokol filter enums -> GL enums, but glTexParameteri(GL_TEXTURE_MAG_FILTER, ...) only accepts GL_NEAREST and GL_LINEAR as parameters, so _sg_gl_filter returns invalid enums for mipmap-ing filters (see https://registry.khronos.org/OpenGL-Refpages/gl4/html/glTexParameter.xhtml)

        sg_make_image(
            &(sg_image_desc) {
                .type = SG_IMAGETYPE_ARRAY,
                .width = 1024,
                .height = 1024,
                .num_slices = 4,
                .pixel_format = SG_PIXELFORMAT_RGBA8,
                .min_filter = SG_FILTER_NEAREST_MIPMAP_NEAREST,
                .mag_filter = SG_FILTER_NEAREST_MIPMAP_NEAREST,
                .usage = SG_USAGE_DYNAMIC,
                .num_mipmaps = 4
            });

produces GL_INVALID_ENUM for me.

I'll get a PR up when I verify a fix, should I just split _sg_gl_filter into _sg_gl_min_filter and _sg_gl_mag_filter?

jdah avatar May 29 '23 19:05 jdah

Yep, good catch, there's basically a validation layer check missing.

But please don't bother with a PR because there's a better solution on the way with the next "big" update which I'm currently working on, this will split off samplers as their own objects, and while at it, I'll do some more 'harmonization' with WebGPU (basically, the sg_filter enum will only have two options 'nearest' and 'linear', and there will be a separate .mipmap_filter in the new sg_sampler_desc struct.

floooh avatar May 30 '23 07:05 floooh

(PS: I'll keep this ticket open until the 'separate sampler objects' update goes live. It will be a little while though, because I'm currently not sure if this will be a separate update before WebGPU support, or if WebGPU support will be part of the update.

floooh avatar May 30 '23 07:05 floooh

Linking the associated PR: https://github.com/floooh/sokol/pull/842

(not ready yet though)

floooh avatar Jun 21 '23 09:06 floooh

Ok, closing this ticket because that PR is now merged.

floooh avatar Jul 17 '23 18:07 floooh