60 lines
2.6 KiB
Python
60 lines
2.6 KiB
Python
# Copyright 2018 The Shaderc Authors. All rights reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import expect
|
|
from glslc_test_framework import inside_glslc_testsuite
|
|
from placeholder import FileShader
|
|
|
|
# A GLSL shader with a separate sampler and texture2D object
|
|
GLSL_SHADER_SEPARATE_IMAGE_SAMPLER = """#version 460
|
|
layout (location=0) in vec2 in_UV;
|
|
layout (location=0) out vec4 out_Color;
|
|
layout (set=0,binding=0) uniform sampler u_Sampler;
|
|
layout (set=0,binding=0) uniform texture2D u_Tex;
|
|
void main() {
|
|
out_Color = texture(sampler2D(u_Tex, u_Sampler), in_UV);
|
|
}"""
|
|
|
|
|
|
# An HLSL fragment shader with the usual Texture2D and SamplerState pair
|
|
HLSL_SHADER_SEPARATE_IMAGE_SAMPLER = """
|
|
Texture2D u_Tex;
|
|
SamplerState u_Sampler;
|
|
float4 Frag(float2 uv) : COLOR0 {
|
|
return u_Tex.Sample(u_Sampler, uv);
|
|
}"""
|
|
|
|
|
|
@inside_glslc_testsuite('OptionFAutoCombinedImageSampler')
|
|
class FAutoCombinedImageSamplerCheckGLSL(expect.ValidAssemblyFileWithSubstr):
|
|
"""Tests that the compiler combines GLSL sampler and texture2D objects."""
|
|
shader = FileShader(GLSL_SHADER_SEPARATE_IMAGE_SAMPLER, '.frag')
|
|
glslc_args = ['-S', '-fauto-combined-image-sampler', shader]
|
|
expected_assembly_substr = """%10 = OpTypeImage %float 2D 0 0 0 1 Unknown
|
|
%11 = OpTypeSampledImage %10
|
|
%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11
|
|
%u_Tex = OpVariable %_ptr_UniformConstant_11 UniformConstant"""
|
|
|
|
@inside_glslc_testsuite('OptionFAutoCombinedImageSampler')
|
|
class FAutoCombinedImageSamplerCheckHLSL(expect.ValidAssemblyFileWithSubstr):
|
|
"""Tests that the HLSL compiler combines HLSL Texture2D and SamplerState objects into SPIRV SampledImage."""
|
|
|
|
shader = FileShader(HLSL_SHADER_SEPARATE_IMAGE_SAMPLER, '.hlsl')
|
|
glslc_args = ['-S', '-fshader-stage=frag', '-fentry-point=Frag', '-fauto-combined-image-sampler', shader]
|
|
expected_assembly_substr = """%14 = OpTypeImage %float 2D 0 0 0 1 Unknown
|
|
%15 = OpTypeSampledImage %14
|
|
%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15
|
|
%u_Tex = OpVariable %_ptr_UniformConstant_15 UniformConstant"""
|
|
|