GPUShader: Fix previous "old Nvidia" fix commit
authorClément Foucault <foucault.clem@gmail.com>
Mon, 13 Aug 2018 21:09:48 +0000 (23:09 +0200)
committerClément Foucault <foucault.clem@gmail.com>
Mon, 13 Aug 2018 21:09:48 +0000 (23:09 +0200)
Note to myself, next time, better check the fix before pushing it.

GL_ARB_texture_gather is defined if there is support for the extension
not only when the extension is enabled. Do this check ourself with
GPU_ARB_texture_gather define.

Original fix 822de6e9e1b8

source/blender/draw/engines/eevee/shaders/effect_minmaxz_frag.glsl
source/blender/draw/modes/shaders/object_outline_detect_frag.glsl
source/blender/gpu/intern/gpu_shader.c

index b6b713e97a0a026fd87c5d0c553776c029d7fad0..f834b698ef9dfb234bf7a747f6c96524a9b78280 100644 (file)
@@ -48,7 +48,7 @@ void main()
        float val = sampleLowerMip(texelPos);
 #else
        vec4 samp;
-#  ifdef GL_ARB_texture_gather
+#  ifdef GPU_ARB_texture_gather
        samp = gatherLowerMip(vec2(texelPos) / vec2(mipsize));
 #  else
        samp.x = sampleLowerMip(texelPos);
@@ -66,7 +66,7 @@ void main()
                        samp.x = sampleLowerMip(texelPos + ivec2(2, 2));
                        val = minmax2(val, samp.x);
                }
-#  ifdef GL_ARB_texture_gather
+#  ifdef GPU_ARB_texture_gather
                samp = gatherLowerMip((vec2(texelPos) + vec2(1.0, 0.0)) / vec2(mipsize));
 #  else
                samp.y = sampleLowerMip(texelPos + ivec2(2, 0));
@@ -76,7 +76,7 @@ void main()
        }
        /* if we are reducing an odd-height texture then fetch the edge texels */
        if (((mipsize.y & 1) != 0) && (texelPos.y == mipsize.y - 3)) {
-#  ifdef GL_ARB_texture_gather
+#  ifdef GPU_ARB_texture_gather
                samp = gatherLowerMip((vec2(texelPos) + vec2(0.0, 1.0)) / vec2(mipsize));
 #  else
                samp.x = sampleLowerMip(texelPos + ivec2(0, 2));
index 9a7856ecb13970b9723fb9bf86757ccd55b74762..dbf7f411a20abe992e18d37f98a4d4d239c4bf9a 100644 (file)
@@ -32,7 +32,7 @@ void main()
 {
        ivec2 texel = ivec2(gl_FragCoord.xy);
 
-#ifdef GL_ARB_texture_gather
+#ifdef GPU_ARB_texture_gather
        vec2 texel_size = 1.0 / vec2(textureSize(outlineId, 0).xy);
        vec2 uv = ceil(gl_FragCoord.xy) * texel_size;
 
index b812cf61483e565c1a123e7bdb2efd6d19c65a62..427a3fd233e5089fb128e19e6c42e4e76a4c360c 100644 (file)
@@ -226,6 +226,7 @@ static void gpu_shader_standard_extensions(char defines[MAX_EXT_DEFINE_LENGTH])
                 * is reported to be supported but yield a compile error (see T55802). */
                if (!GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY) || GLEW_VERSION_4_0) {
                        strcat(defines, "#extension GL_ARB_texture_gather: enable\n");
+                       strcat(defines, "#define GPU_ARB_texture_gather\n");
                }
        }
        if (GLEW_ARB_texture_query_lod) {