From: Fabian Bieler <fabianbie...@fastmail.fm> V2 [Chris]: Remove display list support; we will only do tessellation shders in the core profile. --- src/mapi/glapi/gen/ARB_tessellation_shader.xml | 62 ++++++++++++++++++++++++++ src/mapi/glapi/gen/gl_API.xml | 6 ++- src/mapi/glapi/gen/gl_enums.py | 1 + src/mesa/main/mtypes.h | 2 +- src/mesa/main/shaderapi.c | 18 ++++++++ src/mesa/main/shaderapi.h | 7 +++ src/mesa/main/tests/dispatch_sanity.cpp | 4 +- 7 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 src/mapi/glapi/gen/ARB_tessellation_shader.xml
diff --git a/src/mapi/glapi/gen/ARB_tessellation_shader.xml b/src/mapi/glapi/gen/ARB_tessellation_shader.xml new file mode 100644 index 0000000..16a2139 --- /dev/null +++ b/src/mapi/glapi/gen/ARB_tessellation_shader.xml @@ -0,0 +1,62 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + + +<category name="GL_ARB_tessellation_shader" number="91"> + + <!--<enum value="0" name="FALSE"/> + <enum value="1" name="TRUE"/> + <enum value="0x0004" name="TRIANGLES"/> + <enum value="0x0007" name="QUADS"/> + <enum value="0x0202" name="EQUAL"/> + <enum value="0x0900" name="CW"/> + <enum value="0x0901" name="CCW"/>--> + + <enum value="0x000E" name="PATCHES"/> + <enum value="0x84F0" name="UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER"/> + <enum value="0x84F1" name="UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER"/> + <enum value="0x886C" name="MAX_TESS_CONTROL_INPUT_COMPONENTS"/> + <enum value="0x886D" name="MAX_TESS_EVALUATION_INPUT_COMPONENTS"/> + <enum value="0x8E1E" name="MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS"/> + <enum value="0x8E1F" name="MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS"/> + <enum value="0x8E72" name="PATCH_VERTICES"/> + <enum value="0x8E73" name="PATCH_DEFAULT_INNER_LEVEL"/> + <enum value="0x8E74" name="PATCH_DEFAULT_OUTER_LEVEL"/> + <enum value="0x8E75" name="TESS_CONTROL_OUTPUT_VERTICES"/> + <enum value="0x8E76" name="TESS_GEN_MODE"/> + <enum value="0x8E77" name="TESS_GEN_SPACING"/> + <enum value="0x8E78" name="TESS_GEN_VERTEX_ORDER"/> + <enum value="0x8E79" name="TESS_GEN_POINT_MODE"/> + <enum value="0x8E7A" name="ISOLINES"/> + <enum value="0x8E7B" name="FRACTIONAL_ODD"/> + <enum value="0x8E7C" name="FRACTIONAL_EVEN"/> + <enum value="0x8E7D" name="MAX_PATCH_VERTICES"/> + <enum value="0x8E7E" name="MAX_TESS_GEN_LEVEL"/> + <enum value="0x8E7F" name="MAX_TESS_CONTROL_UNIFORM_COMPONENTS"/> + <enum value="0x8E80" name="MAX_TESS_EVALUATION_UNIFORM_COMPONENTS"/> + <enum value="0x8E81" name="MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS"/> + <enum value="0x8E82" name="MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS"/> + <enum value="0x8E83" name="MAX_TESS_CONTROL_OUTPUT_COMPONENTS"/> + <enum value="0x8E84" name="MAX_TESS_PATCH_COMPONENTS"/> + <enum value="0x8E85" name="MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS"/> + <enum value="0x8E86" name="MAX_TESS_EVALUATION_OUTPUT_COMPONENTS"/> + <enum value="0x8E87" name="TESS_EVALUATION_SHADER"/> + <enum value="0x8E88" name="TESS_CONTROL_SHADER"/> + <enum value="0x8E89" name="MAX_TESS_CONTROL_UNIFORM_BLOCKS"/> + <enum value="0x8E8A" name="MAX_TESS_EVALUATION_UNIFORM_BLOCKS"/> + + <function name="PatchParameteri" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="value" type="GLint"/> + </function> + <function name="PatchParameterfv" offset="assign"> + <param name="pname" type="GLenum"/> + <param name="values" type="const GLfloat *"/> + </function> +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 73f2f75..153d814 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -8207,7 +8207,11 @@ <xi:include href="ARB_vertex_type_2_10_10_10_rev.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<!-- ARB extensions #86...#93 --> +<!-- ARB extensions #86...#90 --> + +<xi:include href="ARB_tessellation_shader.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- ARB extensions #92...#93 --> <xi:include href="ARB_draw_indirect.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> diff --git a/src/mapi/glapi/gen/gl_enums.py b/src/mapi/glapi/gen/gl_enums.py index 0214932..7a7e745 100644 --- a/src/mapi/glapi/gen/gl_enums.py +++ b/src/mapi/glapi/gen/gl_enums.py @@ -116,6 +116,7 @@ static const char *prim_names[PRIM_MAX+3] = { "GL_LINE_STRIP_ADJACENCY", "GL_TRIANGLES_ADJACENCY", "GL_TRIANGLE_STRIP_ADJACENCY", + "GL_PATCHES", "outside begin/end", "unknown state" }; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 553a216..9f93aa1 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -89,7 +89,7 @@ struct vbo_context; /** Extra draw modes beyond GL_POINTS, GL_TRIANGLE_FAN, etc */ -#define PRIM_MAX GL_TRIANGLE_STRIP_ADJACENCY +#define PRIM_MAX GL_PATCHES #define PRIM_OUTSIDE_BEGIN_END (PRIM_MAX + 1) #define PRIM_UNKNOWN (PRIM_MAX + 2) diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 620cab3..79d2e94 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1919,3 +1919,21 @@ _mesa_CreateShaderProgramv(GLenum type, GLsizei count, return _mesa_create_shader_program(ctx, GL_TRUE, type, count, strings); } + + +/** + * For GL_ARB_tessellation_shader + */ +extern void GLAPIENTRY +_mesa_PatchParameteri(GLenum pname, GLint value) +{ + /* STUB */ +} + + +extern void GLAPIENTRY +_mesa_PatchParameterfv(GLenum pname, const GLfloat *values) +{ + /* STUB */ +} + diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index 17b05b3..3125829 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -228,6 +228,13 @@ extern GLuint GLAPIENTRY _mesa_CreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const *strings); +/* GL_ARB_tessellation_shader */ +extern void GLAPIENTRY +_mesa_PatchParameteri(GLenum pname, GLint value); + +extern void GLAPIENTRY +_mesa_PatchParameterfv(GLenum pname, const GLfloat *values); + #ifdef __cplusplus } #endif diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 04fa86b..2fabd1e 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -543,6 +543,8 @@ const struct function gl_core_functions_possible[] = { /* GL 4.0 */ { "glMinSampleShading", 40, -1 }, + { "glPatchParameteri", 40, -1 }, + { "glPatchParameterfv", 40, -1 }, { "glBlendEquationi", 40, -1 }, { "glBlendEquationSeparatei", 40, -1 }, { "glBlendFunci", 40, -1 }, @@ -695,8 +697,6 @@ const struct function gl_core_functions_possible[] = { // { "glUniformSubroutinesuiv", 43, -1 }, // XXX: Add to xml // { "glGetUniformSubroutineuiv", 43, -1 }, // XXX: Add to xml // { "glGetProgramStageiv", 43, -1 }, // XXX: Add to xml -// { "glPatchParameteri", 43, -1 }, // XXX: Add to xml -// { "glPatchParameterfv", 43, -1 }, // XXX: Add to xml { "glBindTransformFeedback", 43, -1 }, { "glDeleteTransformFeedbacks", 43, -1 }, { "glGenTransformFeedbacks", 43, -1 }, -- 2.1.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev