On Thu, Jan 3, 2019 at 2:38 PM Ian Romanick <i...@freedesktop.org> wrote:
> On 11/28/18 6:55 PM, Marek Olšák wrote: > > From: Marek Olšák <marek.ol...@amd.com> > > > > --- > > tests/opengl.py | 6 + > > tests/spec/CMakeLists.txt | 1 + > > .../CMakeLists.gl.txt | 7 ++ > > .../CMakeLists.gles2.txt | 4 + > > .../CMakeLists.txt | 1 + > > .../spec/khr_parallel_shader_compile/basic.c | 105 ++++++++++++++++++ > > 6 files changed, 124 insertions(+) > > create mode 100644 > tests/spec/khr_parallel_shader_compile/CMakeLists.gl.txt > > create mode 100644 > tests/spec/khr_parallel_shader_compile/CMakeLists.gles2.txt > > create mode 100644 tests/spec/khr_parallel_shader_compile/CMakeLists.txt > > create mode 100644 tests/spec/khr_parallel_shader_compile/basic.c > > > > diff --git a/tests/opengl.py b/tests/opengl.py > > index b2e5cf7fd..06f323378 100644 > > --- a/tests/opengl.py > > +++ b/tests/opengl.py > > @@ -4388,20 +4388,26 @@ with profile.test_list.group_manager( > > with profile.test_list.group_manager( > > PiglitGLTest, grouptools.join('spec', 'oes_draw_texture')) as g: > > g(['oes_draw_texture']) > > > > with profile.test_list.group_manager( > > PiglitGLTest, > > grouptools.join('spec', 'oes_compressed_etc1_rgb8_texture')) as > g: > > g(['oes_compressed_etc1_rgb8_texture-basic'], 'basic') > > g(['oes_compressed_etc1_rgb8_texture-miptree'], 'miptree') > > > > +with profile.test_list.group_manager( > > + PiglitGLTest, > > + grouptools.join('spec', 'khr_parallel_shader_compile')) as g: > > + g(['khr_parallel_shader_compile-basic'], 'basic') > > + g(['khr_parallel_shader_compile-basic_gles2'], 'basic_gles2') > > + > > with profile.test_list.group_manager( > > PiglitGLTest, > > grouptools.join('spec', 'khr_texture_compression_astc')) as g: > > g(['arb_texture_compression-invalid-formats', 'astc'], 'invalid > formats') > > g(['khr_compressed_astc-array_gl'], 'array-gl') > > g(['khr_compressed_astc-array_gles3'], 'array-gles') > > g(['khr_compressed_astc-basic_gl'], 'basic-gl') > > g(['khr_compressed_astc-basic_gles2'], 'basic-gles') > > g(['void-extent-dl-bug'], 'void-extent-dl-bug') > > > > diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt > > index 74edc5f24..093deb77b 100644 > > --- a/tests/spec/CMakeLists.txt > > +++ b/tests/spec/CMakeLists.txt > > @@ -179,10 +179,11 @@ add_subdirectory (arb_texture_barrier) > > add_subdirectory (intel_conservative_rasterization) > > add_subdirectory (arb_post_depth_coverage) > > add_subdirectory (arb_fragment_shader_interlock) > > add_subdirectory (ext_occlusion_query_boolean) > > add_subdirectory (ext_disjoint_timer_query) > > add_subdirectory (intel_blackhole_render) > > add_subdirectory (ext_texture_norm16) > > add_subdirectory (ext_render_snorm) > > add_subdirectory (ext_texture_compression_bptc) > > add_subdirectory (ext_texture_compression_rgtc) > > +add_subdirectory (khr_parallel_shader_compile) > > diff --git a/tests/spec/khr_parallel_shader_compile/CMakeLists.gl.txt > b/tests/spec/khr_parallel_shader_compile/CMakeLists.gl.txt > > new file mode 100644 > > index 000000000..aeb5719a1 > > --- /dev/null > > +++ b/tests/spec/khr_parallel_shader_compile/CMakeLists.gl.txt > > @@ -0,0 +1,7 @@ > > +link_libraries ( > > + piglitutil_${piglit_target_api} > > +) > > + > > +piglit_add_executable(khr_parallel_shader_compile-basic basic.c) > > + > > +# vim: ft=cmake: > > diff --git a/tests/spec/khr_parallel_shader_compile/CMakeLists.gles2.txt > b/tests/spec/khr_parallel_shader_compile/CMakeLists.gles2.txt > > new file mode 100644 > > index 000000000..7b2f68f20 > > --- /dev/null > > +++ b/tests/spec/khr_parallel_shader_compile/CMakeLists.gles2.txt > > @@ -0,0 +1,4 @@ > > +link_libraries(piglitutil_${piglit_target_api}) > > +piglit_add_executable(khr_parallel_shader_compile-basic_gles2 basic.c) > > + > > +# vim: ft=cmake: > > diff --git a/tests/spec/khr_parallel_shader_compile/CMakeLists.txt > b/tests/spec/khr_parallel_shader_compile/CMakeLists.txt > > new file mode 100644 > > index 000000000..144a306f4 > > --- /dev/null > > +++ b/tests/spec/khr_parallel_shader_compile/CMakeLists.txt > > @@ -0,0 +1 @@ > > +piglit_include_target_api() > > diff --git a/tests/spec/khr_parallel_shader_compile/basic.c > b/tests/spec/khr_parallel_shader_compile/basic.c > > new file mode 100644 > > index 000000000..a1258fb91 > > --- /dev/null > > +++ b/tests/spec/khr_parallel_shader_compile/basic.c > > @@ -0,0 +1,105 @@ > > +/* > > + * Copyright © 2018 Advanced Micro Devices, Inc. > > + * > > + * Permission is hereby granted, free of charge, to any person > obtaining a > > + * copy of this software and associated documentation files (the > "Software"), > > + * to deal in the Software without restriction, including without > limitation > > + * the rights to use, copy, modify, merge, publish, distribute, > sublicense, > > + * and/or sell copies of the Software, and to permit persons to whom the > > + * Software is furnished to do so, subject to the following conditions: > > + * > > + * The above copyright notice and this permission notice (including the > next > > + * paragraph) shall be included in all copies or substantial portions > of the > > + * Software. > > + * > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > EXPRESS OR > > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > MERCHANTABILITY, > > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT > SHALL > > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR > OTHER > > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, > ARISING > > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER > DEALINGS > > + * IN THE SOFTWARE. > > + */ > > + > > +#include "piglit-util-gl.h" > > + > > +PIGLIT_GL_TEST_CONFIG_BEGIN > > + > > + config.supports_gl_compat_version = 10; > > + config.supports_gl_es_version = 30; > > + > > + config.window_visual = PIGLIT_GL_VISUAL_RGB | > PIGLIT_GL_VISUAL_DOUBLE; > > + config.khr_no_error_support = PIGLIT_NO_ERRORS; > > + > > +PIGLIT_GL_TEST_CONFIG_END > > + > > +static void > > +create_program(float f) > > +{ > > + char vscode[4096], fscode[4096]; > > + > > + snprintf(vscode, sizeof(vscode), > > + "void main() { gl_Position = vec4(%f); }", f); > > + snprintf(fscode, sizeof(fscode), > > + "void main() { gl_FragColor = vec4(%f); }", f); > > + > > + piglit_build_simple_program(vscode, fscode); > > +} > > + > > +void > > +piglit_init(int argc, char **argv) > > +{ > > + piglit_require_extension("GL_KHR_parallel_shader_compile"); > > + > > + /* Test the query. */ > > + GLint threads; > > + glGetIntegerv(GL_MAX_SHADER_COMPILER_THREADS_KHR, &threads); > > + if (!piglit_check_gl_error(GL_NO_ERROR)) > > + piglit_report_result(PIGLIT_FAIL); > > + > > + /* Test the initial compilation completion status. */ > > + GLint status; > > + GLuint shader = glCreateShader(GL_VERTEX_SHADER); > > + glGetShaderiv(shader, GL_COMPLETION_STATUS_KHR, &status); > > + if (!piglit_check_gl_error(GL_NO_ERROR)) > > + piglit_report_result(PIGLIT_FAIL); > > + if (status != GL_TRUE) { > > + puts("glGetShaderiv incorrect initial completion status"); > > + piglit_report_result(PIGLIT_FAIL); > > + } > > + > > + GLuint program = glCreateProgram(); > > + glGetProgramiv(program, GL_COMPLETION_STATUS_KHR, &status); > > + if (!piglit_check_gl_error(GL_NO_ERROR)) > > + piglit_report_result(PIGLIT_FAIL); > > + if (status != GL_TRUE) { > > + puts("glGetProgramiv incorrect initial completion status"); > > + piglit_report_result(PIGLIT_FAIL); > > + } > > + > > + /* Change the thread count to test that the driver doesn't crash. > > + * Drivers are not required to obey this. > > + */ > > + unsigned counter = 0; > > + for (unsigned i = 0; i < 40; i++) > > It looks like the rest of the file uses tabs for indentation, but this > for-loop uses spaces. > > > + create_program(counter++); > > + glMaxShaderCompilerThreadsKHR(1); > > Based on my understanding of the spec, the driver may not change the > number of threads after glCompileShader or glLinkShader is called, but > the query should return... the most recently set value? It's not > I don't see any such language in the spec. > entirely clear to me whether the query is supposed to just echo back the > value that was set or return the actual. Most other things in OpenGL > just echo back the value that was set, so that would be my guess. > Assuming that's correct, we should check that here and after the other > calls to gLMaxShaderCompilerThreadsKHR. > I think the query is supposed to echo back the value from the last call. Marek
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit