Add tests for GL_NV_shader_noperspective_interpolation

This commit is contained in:
Ben Clayton 2018-03-16 13:15:48 +00:00
parent 017a567be1
commit f648083365
4 changed files with 78 additions and 1 deletions

View File

@ -0,0 +1,38 @@
nvShaderNoperspectiveInterpolation.frag
ERROR: 0:5: 'noperspective' : Reserved word.
ERROR: 0:5: 'noperspective' : not supported for this version or the enabled extensions
ERROR: 2 compilation errors. No code generated.
Shader version: 300
Requested GL_NV_shader_noperspective_interpolation
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp mediump 4-component vector of float)
0:14 'fragColor' ( out mediump 4-component vector of float)
0:14 'color' ( noperspective in mediump 4-component vector of float)
0:? Linker Objects
0:? 'bad' ( noperspective in mediump 4-component vector of float)
0:? 'color' ( noperspective in mediump 4-component vector of float)
0:? 'fragColor' ( out mediump 4-component vector of float)
Linked fragment stage:
Shader version: 300
Requested GL_NV_shader_noperspective_interpolation
ERROR: node is still EOpNull!
0:13 Function Definition: main( ( global void)
0:13 Function Parameters:
0:14 Sequence
0:14 move second child to first child ( temp mediump 4-component vector of float)
0:14 'fragColor' ( out mediump 4-component vector of float)
0:14 'color' ( noperspective in mediump 4-component vector of float)
0:? Linker Objects
0:? 'bad' ( noperspective in mediump 4-component vector of float)
0:? 'color' ( noperspective in mediump 4-component vector of float)
0:? 'fragColor' ( out mediump 4-component vector of float)

View File

@ -0,0 +1,15 @@
#version 300 es
precision mediump float;
noperspective in vec4 bad; // ERROR
#extension GL_NV_shader_noperspective_interpolation : enable
noperspective in vec4 color;
out vec4 fragColor;
void main() {
fragColor = color;
}

View File

@ -41,6 +41,10 @@ namespace {
using CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>;
#ifdef NV_EXTENSIONS
using CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
#endif
TEST_P(CompileToAstTest, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
@ -48,6 +52,16 @@ TEST_P(CompileToAstTest, FromFile)
Target::AST);
}
#ifdef NV_EXTENSIONS
// Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled).
TEST_P(CompileToAstTestNV, FromFile)
{
loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0,
Target::AST);
}
#endif
// clang-format off
INSTANTIATE_TEST_CASE_P(
Glsl, CompileToAstTest,
@ -214,6 +228,16 @@ INSTANTIATE_TEST_CASE_P(
})),
FileNameAsCustomTestSuffix
);
#ifdef NV_EXTENSIONS
INSTANTIATE_TEST_CASE_P(
Glsl, CompileToAstTestNV,
::testing::ValuesIn(std::vector<std::string>({
"nvShaderNoperspectiveInterpolation.frag",
})),
FileNameAsCustomTestSuffix
);
#endif
// clang-format on
} // anonymous namespace

View File

@ -171,7 +171,7 @@ TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
#endif
#ifdef NV_EXTENSIONS
// Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled).
// Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled).
// Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestNV, FromFile)
{