Commit: f60626e3a633ce8506cbc12310b42b60ade5f95e
Author: Mike Erwin
Date:   Sat Apr 8 02:21:13 2017 -0400
Branches: blender2.8
https://developer.blender.org/rBf60626e3a633ce8506cbc12310b42b60ade5f95e

OpenGL: drop support for EXT_geometry_shader4

See gpu_shader.c for the main changes.

EXT_geometry_shader4 brought this feature to GL versions < 3.2, but now it's 
just cluttering up our code.

Soon all platforms will be on version 3.3 so we won't even have to check 
support at runtime!

===================================================================

M       source/blender/draw/intern/draw_manager.c
M       source/blender/gpu/GPU_extensions.h
M       source/blender/gpu/GPU_shader.h
M       source/blender/gpu/intern/gpu_basic_shader.c
M       source/blender/gpu/intern/gpu_codegen.c
M       source/blender/gpu/intern/gpu_extensions.c
M       source/blender/gpu/intern/gpu_shader.c
M       source/blender/gpu/shaders/gpu_shader_fx_dof_hq_geo.glsl
M       source/blender/gpu/shaders/gpu_shader_geometry.glsl

===================================================================

diff --git a/source/blender/draw/intern/draw_manager.c 
b/source/blender/draw/intern/draw_manager.c
index d233caedbd1..100d5994b67 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -325,7 +325,7 @@ void DRW_uniformbuffer_free(GPUUniformBuffer *ubo)
 
 GPUShader *DRW_shader_create(const char *vert, const char *geom, const char 
*frag, const char *defines)
 {
-       return GPU_shader_create(vert, frag, geom, NULL, defines, 0, 0, 0);
+       return GPU_shader_create(vert, frag, geom, NULL, defines);
 }
 
 GPUShader *DRW_shader_create_with_lib(const char *vert, const char *geom, 
const char *frag, const char *lib, const char *defines)
@@ -355,7 +355,7 @@ GPUShader *DRW_shader_create_with_lib(const char *vert, 
const char *geom, const
                BLI_dynstr_free(ds_geom);
        }
 
-       sh = GPU_shader_create(vert_with_lib, frag_with_lib, geom_with_lib, 
NULL, defines, 0, 0, 0);
+       sh = GPU_shader_create(vert_with_lib, frag_with_lib, geom_with_lib, 
NULL, defines);
 
        MEM_freeN(vert_with_lib);
        MEM_freeN(frag_with_lib);
@@ -368,17 +368,17 @@ GPUShader *DRW_shader_create_with_lib(const char *vert, 
const char *geom, const
 
 GPUShader *DRW_shader_create_2D(const char *frag, const char *defines)
 {
-       return GPU_shader_create(datatoc_gpu_shader_2D_vert_glsl, frag, NULL, 
NULL, defines, 0, 0, 0);
+       return GPU_shader_create(datatoc_gpu_shader_2D_vert_glsl, frag, NULL, 
NULL, defines);
 }
 
 GPUShader *DRW_shader_create_3D(const char *frag, const char *defines)
 {
-       return GPU_shader_create(datatoc_gpu_shader_3D_vert_glsl, frag, NULL, 
NULL, defines, 0, 0, 0);
+       return GPU_shader_create(datatoc_gpu_shader_3D_vert_glsl, frag, NULL, 
NULL, defines);
 }
 
 GPUShader *DRW_shader_create_fullscreen(const char *frag, const char *defines)
 {
-       return GPU_shader_create(datatoc_gpu_shader_fullscreen_vert_glsl, frag, 
NULL, NULL, defines, 0, 0, 0);
+       return GPU_shader_create(datatoc_gpu_shader_fullscreen_vert_glsl, frag, 
NULL, NULL, defines);
 }
 
 GPUShader *DRW_shader_create_3D_depth_only(void)
diff --git a/source/blender/gpu/GPU_extensions.h 
b/source/blender/gpu/GPU_extensions.h
index ff00a83d00b..8cfab11dbef 100644
--- a/source/blender/gpu/GPU_extensions.h
+++ b/source/blender/gpu/GPU_extensions.h
@@ -45,7 +45,6 @@ bool GPU_full_non_power_of_two_support(void);
 bool GPU_display_list_support(void);
 bool GPU_bicubic_bump_support(void);
 bool GPU_geometry_shader_support(void);
-bool GPU_geometry_shader_support_via_extension(void);
 bool GPU_instanced_drawing_support(void);
 
 int GPU_max_texture_size(void);
diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h
index 71a1e3a6591..5eb137c69c6 100644
--- a/source/blender/gpu/GPU_shader.h
+++ b/source/blender/gpu/GPU_shader.h
@@ -55,15 +55,13 @@ GPUShader *GPU_shader_create(
         const char *fragcode,
         const char *geocode,
         const char *libcode,
-        const char *defines,
-        int input, int output, int number);
+        const char *defines);
 GPUShader *GPU_shader_create_ex(
         const char *vertexcode,
         const char *fragcode,
         const char *geocode,
         const char *libcode,
         const char *defines,
-        int input, int output, int number,
         const int flags);
 void GPU_shader_free(GPUShader *shader);
 
diff --git a/source/blender/gpu/intern/gpu_basic_shader.c 
b/source/blender/gpu/intern/gpu_basic_shader.c
index 960181df545..bbd28c8803d 100644
--- a/source/blender/gpu/intern/gpu_basic_shader.c
+++ b/source/blender/gpu/intern/gpu_basic_shader.c
@@ -262,7 +262,7 @@ static GPUShader *gpu_basic_shader(int options)
                        datatoc_gpu_shader_basic_frag_glsl,
                        geom_glsl,
                        NULL,
-                       defines, 0, 0, 0);
+                       defines);
                
                if (shader) {
                        /* set texture map to first texture unit */
diff --git a/source/blender/gpu/intern/gpu_codegen.c 
b/source/blender/gpu/intern/gpu_codegen.c
index df3b6f962e5..faf1b907570 100644
--- a/source/blender/gpu/intern/gpu_codegen.c
+++ b/source/blender/gpu/intern/gpu_codegen.c
@@ -1686,9 +1686,6 @@ GPUPass *GPU_generate_pass(
                                      geometrycode,
                                      glsl_material_library,
                                      NULL,
-                                     0,
-                                     0,
-                                     0,
                                      flags);
 
        /* failed? */
diff --git a/source/blender/gpu/intern/gpu_extensions.c 
b/source/blender/gpu/intern/gpu_extensions.c
index d7ed65e853e..175fb9de041 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -61,7 +61,6 @@
  * EXT_framebuffer_multisample_blit_scaled: ???
  * ARB_draw_instanced: 3.1
  * ARB_texture_multisample: 3.2
- * EXT_geometry_shader4: 3.2
  * ARB_texture_query_lod: 4.0
  */
 
@@ -334,16 +333,10 @@ bool GPU_bicubic_bump_support(void)
 
 bool GPU_geometry_shader_support(void)
 {
-       /* in GL 3.2 geometry shaders are fully supported
+       /* starting with GL 3.2 geometry shaders are fully supported
         * core profile clashes with our other shaders so accept compatibility 
only
-        * other GL versions can use EXT_geometry_shader4 if available
         */
-       return (GLEW_VERSION_3_2 && GPU_legacy_support()) || 
GLEW_EXT_geometry_shader4;
-}
-
-bool GPU_geometry_shader_support_via_extension(void)
-{
-       return GLEW_EXT_geometry_shader4 && !(GLEW_VERSION_3_2 && 
GPU_legacy_support());
+       return GLEW_VERSION_3_2 && GPU_legacy_support();
 }
 
 bool GPU_instanced_drawing_support(void)
diff --git a/source/blender/gpu/intern/gpu_shader.c 
b/source/blender/gpu/intern/gpu_shader.c
index 1532bf87c7c..984bad1f6c0 100644
--- a/source/blender/gpu/intern/gpu_shader.c
+++ b/source/blender/gpu/intern/gpu_shader.c
@@ -207,7 +207,7 @@ static const char *gpu_shader_version(void)
 #endif
 }
 
-static void gpu_shader_standard_extensions(char 
defines[MAX_EXT_DEFINE_LENGTH], bool use_geometry_shader)
+static void gpu_shader_standard_extensions(char defines[MAX_EXT_DEFINE_LENGTH])
 {
        /* enable extensions for features that are not part of our base GLSL 
version
         * don't use an extension for something already available!
@@ -219,10 +219,6 @@ static void gpu_shader_standard_extensions(char 
defines[MAX_EXT_DEFINE_LENGTH],
        }
 
 #ifdef WITH_LEGACY_OPENGL
-       if (use_geometry_shader && GPU_geometry_shader_support_via_extension()) 
{
-               strcat(defines, "#extension GL_EXT_geometry_shader4: enable\n");
-       }
-
        if (GLEW_VERSION_3_1 && !GLEW_VERSION_3_2 && GLEW_ARB_compatibility) {
                strcat(defines, "#extension GL_ARB_compatibility: enable\n");
        }
@@ -236,8 +232,6 @@ static void gpu_shader_standard_extensions(char 
defines[MAX_EXT_DEFINE_LENGTH],
                        strcat(defines, "#extension GL_EXT_gpu_shader4: 
require\n");
                }
        }
-#else
-       (void)use_geometry_shader;
 #endif
 }
 
@@ -297,19 +291,13 @@ GPUShader *GPU_shader_create(const char *vertexcode,
                              const char *fragcode,
                              const char *geocode,
                              const char *libcode,
-                             const char *defines,
-                             int input,
-                             int output,
-                             int number)
+                             const char *defines)
 {
        return GPU_shader_create_ex(vertexcode,
                                    fragcode,
                                    geocode,
                                    libcode,
                                    defines,
-                                   input,
-                                   output,
-                                   number,
                                    GPU_SHADER_FLAGS_NONE);
 }
 
@@ -318,9 +306,6 @@ GPUShader *GPU_shader_create_ex(const char *vertexcode,
                                 const char *geocode,
                                 const char *libcode,
                                 const char *defines,
-                                int input,
-                                int output,
-                                int number,
                                 const int flags)
 {
 #ifdef WITH_OPENSUBDIV
@@ -367,7 +352,7 @@ GPUShader *GPU_shader_create_ex(const char *vertexcode,
        gpu_shader_standard_defines(standard_defines,
                                    use_opensubdiv,
                                    (flags & GPU_SHADER_FLAGS_NEW_SHADING) != 
0);
-       gpu_shader_standard_extensions(standard_extensions, geocode != NULL);
+       gpu_shader_standard_extensions(standard_extensions);
 
        if (vertexcode) {
                const char *source[5];
@@ -459,20 +444,12 @@ GPUShader *GPU_shader_create_ex(const char *vertexcode,
                        GPU_shader_free(shader);
                        return NULL;
                }
-               
-               if (!use_opensubdiv) {
-                       GPU_shader_geometry_stage_primitive_io(shader, input, 
output, number);
-               }
        }
 
 #ifdef WITH_OPENSUBDIV
        if (use_opensubdiv) {
                glBindAttribLocation(shader->program, 0, "position");
                glBindAttribLocation(shader->program, 1, "normal");
-               GPU_shader_geometry_stage_primitive_io(shader,
-                                                      GL_LINES_ADJACENCY_EXT,
-                                                      GL_TRIANGLE_STRIP,
-                                                      4);
        }
 #endif
 
@@ -610,16 +587,6 @@ void GPU_shader_uniform_int(GPUShader *UNUSED(shader), int 
location, int value)
        glUniform1i(location, value);
 }
 
-void GPU_shader_geometry_stage_primitive_io(GPUShader *shader, int input, int 
output, int number)
-{
-       if (GPU_geometry_shader_support_via_extension()) {
-               /* geometry shaders must provide this info themselves for 
#version 150 and up */
-               glProgramParameteriEXT(shader->program, 
GL_GEOMETRY_INPUT_TYPE_EXT, input);
-               glProgramParameteriEXT(shader->program, 
GL_GEOMETRY_OUTPUT_TYPE_EXT, output);
-               glProgramParameteriEXT(shader->program, 
GL_GEOMETRY_VERTICES_OUT_EXT, number);
-       }
-}
-
 void GPU_shader_uniform_buffer(GPUShader *shader, int location, 
GPUUniformBuffer *ubo)
 {
        int bindpoint = GPU_uniformbuffer_bindpoint(ubo);
@@ -809,8 +776,7 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader 
shader)
                }
 
                /* common case */
-               builtin_shaders[shader] = GPU_shader_create(stages->vert, 
stages->frag, stages->geom,
-                                                           NULL, defines, 0, 
0, 0);
+               builtin_shaders[shader] = GPU_shader_create(stages->vert, 
stages->frag, stages->geom, NULL,

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to