diff options
author | Ian Romanick <[email protected]> | 2015-04-28 18:00:43 -0700 |
---|---|---|
committer | Ian Romanick <[email protected]> | 2015-05-28 16:56:31 -0700 |
commit | 366ceacf72258a4a81d9c6b412dd565a4c611b17 (patch) | |
tree | ea8ccf33aa6c988fcb959370c9f7808d7aa9376f /src | |
parent | 8bbe7fa7a853d8ebf69e5d2d0fdc4343a20b638f (diff) |
gles/es3.1: Enable dispatch of almost all new GLES 3.1 functions
A couple functions are missing because there are no implementations of
them yet. These are:
glFramebufferParameteri (from GL_ARB_framebuffer_no_attachments)
glGetFramebufferParameteriv (from GL_ARB_framebuffer_no_attachments)
glMemoryBarrierByRegion
v2: Rebase on updated dispatch_sanity.cpp test.
v3: Add support for glDraw{Arrays,Elements}Indirect in vbo_exec_array.c.
The updated dispatch_sanity.cpp test discovered this omission.
v4: Rebase on glapi changes.
Signed-off-by: Ian Romanick <[email protected]>
Reviewed-by: Tapani Pälli <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mapi/glapi/gen/ARB_compute_shader.xml | 4 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_draw_indirect.xml | 4 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_program_interface_query.xml | 10 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_separate_shader_objects.xml | 86 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_shader_image_load_store.xml | 4 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_texture_multisample.xml | 4 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_texture_storage_multisample.xml | 2 | ||||
-rw-r--r-- | src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml | 10 | ||||
-rw-r--r-- | src/mapi/glapi/gen/GL3x.xml | 2 | ||||
-rw-r--r-- | src/mapi/glapi/gen/gl_API.xml | 4 | ||||
-rw-r--r-- | src/mesa/main/tests/dispatch_sanity.cpp | 95 | ||||
-rw-r--r-- | src/mesa/vbo/vbo_exec_array.c | 5 |
12 files changed, 164 insertions, 66 deletions
diff --git a/src/mapi/glapi/gen/ARB_compute_shader.xml b/src/mapi/glapi/gen/ARB_compute_shader.xml index 78d352f1f37..c2ec842efe1 100644 --- a/src/mapi/glapi/gen/ARB_compute_shader.xml +++ b/src/mapi/glapi/gen/ARB_compute_shader.xml @@ -26,13 +26,13 @@ <enum name="DISPATCH_INDIRECT_BUFFER_BINDING" value="0x90EF"/> <enum name="COMPUTE_SHADER_BIT" value="0x00000020"/> - <function name="DispatchCompute"> + <function name="DispatchCompute" es2="3.1"> <param name="num_groups_x" type="GLuint"/> <param name="num_groups_y" type="GLuint"/> <param name="num_groups_z" type="GLuint"/> </function> - <function name="DispatchComputeIndirect"> + <function name="DispatchComputeIndirect" es2="3.1"> <param name="indirect" type="GLintptr"/> </function> </category> diff --git a/src/mapi/glapi/gen/ARB_draw_indirect.xml b/src/mapi/glapi/gen/ARB_draw_indirect.xml index 2001eb00b59..3b29d6b8674 100644 --- a/src/mapi/glapi/gen/ARB_draw_indirect.xml +++ b/src/mapi/glapi/gen/ARB_draw_indirect.xml @@ -8,12 +8,12 @@ <enum name="DRAW_INDIRECT_BUFFER" value="0x8F3F"/> <enum name="DRAW_INDIRECT_BUFFER_BINDING" value="0x8F43"/> - <function name="DrawArraysIndirect" exec="dynamic"> + <function name="DrawArraysIndirect" exec="dynamic" es2="3.1"> <param name="mode" type="GLenum"/> <param name="indirect" type="const GLvoid *"/> </function> - <function name="DrawElementsIndirect" exec="dynamic"> + <function name="DrawElementsIndirect" exec="dynamic" es2="3.1"> <param name="mode" type="GLenum"/> <param name="type" type="GLenum"/> <param name="indirect" type="const GLvoid *"/> diff --git a/src/mapi/glapi/gen/ARB_program_interface_query.xml b/src/mapi/glapi/gen/ARB_program_interface_query.xml index 5b6d5cc59bd..c3162f5ed16 100644 --- a/src/mapi/glapi/gen/ARB_program_interface_query.xml +++ b/src/mapi/glapi/gen/ARB_program_interface_query.xml @@ -56,21 +56,21 @@ <enum name="NUM_COMPATIBLE_SUBROUTINES" value="0x8E4A"/> <enum name="COMPATIBLE_SUBROUTINES" value="0x8E4B"/> - <function name="GetProgramInterfaceiv"> + <function name="GetProgramInterfaceiv" es2="3.1"> <param name="program" type="GLuint"/> <param name="programInterface" type="GLenum"/> <param name="pname" type="GLenum"/> <param name="params" type="GLint *" output="true"/> </function> - <function name="GetProgramResourceIndex"> + <function name="GetProgramResourceIndex" es2="3.1"> <param name="program" type="GLuint"/> <param name="programInterface" type="GLenum"/> <param name="name" type="const GLchar *"/> <return type="GLuint"/> </function> - <function name="GetProgramResourceName"> + <function name="GetProgramResourceName" es2="3.1"> <param name="program" type="GLuint"/> <param name="programInterface" type="GLenum"/> <param name="index" type="GLuint"/> @@ -79,7 +79,7 @@ <param name="name" type="GLchar *" output="true"/> </function> - <function name="GetProgramResourceiv"> + <function name="GetProgramResourceiv" es2="3.1"> <param name="program" type="GLuint"/> <param name="programInterface" type="GLenum"/> <param name="index" type="GLuint"/> @@ -90,7 +90,7 @@ <param name="params" type="GLint *" output="true"/> </function> - <function name="GetProgramResourceLocation"> + <function name="GetProgramResourceLocation" es2="3.1"> <param name="program" type="GLuint"/> <param name="programInterface" type="GLenum"/> <param name="name" type="const GLchar *"/> diff --git a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml index c20ee4b50ff..c9f481d8b6b 100644 --- a/src/mapi/glapi/gen/ARB_separate_shader_objects.xml +++ b/src/mapi/glapi/gen/ARB_separate_shader_objects.xml @@ -15,33 +15,33 @@ <enum name="ALL_SHADER_BITS" value="0xFFFFFFFF"/> <enum name="PROGRAM_SEPARABLE" value="0x8258"/> - <function name="UseProgramStages"> + <function name="UseProgramStages" es2="3.1"> <param name="pipeline" type="GLuint" /> <param name="stages" type="GLbitfield" /> <param name="program" type="GLuint" /> </function> - <function name="ActiveShaderProgram"> + <function name="ActiveShaderProgram" es2="3.1"> <param name="pipeline" type="GLuint" /> <param name="program" type="GLuint" /> </function> - <function name="CreateShaderProgramv"> + <function name="CreateShaderProgramv" es2="3.1"> <param name="type" type="GLenum" /> <param name="count" type="GLsizei" /> <param name="strings" type="const GLchar * const *" /> <return type="GLuint"/> </function> - <function name="BindProgramPipeline"> + <function name="BindProgramPipeline" es2="3.1"> <param name="pipeline" type="GLuint" /> </function> - <function name="DeleteProgramPipelines"> + <function name="DeleteProgramPipelines" es2="3.1"> <param name="n" type="GLsizei" /> <param name="pipelines" type="const GLuint *" /> </function> - <function name="GenProgramPipelines"> + <function name="GenProgramPipelines" es2="3.1"> <param name="n" type="GLsizei" /> <param name="pipelines" type="GLuint *" /> </function> - <function name="IsProgramPipeline"> + <function name="IsProgramPipeline" es2="3.1"> <param name="pipeline" type="GLuint" /> <return type="GLboolean"/> </function> @@ -54,30 +54,30 @@ <param name="value" type="GLint"/> </function> --> - <function name="GetProgramPipelineiv"> + <function name="GetProgramPipelineiv" es2="3.1"> <param name="pipeline" type="GLuint" /> <param name="pname" type="GLenum" /> <param name="params" type="GLint *" /> </function> - <function name="ProgramUniform1i"> + <function name="ProgramUniform1i" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLint" /> </function> - <function name="ProgramUniform2i"> + <function name="ProgramUniform2i" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLint" /> <param name="y" type="GLint" /> </function> - <function name="ProgramUniform3i"> + <function name="ProgramUniform3i" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLint" /> <param name="y" type="GLint" /> <param name="z" type="GLint" /> </function> - <function name="ProgramUniform4i"> + <function name="ProgramUniform4i" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLint" /> @@ -85,25 +85,25 @@ <param name="z" type="GLint" /> <param name="w" type="GLint" /> </function> - <function name="ProgramUniform1ui"> + <function name="ProgramUniform1ui" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLuint" /> </function> - <function name="ProgramUniform2ui"> + <function name="ProgramUniform2ui" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLuint" /> <param name="y" type="GLuint" /> </function> - <function name="ProgramUniform3ui"> + <function name="ProgramUniform3ui" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLuint" /> <param name="y" type="GLuint" /> <param name="z" type="GLuint" /> </function> - <function name="ProgramUniform4ui"> + <function name="ProgramUniform4ui" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLuint" /> @@ -111,25 +111,25 @@ <param name="z" type="GLuint" /> <param name="w" type="GLuint" /> </function> - <function name="ProgramUniform1f"> + <function name="ProgramUniform1f" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLfloat" /> </function> - <function name="ProgramUniform2f"> + <function name="ProgramUniform2f" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLfloat" /> <param name="y" type="GLfloat" /> </function> - <function name="ProgramUniform3f"> + <function name="ProgramUniform3f" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLfloat" /> <param name="y" type="GLfloat" /> <param name="z" type="GLfloat" /> </function> - <function name="ProgramUniform4f"> + <function name="ProgramUniform4f" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="x" type="GLfloat" /> @@ -137,145 +137,145 @@ <param name="z" type="GLfloat" /> <param name="w" type="GLfloat" /> </function> - <function name="ProgramUniform1iv"> + <function name="ProgramUniform1iv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLint *" /> </function> - <function name="ProgramUniform2iv"> + <function name="ProgramUniform2iv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLint *" /> </function> - <function name="ProgramUniform3iv"> + <function name="ProgramUniform3iv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLint *" /> </function> - <function name="ProgramUniform4iv"> + <function name="ProgramUniform4iv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLint *" /> </function> - <function name="ProgramUniform1uiv"> + <function name="ProgramUniform1uiv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLuint *" /> </function> - <function name="ProgramUniform2uiv"> + <function name="ProgramUniform2uiv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLuint *" /> </function> - <function name="ProgramUniform3uiv"> + <function name="ProgramUniform3uiv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLuint *" /> </function> - <function name="ProgramUniform4uiv"> + <function name="ProgramUniform4uiv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLuint *" /> </function> - <function name="ProgramUniform1fv"> + <function name="ProgramUniform1fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniform2fv"> + <function name="ProgramUniform2fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniform3fv"> + <function name="ProgramUniform3fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniform4fv"> + <function name="ProgramUniform4fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix2fv"> + <function name="ProgramUniformMatrix2fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix3fv"> + <function name="ProgramUniformMatrix3fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix4fv"> + <function name="ProgramUniformMatrix4fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix2x3fv"> + <function name="ProgramUniformMatrix2x3fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix3x2fv"> + <function name="ProgramUniformMatrix3x2fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix2x4fv"> + <function name="ProgramUniformMatrix2x4fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix4x2fv"> + <function name="ProgramUniformMatrix4x2fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix3x4fv"> + <function name="ProgramUniformMatrix3x4fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ProgramUniformMatrix4x3fv"> + <function name="ProgramUniformMatrix4x3fv" es2="3.1"> <param name="program" type="GLuint" /> <param name="location" type="GLint" /> <param name="count" type="GLsizei" /> <param name="transpose" type="GLboolean" /> <param name="value" type="const GLfloat *" /> </function> - <function name="ValidateProgramPipeline"> + <function name="ValidateProgramPipeline" es2="3.1"> <param name="pipeline" type="GLuint" /> </function> - <function name="GetProgramPipelineInfoLog"> + <function name="GetProgramPipelineInfoLog" es2="3.1"> <param name="pipeline" type="GLuint" /> <param name="bufSize" type="GLsizei" /> <param name="length" type="GLsizei *" /> diff --git a/src/mapi/glapi/gen/ARB_shader_image_load_store.xml b/src/mapi/glapi/gen/ARB_shader_image_load_store.xml index c6a97bf1878..178e930f1d5 100644 --- a/src/mapi/glapi/gen/ARB_shader_image_load_store.xml +++ b/src/mapi/glapi/gen/ARB_shader_image_load_store.xml @@ -70,7 +70,7 @@ <enum name="MAX_FRAGMENT_IMAGE_UNIFORMS" value="0x90CE"/> <enum name="MAX_COMBINED_IMAGE_UNIFORMS" value="0x90CF"/> -<function name="BindImageTexture"> +<function name="BindImageTexture" es2="3.1"> <param name="unit" type="GLuint"/> <param name="texture" type="GLuint"/> <param name="level" type="GLint"/> @@ -80,7 +80,7 @@ <param name="format" type="GLenum"/> </function> -<function name="MemoryBarrier"> +<function name="MemoryBarrier" es2="3.1"> <param name="barriers" type="GLbitfield"/> </function> diff --git a/src/mapi/glapi/gen/ARB_texture_multisample.xml b/src/mapi/glapi/gen/ARB_texture_multisample.xml index d7cf2a30aa2..595e1c7eae6 100644 --- a/src/mapi/glapi/gen/ARB_texture_multisample.xml +++ b/src/mapi/glapi/gen/ARB_texture_multisample.xml @@ -53,13 +53,13 @@ <param name="fixedsamplelocations" type="GLboolean"/> </function> - <function name="GetMultisamplefv"> + <function name="GetMultisamplefv" es2="3.1"> <param name="pname" type="GLenum"/> <param name="index" type="GLuint"/> <param name="val" type="GLfloat *"/> </function> - <function name="SampleMaski"> + <function name="SampleMaski" es2="3.1"> <param name="index" type="GLuint"/> <param name="mask" type="GLbitfield"/> </function> diff --git a/src/mapi/glapi/gen/ARB_texture_storage_multisample.xml b/src/mapi/glapi/gen/ARB_texture_storage_multisample.xml index 0d39fa235da..6ed8f1a01d8 100644 --- a/src/mapi/glapi/gen/ARB_texture_storage_multisample.xml +++ b/src/mapi/glapi/gen/ARB_texture_storage_multisample.xml @@ -7,7 +7,7 @@ <category name="GL_ARB_texture_storage_multisample" number="141"> - <function name="TexStorage2DMultisample"> + <function name="TexStorage2DMultisample" es2="3.1"> <param name="target" type="GLenum"/> <param name="samples" type="GLsizei"/> <param name="internalformat" type="GLenum"/> diff --git a/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml b/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml index 0f000639f1f..ba9ca57bb54 100644 --- a/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml +++ b/src/mapi/glapi/gen/ARB_vertex_attrib_binding.xml @@ -7,14 +7,14 @@ <category name="GL_ARB_vertex_attrib_binding" number="125"> - <function name="BindVertexBuffer"> + <function name="BindVertexBuffer" es2="3.1"> <param name="bindingindex" type="GLuint"/> <param name="buffer" type="GLuint"/> <param name="offset" type="GLintptr"/> <param name="stride" type="GLsizei"/> </function> - <function name="VertexAttribFormat"> + <function name="VertexAttribFormat" es2="3.1"> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -22,7 +22,7 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexAttribIFormat"> + <function name="VertexAttribIFormat" es2="3.1"> <param name="attribindex" type="GLuint"/> <param name="size" type="GLint"/> <param name="type" type="GLenum"/> @@ -36,12 +36,12 @@ <param name="relativeoffset" type="GLuint"/> </function> - <function name="VertexAttribBinding"> + <function name="VertexAttribBinding" es2="3.1"> <param name="attribindex" type="GLuint"/> <param name="bindingindex" type="GLuint"/> </function> - <function name="VertexBindingDivisor"> + <function name="VertexBindingDivisor" es2="3.1"> <param name="attribindex" type="GLuint"/> <param name="divisor" type="GLuint"/> </function> diff --git a/src/mapi/glapi/gen/GL3x.xml b/src/mapi/glapi/gen/GL3x.xml index 348d5221fb5..7919d657774 100644 --- a/src/mapi/glapi/gen/GL3x.xml +++ b/src/mapi/glapi/gen/GL3x.xml @@ -166,7 +166,7 @@ <param name="a" type="GLboolean"/> </function> - <function name="GetBooleani_v"> + <function name="GetBooleani_v" es2="3.1"> <param name="value" type="GLenum"/> <param name="index" type="GLuint"/> <param name="data" type="GLboolean *"/> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 3090b9f7e02..bd8db62033e 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -2824,7 +2824,7 @@ <glx sop="137"/> </function> - <function name="GetTexLevelParameterfv"> + <function name="GetTexLevelParameterfv" es2="3.1"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="pname" type="GLenum"/> @@ -2832,7 +2832,7 @@ <glx sop="138"/> </function> - <function name="GetTexLevelParameteriv"> + <function name="GetTexLevelParameteriv" es2="3.1"> <param name="target" type="GLenum"/> <param name="level" type="GLint"/> <param name="pname" type="GLenum"/> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index c6f3c395733..ab66f884673 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -72,6 +72,7 @@ extern const struct function gl_core_functions_possible[]; extern const struct function gles11_functions_possible[]; extern const struct function gles2_functions_possible[]; extern const struct function gles3_functions_possible[]; +extern const struct function gles31_functions_possible[]; class DispatchSanity_test : public ::testing::Test { public: @@ -201,6 +202,15 @@ TEST_F(DispatchSanity_test, GLES3) validate_nops(&ctx, nop_table); } +TEST_F(DispatchSanity_test, GLES31) +{ + SetUpCtx(API_OPENGLES2, 31); + validate_functions(&ctx, gles2_functions_possible, nop_table); + validate_functions(&ctx, gles3_functions_possible, nop_table); + validate_functions(&ctx, gles31_functions_possible, nop_table); + validate_nops(&ctx, nop_table); +} + const struct function gl_core_functions_possible[] = { { "glCullFace", 10, -1 }, { "glFrontFace", 10, -1 }, @@ -1611,3 +1621,88 @@ const struct function gles3_functions_possible[] = { { NULL, 0, -1 } }; + +const struct function gles31_functions_possible[] = { + { "glDispatchCompute", 31, -1 }, + { "glDispatchComputeIndirect", 31, -1 }, + { "glDrawArraysIndirect", 31, -1 }, + { "glDrawElementsIndirect", 31, -1 }, + + // FINISHME: These two functions have not been implemented yet. They come + // FINISHME: from the ARB_framebuffer_no_attachments extension. + // { "glFramebufferParameteri", 31, -1 }, + // { "glGetFramebufferParameteriv", 31, -1 }, + + { "glGetProgramInterfaceiv", 31, -1 }, + { "glGetProgramResourceIndex", 31, -1 }, + { "glGetProgramResourceName", 31, -1 }, + { "glGetProgramResourceiv", 31, -1 }, + { "glGetProgramResourceLocation", 31, -1 }, + + // We check for the aliased EXT versions in GLES 2 + // { "glUseProgramStages", 31, -1 }, + // { "glActiveShaderProgram", 31, -1 }, + // { "glCreateShaderProgramv", 31, -1 }, + // { "glBindProgramPipeline", 31, -1 }, + // { "glDeleteProgramPipelines", 31, -1 }, + // { "glGenProgramPipelines", 31, -1 }, + // { "glIsProgramPipeline", 31, -1 }, + // { "glGetProgramPipelineiv", 31, -1 }, + // { "glProgramUniform1i", 31, -1 }, + // { "glProgramUniform2i", 31, -1 }, + // { "glProgramUniform3i", 31, -1 }, + // { "glProgramUniform4i", 31, -1 }, + // { "glProgramUniform1f", 31, -1 }, + // { "glProgramUniform2f", 31, -1 }, + // { "glProgramUniform3f", 31, -1 }, + // { "glProgramUniform4f", 31, -1 }, + // { "glProgramUniform1iv", 31, -1 }, + // { "glProgramUniform2iv", 31, -1 }, + // { "glProgramUniform3iv", 31, -1 }, + // { "glProgramUniform4iv", 31, -1 }, + // { "glProgramUniform1fv", 31, -1 }, + // { "glProgramUniform2fv", 31, -1 }, + // { "glProgramUniform3fv", 31, -1 }, + // { "glProgramUniform4fv", 31, -1 }, + // { "glProgramUniformMatrix2fv", 31, -1 }, + // { "glProgramUniformMatrix3fv", 31, -1 }, + // { "glProgramUniformMatrix4fv", 31, -1 }, + // { "glProgramUniformMatrix2x3fv", 31, -1 }, + // { "glProgramUniformMatrix3x2fv", 31, -1 }, + // { "glProgramUniformMatrix2x4fv", 31, -1 }, + // { "glProgramUniformMatrix4x2fv", 31, -1 }, + // { "glProgramUniformMatrix3x4fv", 31, -1 }, + // { "glProgramUniformMatrix4x3fv", 31, -1 }, + // { "glValidateProgramPipeline", 31, -1 }, + // { "glGetProgramPipelineInfoLog", 31, -1 }, + + // We check for the aliased EXT versions in GLES 3 + // { "glProgramUniform1ui", 31, -1 }, + // { "glProgramUniform2ui", 31, -1 }, + // { "glProgramUniform3ui", 31, -1 }, + // { "glProgramUniform4ui", 31, -1 }, + // { "glProgramUniform1uiv", 31, -1 }, + // { "glProgramUniform2uiv", 31, -1 }, + // { "glProgramUniform3uiv", 31, -1 }, + // { "glProgramUniform4uiv", 31, -1 }, + + { "glBindImageTexture", 31, -1 }, + { "glGetBooleani_v", 31, -1 }, + { "glMemoryBarrier", 31, -1 }, + + // FINISHME: This function has not been implemented yet. + // { "glMemoryBarrierByRegion", 31, -1 }, + + { "glTexStorage2DMultisample", 31, -1 }, + { "glGetMultisamplefv", 31, -1 }, + { "glSampleMaski", 31, -1 }, + { "glGetTexLevelParameteriv", 31, -1 }, + { "glGetTexLevelParameterfv", 31, -1 }, + { "glBindVertexBuffer", 31, -1 }, + { "glVertexAttribFormat", 31, -1 }, + { "glVertexAttribIFormat", 31, -1 }, + { "glVertexAttribBinding", 31, -1 }, + { "glVertexBindingDivisor", 31, -1 }, + + { NULL, 0, -1 }, + }; diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 3ea775c0e4a..72b8206ec23 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -1817,9 +1817,12 @@ vbo_initialize_exec_dispatch(const struct gl_context *ctx, SET_DrawElementsInstancedBaseVertexBaseInstance(exec, vbo_exec_DrawElementsInstancedBaseVertexBaseInstance); } - if (ctx->API == API_OPENGL_CORE) { + if (ctx->API == API_OPENGL_CORE || _mesa_is_gles31(ctx)) { SET_DrawArraysIndirect(exec, vbo_exec_DrawArraysIndirect); SET_DrawElementsIndirect(exec, vbo_exec_DrawElementsIndirect); + } + + if (ctx->API == API_OPENGL_CORE) { SET_MultiDrawArraysIndirect(exec, vbo_exec_MultiDrawArraysIndirect); SET_MultiDrawElementsIndirect(exec, vbo_exec_MultiDrawElementsIndirect); } |