Path: blob/main/glslc/test/option_fentry_point.py
1560 views
# Copyright 2016 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 FileShader1718MINIMAL_SHADER = "#version 140\nvoid main(){}"19# This one is valid GLSL but not valid HLSL.20GLSL_VERTEX_SHADER = "#version 140\nvoid main(){ gl_Position = vec4(1.0);}"21# This one is valid HLSL but not valid GLSL.22HLSL_VERTEX_SHADER = "float4 EntryPoint() : SV_POSITION { return float4(1.0); }"23HLSL_VERTEX_SHADER_WITH_MAIN = "float4 main() : SV_POSITION { return float4(1.0); }"24HLSL_VERTEX_SHADER_WITH_FOOBAR = "float4 Foobar() : SV_POSITION { return float4(1.0); }"2526# Expected assembly code within certain shaders.27ASSEMBLY_ENTRY_POINT = "OpEntryPoint Vertex %EntryPoint \"EntryPoint\""28ASSEMBLY_MAIN = "OpEntryPoint Vertex %main \"main\""29ASSEMBLY_FOOBAR = "OpEntryPoint Vertex %Foobar \"Foobar\""303132@inside_glslc_testsuite('OptionFEntryPoint')33class TestEntryPointDefaultsToMainForGlsl(expect.ValidAssemblyFileWithSubstr):34"""Tests that entry point name defaults to "main" in a GLSL shader."""3536shader = FileShader(GLSL_VERTEX_SHADER, '.vert')37glslc_args = ['-S', shader]38expected_assembly_substr = ASSEMBLY_MAIN394041@inside_glslc_testsuite('OptionFEntryPoint')42class TestEntryPointDefaultsToMainForHlsl(expect.ValidAssemblyFileWithSubstr):43"""Tests that entry point name defaults to "main" in an HLSL shader."""4445shader = FileShader(HLSL_VERTEX_SHADER_WITH_MAIN, '.vert')46glslc_args = ['-x', 'hlsl', '-S', shader]47expected_assembly_substr = ASSEMBLY_MAIN484950@inside_glslc_testsuite('OptionFEntryPoint')51class TestFEntryPointMainOnGlslShader(expect.ValidAssemblyFileWithSubstr):52"""Tests -fentry-point=main with a GLSL shader."""5354shader = FileShader(GLSL_VERTEX_SHADER, '.vert')55glslc_args = ['-fentry-point=main', '-S', shader]56expected_assembly_substr = ASSEMBLY_MAIN575859@inside_glslc_testsuite('OptionFEntryPoint')60class TestFEntryPointMainOnHlslShaderNotMatchingSource(expect.ValidObjectFileWithWarning):61"""Tests -x hlsl on an HLSL shader with -fentry-point=main62not matching the source."""6364shader = FileShader(HLSL_VERTEX_SHADER, '.vert')65glslc_args = ['-x', 'hlsl', '-fentry-point=main', '-c', shader]66expected_warning = [shader,67': warning: Linking vertex stage: Entry point not found\n'68'1 warning generated.\n']697071@inside_glslc_testsuite('OptionFEntryPoint')72class TestFEntryPointSpecifiedOnHlslShaderInDisassembly(expect.ValidObjectFileWithAssemblySubstr):73"""Tests -x hlsl on an HLSL shader with -fentry-point=EntryPoint74matching source."""7576shader = FileShader(HLSL_VERTEX_SHADER, '.vert', assembly_substr=ASSEMBLY_ENTRY_POINT)77glslc_args = ['-x', 'hlsl', '-fentry-point=EntryPoint', '-c', shader]787980@inside_glslc_testsuite('OptionFEntryPoint')81class TestFEntryPointAffectsSubsequentShaderFiles(expect.ValidObjectFileWithAssemblySubstr):82"""Tests -x hlsl affects several subsequent shader source files."""8384shader1 = FileShader(HLSL_VERTEX_SHADER, '.vert', assembly_substr=ASSEMBLY_ENTRY_POINT)85shader2 = FileShader(HLSL_VERTEX_SHADER, '.vert', assembly_substr=ASSEMBLY_ENTRY_POINT)86glslc_args = ['-x', 'hlsl', '-fentry-point=EntryPoint', '-c', shader1, shader2]878889@inside_glslc_testsuite('OptionFEntryPoint')90class TestFEntryPointOverridesItself(expect.ValidObjectFileWithAssemblySubstr):91"""Tests that a later -fentry-point option overrides an earlier use."""9293shader = FileShader(HLSL_VERTEX_SHADER, '.vert', assembly_substr=ASSEMBLY_ENTRY_POINT)94glslc_args = ['-x', 'hlsl', '-fentry-point=foobar', '-fentry-point=EntryPoint',95'-c', shader]969798@inside_glslc_testsuite('OptionFEntryPoint')99class TestFEntryPointDefaultAndTwoOthers(expect.ValidObjectFileWithAssemblySubstr):100"""Tests three shaders with different entry point names. The first uses "main"101with default entry point processing, and the remaining shaders get their102own -fentry-point argument."""103104shaderMain = FileShader(HLSL_VERTEX_SHADER_WITH_MAIN, '.vert',105assembly_substr=ASSEMBLY_MAIN)106shaderEntryPoint = FileShader(HLSL_VERTEX_SHADER, '.vert',107assembly_substr=ASSEMBLY_ENTRY_POINT)108shaderFoobar = FileShader(HLSL_VERTEX_SHADER_WITH_FOOBAR, '.vert',109assembly_substr=ASSEMBLY_FOOBAR)110glslc_args = ['-x', 'hlsl', '-c', shaderMain,111'-fentry-point=EntryPoint', shaderEntryPoint,112'-fentry-point=Foobar', shaderFoobar]113114115