From: Antia Puentes <apuen...@igalia.com>

Adds an option to CMake which can be enabled to generate additional
shader_tests for ARB_gl_spirv by translating shader_tests written for
other specifications to SPIR-V. Specifically, uses the gen_gl_spirv.py
script to translate the shader_tests under the 'tests' directory,
excluding those pertaining to unsupported extensions or listed in the
tests/gl_spirv.exclude file.
---
 CMakeLists.txt                 |  3 +++
 generated_tests/CMakeLists.txt | 31 +++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b416cacb2..435c40ea5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,6 +49,9 @@ option(PIGLIT_BUILD_GLES2_TESTS "Build tests for OpenGL ES2" 
${PIGLIT_BUILD_GLES
 option(PIGLIT_BUILD_GLES3_TESTS "Build tests for OpenGL ES3" 
${PIGLIT_BUILD_GLES_TESTS_DEFAULT})
 option(PIGLIT_BUILD_CL_TESTS "Build tests for OpenCL" OFF)
 
+option(PIGLIT_GENERATE_GL_SPIRV_TESTS
+       "Generate ARB_gl_spirv tests by converting GLSL shader_tests to SPIR-V" 
OFF)
+
 if(PIGLIT_BUILD_GL_TESTS)
        find_package(OpenGL REQUIRED)
 endif()
diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
index adec9b4cb..3242885b9 100644
--- a/generated_tests/CMakeLists.txt
+++ b/generated_tests/CMakeLists.txt
@@ -18,6 +18,14 @@ function(piglit_make_generated_tests file_list 
generator_script)
                VERBATIM)
 endfunction(piglit_make_generated_tests custom_target generator_script)
 
+function(piglit_make_generated_tests_for_gl_spirv file_list generator_script 
source_prefix source_tests)
+       add_custom_command(
+               OUTPUT ${file_list}
+               COMMAND ${PYTHON_EXECUTABLE} 
${CMAKE_CURRENT_SOURCE_DIR}/${generator_script} ${source_tests} 
--prefix=${source_prefix} ${ARGN}
+               DEPENDS ${generator_script} ${source_prefix}/${source_tests}
+               VERBATIM)
+endfunction(piglit_make_generated_tests_for_gl_spirv)
+
 # Generators for OpenGL tests
 piglit_make_generated_tests(
        builtin_packing_tests.list
@@ -202,6 +210,17 @@ piglit_make_generated_tests(
 piglit_make_generated_tests(
        shader_framebuffer_fetch_tests.list
        gen_shader_framebuffer_fetch_tests.py)
+piglit_make_generated_tests_for_gl_spirv(
+       gl_spirv_tests.list
+       gen_gl_spirv_tests.py
+       ${CMAKE_SOURCE_DIR}
+       tests
+       --excludes-from-file=${CMAKE_SOURCE_DIR}/tests/gl_spirv.exclude
+       --success-list-file=gl_spirv_tests.list
+       --mirror=spec/arb_gl_spirv/translated
+       --keep-going
+       --strip-names
+       --jobs=4)
 
 # OpenCL Test generators
 piglit_make_generated_tests(
@@ -285,6 +304,12 @@ add_custom_target(gen-cl-tests
                        cl_vload_tests.list
 )
 
+# Create a custom target for generating ARB_gl_spirv shader_tests
+# This is not added to the default target, instead it is added
+# as a dependency of gen-tests if the generation of the
+# ARB_gl_spirv shader_tests is enabled
+add_custom_target(gen-gl-spirv-tests DEPENDS gl_spirv_tests.list)
+
 # Add a "gen-tests" target that can be used to generate all the
 # tests without doing any other compilation.
 add_custom_target(gen-tests ALL COMMENT "meta-target for other test 
generators")
@@ -299,3 +324,9 @@ endif(${PIGLIT_BUILD_GL_TESTS} OR 
${PIGLIT_BUILD_GLES2_TESTS} OR ${PIGLIT_BUILD_
 if(${PIGLIT_BUILD_CL_TESTS})
        add_dependencies(gen-tests gen-cl-tests)
 endif(${PIGLIT_BUILD_CL_TESTS})
+
+# Add gen-gl-spirv-tests as a dependency of the gen-tests if they are
+# requested.
+if(${PIGLIT_GENERATE_GL_SPIRV_TESTS})
+       add_dependencies(gen-tests gen-gl-spirv-tests)
+endif(${PIGLIT_GENERATE_GL_SPIRV_TESTS})
-- 
2.19.1

_______________________________________________
Piglit mailing list
Piglit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/piglit

Reply via email to