[Bf-blender-cvs] [f60626e3a63] blender2.8: OpenGL: drop support for EXT_geometry_shader4

Mike Erwin noreply at git.blender.org
Sat Apr 8 08:35:42 CEST 2017


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. @@




More information about the Bf-blender-cvs mailing list