Path: blob/main/glslc/test/option_target_spv.py
1560 views
# Copyright 2019 The Shaderc Authors. All rights reserved.1#2# Licensed under the Apache License, Version 2.0 (the "License");3# you may not use this file except in compliance with the License.4# You may obtain a copy of the License at5#6# http://www.apache.org/licenses/LICENSE-2.07#8# Unless required by applicable law or agreed to in writing, software9# distributed under the License is distributed on an "AS IS" BASIS,10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.11# See the License for the specific language governing permissions and12# limitations under the License.1314import expect15from glslc_test_framework import inside_glslc_testsuite16from placeholder import FileShader171819def vulkan_vertex_shader():20return """#version 310 es21void main() { int t = gl_VertexIndex; }"""222324def vulkan_compute_subgroup_shader():25"""Returns a compute shader that requires Vulkan 1.1 and SPIR-V 1.3"""26return """#version 45027#extension GL_KHR_shader_subgroup_basic : enable28void main() { subgroupBarrier(); }"""293031@inside_glslc_testsuite('OptionTargetSpv')32class TestDefaultTargetSpvWithVulkanShader(expect.ValidObjectFile):33"""Tests that compiling a Vulkan-specific shader with a default34target environment succeeds"""35shader = FileShader(vulkan_vertex_shader(), '.vert')36glslc_args = ['-c', shader]373839@inside_glslc_testsuite('OptionTargetSpv')40class TestDefaultTargetSpvWithShaderRequiringSpv1p3Fails(expect.ErrorMessageSubstr):41"""Tests that compiling a shader requiring SPIR-V 1.3 with default SPIR-V42target should fail.43"""44shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')45glslc_args = ['-c', shader]46expected_error_substr = ["error: 'subgroup op' : requires SPIR-V 1.3\n"]474849@inside_glslc_testsuite('OptionTargetSpv')50class TestTargetSpv1p2WithShaderRequiringSpv1p3Fails(expect.ErrorMessageSubstr):51"""Tests that compiling a shader requiring SPIR-V 1.3 but targeting 1.252should fail.53"""54shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')55glslc_args = ['--target-spv=spv1.2', '-c', shader]56expected_error_substr = ["error: 'subgroup op' : requires SPIR-V 1.3\n"]575859@inside_glslc_testsuite('OptionTargetSpv')60class TestTargetSpv1p3(expect.ValidObjectFile1_3):61"""Tests that compiling to spv1.3 succeeds and generates SPIR-V 1.3 binary."""62shader = FileShader(vulkan_compute_subgroup_shader(), '.comp')63glslc_args = ['--target-spv=spv1.3', '-c', shader]646566@inside_glslc_testsuite('OptionTargetSpv')67class TestTargetSpv1p4(expect.ValidObjectFile1_4):68"""Tests that compiling to spv1.4 succeeds and generates SPIR-V 1.4 binary."""69shader = FileShader(vulkan_vertex_shader(), '.vert')70glslc_args = ['--target-spv=spv1.4', '-c', shader]717273@inside_glslc_testsuite('OptionTargetSpv')74class TestTargetSpv1p5(expect.ValidObjectFile1_5):75"""Tests that compiling to spv1.5 succeeds and generates SPIR-V 1.5 binary."""76shader = FileShader(vulkan_vertex_shader(), '.vert')77glslc_args = ['--target-spv=spv1.5', '-c', shader]787980@inside_glslc_testsuite('OptionTargetSpv')81class TestTargetSpv1p5(expect.ValidObjectFile1_6):82"""Tests that compiling to spv1.6 succeeds and generates SPIR-V 1.6 binary."""83shader = FileShader(vulkan_vertex_shader(), '.vert')84glslc_args = ['--target-spv=spv1.6', '-c', shader]858687### Option parsing error cases8889@inside_glslc_testsuite('OptionTargetSpv')90class TestTargetSpvNoArg(expect.ErrorMessage):91"""Tests the error message of assigning empty string to --target-spv"""92shader = FileShader(vulkan_vertex_shader(), '.vert')93glslc_args = ['--target-spv=', shader]94expected_error = ["glslc: error: invalid value ",95"'' in '--target-spv='\n"]969798@inside_glslc_testsuite('OptionTargetSpv')99class TestTargetSpvNoEqNoArg(expect.ErrorMessage):100"""Tests the error message of using --target-spv without equal sign and101arguments"""102shader = FileShader(vulkan_vertex_shader(), '.vert')103glslc_args = ['--target-spv', shader]104expected_error = ["glslc: error: unsupported option: ",105"'--target-spv'\n"]106107108@inside_glslc_testsuite('OptionTargetSpv')109class TestTargetSpvNoEqWithArg(expect.ErrorMessage):110"""Tests the error message of using --target-spv without equal sign but111arguments"""112shader = FileShader(vulkan_vertex_shader(), '.vert')113glslc_args = ['--target-spv', 'spv1.3', shader]114expected_error = ["glslc: error: unsupported option: ",115"'--target-spv'\n"]116117118@inside_glslc_testsuite('OptionTargetSpv')119class TestTargetSpvEqWrongArg(expect.ErrorMessage):120"""Tests the error message of using --target-spv with wrong argument"""121shader = FileShader(vulkan_vertex_shader(), '.vert')122glslc_args = ['--target-spv=wrong_arg', shader]123expected_error = ["glslc: error: invalid value ",124"'wrong_arg' in '--target-spv=wrong_arg'\n"]125126127