#!amber

# Copyright 2020 Google LLC
#
# 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.


# A test for a bug found by the GraphicsFuzz project.

# Short description: Equivalent shaders, one with an additional access chain

# The test passes because both shaders render the same image.

SHADER vertex texgen_vert PASSTHROUGH

SHADER fragment texgen_frag GLSL
#version 430
precision highp float;

layout(location = 0) out vec4 _GLF_color;

void main()
{
 _GLF_color = vec4(
 floor(gl_FragCoord.x) * (1.0 / 255.0),
 (int(gl_FragCoord.x) ^ int(gl_FragCoord.y)) * (1.0 / 255.0),
 floor(gl_FragCoord.y) * (1.0 / 255.0),
 1.0);
}
END
BUFFER default_texture FORMAT B8G8R8A8_UNORM

PIPELINE graphics texgen_pipeline
  ATTACH texgen_vert
  ATTACH texgen_frag
  FRAMEBUFFER_SIZE 256 256
  BIND BUFFER default_texture AS color LOCATION 0
END

CLEAR_COLOR texgen_pipeline 0 0 0 255
CLEAR texgen_pipeline
RUN texgen_pipeline DRAW_RECT POS 0 0  SIZE 256 256

SHADER vertex reference_vertex_shader PASSTHROUGH

SHADER fragment reference_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 254
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %115 %130
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 320
               OpName %4 "main"
               OpName %115 "gl_FragCoord"
               OpName %130 "_GLF_color"
               OpName %134 "tex"
               OpDecorate %115 BuiltIn FragCoord
               OpDecorate %130 Location 0
               OpDecorate %134 RelaxedPrecision
               OpDecorate %134 DescriptorSet 0
               OpDecorate %134 Binding 0
               OpDecorate %135 RelaxedPrecision
               OpDecorate %137 RelaxedPrecision
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeFloat 32
          %7 = OpTypeVector %6 2
         %19 = OpConstant %6 0.318309873
         %22 = OpConstant %6 0.00100000005
         %23 = OpTypeBool
         %27 = OpConstant %6 0
         %32 = OpTypeInt 32 0
         %36 = OpConstant %32 0
         %55 = OpConstant %6 0.970000029
         %56 = OpConstant %6 0.189999998
         %73 = OpConstant %6 0.5
         %81 = OpConstant %6 1
         %98 = OpConstantComposite %7 %73 %73
        %113 = OpTypeVector %6 4
        %114 = OpTypePointer Input %113
        %115 = OpVariable %114 Input
        %118 = OpConstant %6 0.00390625
        %124 = OpConstant %6 256
        %129 = OpTypePointer Output %113
        %130 = OpVariable %129 Output
        %131 = OpTypeImage %6 2D 0 0 0 1 Unknown
        %132 = OpTypeSampledImage %131
        %133 = OpTypePointer UniformConstant %132
        %134 = OpVariable %133 UniformConstant
        %253 = OpConstantComposite %7 %118 %118
          %4 = OpFunction %2 None %3
          %5 = OpLabel
        %116 = OpLoad %113 %115
        %117 = OpVectorShuffle %7 %116 %116 0 1
        %119 = OpVectorTimesScalar %7 %117 %118
        %160 = OpFSub %7 %119 %98
        %162 = OpExtInst %6 %1 Length %160
               OpSelectionMerge %235 None
               OpSwitch %36 %176
        %176 = OpLabel
        %179 = OpFOrdLessThan %23 %162 %22
               OpSelectionMerge %181 None
               OpBranchConditional %179 %180 %181
        %180 = OpLabel
               OpBranch %235
        %181 = OpLabel
        %183 = OpExtInst %7 %1 FAbs %160
        %185 = OpCompositeExtract %6 %183 1
        %187 = OpCompositeExtract %6 %183 0
        %188 = OpFOrdGreaterThan %23 %185 %187
               OpSelectionMerge %201 None
               OpBranchConditional %188 %189 %195
        %189 = OpLabel
        %194 = OpFDiv %6 %187 %185
               OpBranch %201
        %195 = OpLabel
        %200 = OpFDiv %6 %185 %187
               OpBranch %201
        %201 = OpLabel
        %247 = OpPhi %6 %194 %189 %200 %195
        %203 = OpFMul %6 %56 %247
        %205 = OpFMul %6 %203 %247
        %206 = OpFSub %6 %55 %205
        %208 = OpFMul %6 %206 %247
        %210 = OpFMul %6 %208 %19
        %215 = OpFOrdLessThan %23 %185 %187
               OpSelectionMerge %219 None
               OpBranchConditional %215 %216 %219
        %216 = OpLabel
        %218 = OpFSub %6 %73 %210
               OpBranch %219
        %219 = OpLabel
        %248 = OpPhi %6 %210 %201 %218 %216
        %221 = OpCompositeExtract %6 %160 0
        %222 = OpFOrdLessThan %23 %221 %27
               OpSelectionMerge %226 None
               OpBranchConditional %222 %223 %226
        %223 = OpLabel
        %225 = OpFSub %6 %81 %248
               OpBranch %226
        %226 = OpLabel
        %249 = OpPhi %6 %248 %219 %225 %223
        %228 = OpCompositeExtract %6 %160 1
        %229 = OpFOrdLessThan %23 %228 %27
               OpSelectionMerge %233 None
               OpBranchConditional %229 %230 %233
        %230 = OpLabel
        %232 = OpFNegate %6 %249
               OpBranch %233
        %233 = OpLabel
        %250 = OpPhi %6 %249 %226 %232 %230
               OpBranch %235
        %235 = OpLabel
        %251 = OpPhi %6 %27 %180 %250 %233
        %167 = OpCompositeConstruct %7 %162 %251
        %125 = OpVectorTimesScalar %7 %167 %124
        %126 = OpExtInst %7 %1 Floor %125
        %128 = OpFMul %7 %126 %253
        %135 = OpLoad %132 %134
        %137 = OpImageSampleImplicitLod %113 %135 %128
        %140 = OpCompositeExtract %6 %137 0
        %141 = OpCompositeExtract %6 %137 1
        %142 = OpCompositeExtract %6 %137 2
        %143 = OpCompositeConstruct %113 %140 %141 %142 %81
               OpStore %130 %143
               OpReturn
               OpFunctionEnd
END

# uniforms for reference

# tex
SAMPLER reference_tex


BUFFER reference_framebuffer FORMAT B8G8R8A8_UNORM

PIPELINE graphics reference_pipeline
  ATTACH reference_vertex_shader
  ATTACH reference_fragment_shader
  FRAMEBUFFER_SIZE 256 256
  BIND BUFFER reference_framebuffer AS color LOCATION 0
  BIND BUFFER default_texture AS combined_image_sampler SAMPLER reference_tex DESCRIPTOR_SET 0 BINDING 0
END
CLEAR_COLOR reference_pipeline 0 0 0 255

CLEAR reference_pipeline
RUN reference_pipeline DRAW_RECT POS 0 0 SIZE 256 256


SHADER vertex variant_vertex_shader PASSTHROUGH

SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0
; SPIR-V
; Version: 1.0
; Generator: Khronos Glslang Reference Front End; 10
; Bound: 529
; Schema: 0
               OpCapability Shader
          %1 = OpExtInstImport "GLSL.std.450"
               OpMemoryModel Logical GLSL450
               OpEntryPoint Fragment %4 "main" %115 %130
               OpExecutionMode %4 OriginUpperLeft
               OpSource ESSL 320
               OpName %4 "main"
               OpName %115 "gl_FragCoord"
               OpName %130 "_GLF_color"
               OpName %134 "tex"
               OpDecorate %115 BuiltIn FragCoord
               OpDecorate %130 Location 0
               OpDecorate %134 RelaxedPrecision
               OpDecorate %134 DescriptorSet 0
               OpDecorate %134 Binding 0
               OpDecorate %135 RelaxedPrecision
               OpDecorate %137 RelaxedPrecision
          %2 = OpTypeVoid
          %3 = OpTypeFunction %2
          %6 = OpTypeFloat 32
          %7 = OpTypeVector %6 2
         %19 = OpConstant %6 0.318309873
         %22 = OpConstant %6 0.00100000005
         %23 = OpTypeBool
         %27 = OpConstant %6 0
         %32 = OpTypeInt 32 0
         %36 = OpConstant %32 0
         %55 = OpConstant %6 0.970000029
         %56 = OpConstant %6 0.189999998
         %73 = OpConstant %6 0.5
         %81 = OpConstant %6 1
         %98 = OpConstantComposite %7 %73 %73
        %113 = OpTypeVector %6 4
        %114 = OpTypePointer Input %113
        %115 = OpVariable %114 Input
        %118 = OpConstant %6 0.00390625
        %124 = OpConstant %6 256
        %129 = OpTypePointer Output %113
        %130 = OpVariable %129 Output
        %131 = OpTypeImage %6 2D 0 0 0 1 Unknown
        %132 = OpTypeSampledImage %131
        %133 = OpTypePointer UniformConstant %132
        %134 = OpVariable %133 UniformConstant
        %253 = OpConstantComposite %7 %118 %118
        %379 = OpTypeInt 32 1
        %380 = OpConstant %379 3
        %383 = OpConstant %379 0
        %384 = OpTypePointer Input %6
        %475 = OpConstantFalse %23
        %526 = OpTypePointer Function %23
          %4 = OpFunction %2 None %3
          %5 = OpLabel
        %527 = OpVariable %526 Function %475
        %116 = OpLoad %113 %115
        %117 = OpVectorShuffle %7 %116 %116 0 1
        %119 = OpVectorTimesScalar %7 %117 %118
        %160 = OpFSub %7 %119 %98
        %162 = OpExtInst %6 %1 Length %160
               OpSelectionMerge %235 None
               OpSwitch %36 %176
        %176 = OpLabel
        %179 = OpFOrdLessThan %23 %162 %22
               OpSelectionMerge %181 None
               OpBranchConditional %179 %180 %181
        %180 = OpLabel
               OpBranch %235
        %181 = OpLabel
        %183 = OpExtInst %7 %1 FAbs %160
        %185 = OpCompositeExtract %6 %183 1
        %187 = OpCompositeExtract %6 %183 0
        %188 = OpFOrdGreaterThan %23 %185 %187
               OpSelectionMerge %201 None
               OpBranchConditional %188 %189 %195
        %189 = OpLabel
        %194 = OpFDiv %6 %187 %185
               OpBranch %201
        %195 = OpLabel
        %200 = OpFDiv %6 %185 %187
               OpBranch %201
        %201 = OpLabel
        %247 = OpPhi %6 %194 %189 %200 %195
        %203 = OpFMul %6 %56 %247
        %205 = OpFMul %6 %203 %247
        %206 = OpFSub %6 %55 %205
        %208 = OpFMul %6 %206 %247
        %210 = OpFMul %6 %208 %19
        %215 = OpFOrdLessThan %23 %185 %187
               OpSelectionMerge %219 None
               OpBranchConditional %215 %216 %219
        %216 = OpLabel
        %218 = OpFSub %6 %73 %210
               OpBranch %219
        %219 = OpLabel
        %248 = OpPhi %6 %210 %201 %218 %216
        %221 = OpCompositeExtract %6 %160 0
        %222 = OpFOrdLessThan %23 %221 %27
               OpSelectionMerge %226 None
               OpBranchConditional %222 %223 %226
        %223 = OpLabel
        %225 = OpFSub %6 %81 %248
               OpBranch %226
        %226 = OpLabel
        %249 = OpPhi %6 %248 %219 %225 %223
        %228 = OpCompositeExtract %6 %160 1
        %229 = OpFOrdLessThan %23 %228 %27
               OpSelectionMerge %233 None
               OpBranchConditional %229 %230 %233
        %230 = OpLabel
        %232 = OpFNegate %6 %249
               OpBranch %233
        %233 = OpLabel
        %250 = OpPhi %6 %249 %226 %232 %230
               OpBranch %235
        %235 = OpLabel
        %251 = OpPhi %6 %27 %180 %250 %233
        %167 = OpCompositeConstruct %7 %162 %251
        %125 = OpVectorTimesScalar %7 %167 %124
        %126 = OpExtInst %7 %1 Floor %125
        %128 = OpFMul %7 %126 %253
        %135 = OpLoad %132 %134
        %137 = OpImageSampleImplicitLod %113 %135 %128
        %140 = OpCompositeExtract %6 %137 0
        %141 = OpCompositeExtract %6 %137 1
        %142 = OpCompositeExtract %6 %137 2
               OpStore %527 %179
        %528 = OpLoad %23 %527
        %381 = OpULessThanEqual %23 %383 %380
        %382 = OpSelect %379 %381 %383 %380
        %385 = OpAccessChain %384 %115 %382
        %143 = OpCompositeConstruct %113 %140 %141 %142 %81
               OpStore %130 %143
               OpReturn
               OpFunctionEnd
END

# uniforms for variant

# tex
SAMPLER variant_tex


BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM

PIPELINE graphics variant_pipeline
  ATTACH variant_vertex_shader
  ATTACH variant_fragment_shader
  FRAMEBUFFER_SIZE 256 256
  BIND BUFFER variant_framebuffer AS color LOCATION 0
  BIND BUFFER default_texture AS combined_image_sampler SAMPLER variant_tex DESCRIPTOR_SET 0 BINDING 0
END
CLEAR_COLOR variant_pipeline 0 0 0 255

CLEAR variant_pipeline
RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256

EXPECT reference_framebuffer EQ_HISTOGRAM_EMD_BUFFER variant_framebuffer TOLERANCE 0.005
