On 11/29/2015 03:20 PM, Kenneth Graunke wrote: > On Sunday, November 29, 2015 02:17:06 PM Ian Romanick wrote: >> On 11/25/2015 03:16 AM, Marta Lofstedt wrote: >>> From: Marta Lofstedt <marta.lofst...@intel.com> >>> >>> No drivers currently implement ARB_geometry_shader4, nor are there >>> any plans to implement it. We only support the version of geometry >>> shaders that was incorporated into OpenGL 3.2 / GLSL 1.50. >>> >>> Signed-off-by: Marta Lofstedt <marta.lofst...@linux.intel.com> >>> --- >>> src/mapi/glapi/gen/ARB_geometry_shader4.xml | 57 >>> ----------------------------- >>> src/mapi/glapi/gen/Makefile.am | 1 - >>> src/mapi/glapi/gen/gl_API.xml | 2 +- >>> src/mesa/main/api_validate.c | 2 +- >>> src/mesa/main/config.h | 2 +- >>> src/mesa/main/context.h | 3 +- >>> src/mesa/main/dlist.c | 55 >>> ---------------------------- >>> src/mesa/main/get.c | 7 ---- >>> src/mesa/main/get_hash_params.py | 12 ++---- >>> src/mesa/main/mtypes.h | 3 +- >>> src/mesa/main/tests/enum_strings.cpp | 6 --- >>> 11 files changed, 9 insertions(+), 141 deletions(-) >>> delete mode 100644 src/mapi/glapi/gen/ARB_geometry_shader4.xml >>> >>> diff --git a/src/mapi/glapi/gen/ARB_geometry_shader4.xml >>> b/src/mapi/glapi/gen/ARB_geometry_shader4.xml >>> deleted file mode 100644 >>> index 280e7a0..0000000 >>> --- a/src/mapi/glapi/gen/ARB_geometry_shader4.xml >>> +++ /dev/null >>> @@ -1,57 +0,0 @@ >>> -<?xml version="1.0"?> >>> -<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> >>> - >>> -<!-- Note: no GLX protocol info yet. --> >>> - >>> -<OpenGLAPI> >>> - >>> - >>> -<category name="GL_ARB_geometry_shader4" number="47"> >>> - <enum name="GEOMETRY_SHADER_ARB" value="0x8DD9"/> >>> - <enum name="GEOMETRY_VERTICES_OUT_ARB" value="0x8DDA"/> >>> - <enum name="GEOMETRY_INPUT_TYPE_ARB" value="0x8DDB"/> >>> - <enum name="GEOMETRY_OUTPUT_TYPE_ARB" value="0x8DDC"/> >>> - <enum name="MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB" value="0x8C29"/> >>> - <enum name="MAX_GEOMETRY_VARYING_COMPONENTS_ARB" value="0x8DDD"/> >>> - <enum name="MAX_VERTEX_VARYING_COMPONENTS_ARB" value="0x8DDE"/> >>> - <enum name="MAX_VARYING_COMPONENTS" value="0x8B4B"/> >>> - <enum name="MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB" value="0x8DDF"/> >>> - <enum name="MAX_GEOMETRY_OUTPUT_VERTICES_ARB" value="0x8DE0"/> >>> - <enum name="MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB" value="0x8DE1"/> >>> - <enum name="LINES_ADJACENCY_ARB" value="0xA"/> >>> - <enum name="LINE_STRIP_ADJACENCY_ARB" value="0xB"/> >>> - <enum name="TRIANGLES_ADJACENCY_ARB" value="0xC"/> >>> - <enum name="TRIANGLE_STRIP_ADJACENCY_ARB" value="0xD"/> >>> - <enum name="FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB" value="0x8DA8"/> >>> - <enum name="FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB" value="0x8DA9"/> >>> - <enum name="FRAMEBUFFER_ATTACHMENT_LAYERED_ARB" value="0x8DA7"/> >>> - <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER" value="0x8CD4"/> >>> - <enum name="PROGRAM_POINT_SIZE_ARB" value="0x8642"/> >>> - <function name="ProgramParameteriARB" alias="ProgramParameteri"> >>> - <param name="program" type="GLuint"/> >>> - <param name="pname" type="GLenum"/> >>> - <param name="value" type="GLint"/> >>> - </function> >>> - <function name="FramebufferTextureARB" alias="FramebufferTexture"> >>> - <param name="target" type="GLenum"/> >>> - <param name="attachment" type="GLenum"/> >>> - <param name="texture" type="GLuint"/> >>> - <param name="level" type="GLint"/> >>> - </function> >>> - <function name="FramebufferTextureLayerARB" >>> alias="FramebufferTextureLayer"> >>> - <param name="target" type="GLenum"/> >>> - <param name="attachment" type="GLenum"/> >>> - <param name="texture" type="GLuint"/> >>> - <param name="level" type="GLint"/> >>> - <param name="layer" type="GLint"/> >>> - </function> >>> - <function name="FramebufferTextureFaceARB" exec="skip"> >>> - <param name="target" type="GLenum"/> >>> - <param name="attachment" type="GLenum"/> >>> - <param name="texture" type="GLuint"/> >>> - <param name="level" type="GLint"/> >>> - <param name="face" type="GLenum"/> >>> - </function> >>> -</category> >>> - >>> -</OpenGLAPI> >>> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am >>> index a5a26a6..40b0e65 100644 >>> --- a/src/mapi/glapi/gen/Makefile.am >>> +++ b/src/mapi/glapi/gen/Makefile.am >>> @@ -133,7 +133,6 @@ API_XML = \ >>> ARB_ES3_compatibility.xml \ >>> ARB_framebuffer_no_attachments.xml \ >>> ARB_framebuffer_object.xml \ >>> - ARB_geometry_shader4.xml \ >>> ARB_get_program_binary.xml \ >>> ARB_get_texture_sub_image.xml \ >>> ARB_gpu_shader_fp64.xml \ >>> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml >>> index ec83cd4..6243bdd 100644 >>> --- a/src/mapi/glapi/gen/gl_API.xml >>> +++ b/src/mapi/glapi/gen/gl_API.xml >>> @@ -7975,7 +7975,7 @@ >>> >>> <!-- 46. GL_ARB_framebuffer_sRGB --> >>> >>> -<xi:include href="ARB_geometry_shader4.xml" >>> xmlns:xi="http://www.w3.org/2001/XInclude"/> >>> +<!-- 47. GL_ARB_geometry_shader4. There are no intentions to implement >>> this extension --> >>> >>> <!-- 48. GL_ARB_half_float_vertex --> >>> >>> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c >>> index a490189..cbfb6b5 100644 >>> --- a/src/mesa/main/api_validate.c >>> +++ b/src/mesa/main/api_validate.c >>> @@ -170,7 +170,7 @@ _mesa_valid_prim_mode(struct gl_context *ctx, GLenum >>> mode, const char *name) >>> return GL_FALSE; >>> } >>> >>> - /* From the ARB_geometry_shader4 spec: >>> + /* From the OpenGL 4.5 specification, section 11.3.1: >>> * >>> * The error INVALID_OPERATION is generated if Begin, or any command >>> that >>> * implicitly calls Begin, is called when a geometry shader is active >>> and: >>> diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h >>> index f29de5f..2d53e2f 100644 >>> --- a/src/mesa/main/config.h >>> +++ b/src/mesa/main/config.h >>> @@ -246,7 +246,7 @@ >>> #define MAX_FEEDBACK_BUFFERS 4 >>> #define MAX_FEEDBACK_ATTRIBS 32 >>> >>> -/** For GL_ARB_geometry_shader4 */ >>> +/** For geometry shader */ >>> /*@{*/ >>> #define MAX_GEOMETRY_UNIFORM_COMPONENTS 512 >>> #define MAX_GEOMETRY_OUTPUT_VERTICES 256 >>> diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h >>> index 4798b1f..8b64f45 100644 >>> --- a/src/mesa/main/context.h >>> +++ b/src/mesa/main/context.h >>> @@ -330,8 +330,7 @@ _mesa_is_gles31(const struct gl_context *ctx) >>> static inline bool >>> _mesa_has_geometry_shaders(const struct gl_context *ctx) >>> { >>> - return _mesa_is_desktop_gl(ctx) && >>> - (ctx->Version >= 32 || ctx->Extensions.ARB_geometry_shader4); >>> + return _mesa_is_desktop_gl(ctx) && ctx->Version >= 32; >>> } >>> >>> >>> diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c >>> index 2b65b2e..ba2e670 100644 >>> --- a/src/mesa/main/dlist.c >>> +++ b/src/mesa/main/dlist.c >>> @@ -457,11 +457,6 @@ typedef enum >>> OPCODE_SAMPLER_PARAMETERIIV, >>> OPCODE_SAMPLER_PARAMETERUIV, >>> >>> - /* GL_ARB_geometry_shader4 */ >>> - OPCODE_PROGRAM_PARAMETERI, >>> - OPCODE_FRAMEBUFFER_TEXTURE, >>> - OPCODE_FRAMEBUFFER_TEXTURE_FACE, >>> - >>> /* GL_ARB_sync */ >>> OPCODE_WAIT_SYNC, >>> >>> @@ -7554,44 +7549,6 @@ save_SamplerParameterIuiv(GLuint sampler, GLenum >>> pname, const GLuint *params) >>> } >>> } >>> >>> -/* GL_ARB_geometry_shader4 */ >>> -static void GLAPIENTRY >>> -save_ProgramParameteri(GLuint program, GLenum pname, GLint value) >>> -{ >>> - Node *n; >>> - GET_CURRENT_CONTEXT(ctx); >>> - ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); >>> - n = alloc_instruction(ctx, OPCODE_PROGRAM_PARAMETERI, 3); >>> - if (n) { >>> - n[1].ui = program; >>> - n[2].e = pname; >>> - n[3].i = value; >>> - } >>> - if (ctx->ExecuteFlag) { >>> - CALL_ProgramParameteri(ctx->Exec, (program, pname, value)); >>> - } >>> -} >> >> You can't remove this function. It's still used for >> GL_PROGRAM_BINARY_RETRIEVABLE_HINT. See >> https://www.opengl.org/sdk/docs/man/html/glProgramParameter.xhtml. We >> support GL_ARB_get_program_binary on compatibility profile. We should >> probably have a compatibility profile piglit test for this. :) > > I asked Marta to remove this, and explained my reasoning in: > http://lists.freedesktop.org/archives/mesa-dev/2015-November/101269.html > > I'll recap here. glProgramParameteri is used for: > > 1. GL_ARB_geometry_shader4 pnames > 2. GL_PROGRAM_SEPARABLE from GL_ARB_separate_shader_objects > 3. GL_PROGRAM_BINARY_RETRIEVABLE_HINT from GL_ARB_get_program_binary > > #2 is not a concern, as we only support SSO in core profiles, where > this code doesn't exist. The SSO spec also mentions a bunch of display > list interactions, but doesn't mention ProgramParameteri, so I would > assume that it is not intended to work.
I had forgotten about GL_ARB_separate_shader_objects. It's annoying that the glProgramParameteri man page doesn't mention it. We *do* support that extension in compatibility too: EXT(ARB_separate_shader_objects , dummy_true , GLL, GLC, x , x , 2010) > #3 is trickier...as you say, we support GL_ARB_get_program_binary in > legacy profiles. But the extension doesn't mention anything about > display list interactions. Sure, you could make a display list that > sets GL_PROGRAM_BINARY_RETRIEVABLE_HINT, but it sets a program > compilation flag that only takes effect at the next glLinkProgram or > glProgramBinary call...neither of which are allowed in display lists. > Sure, you could run a display list to set it, /then/ call LinkProgram, > but...why? > > Do you disagree, Ian? Have I missed some text somewhere, or are we > just interpreting the spec differently? The usual way to tell whether or not something can go in a display list is whether or not it's GLX protocol is a render op or a single op. Before display lists were deprecated, all render ops could go in a display list. In GL_ARB_geometry_shader4, glProgramParameteriARB is a render op: ProgramParameteriARB 2 16 rendering command length 2 266 rendering command opcode 4 CARD32 program 4 ENUM pname 4 INT32 value BUT... GL_ARB_geometry_shader4 saves the day: Add the command ProgramParameteriARB to the list of commands that are not compiled into a display list, but executed immediately, under "Program and Shader Objects", p. 241 Based on that, I'd like to see a patch for 11.1 and 11.0 that removes glProgramParameteri display list support. > --Ken
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev