1#!amber 2 3# Copyright 2019 Google LLC 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17 18# A test for a bug found by GraphicsFuzz. 19 20# Short description: A fragment shader with modf of gl color 21 22# The test passes because the shader writes the color red. 23 24SHADER vertex variant_vertex_shader PASSTHROUGH 25 26# variant_fragment_shader is derived from the following GLSL: 27# #version 310 es 28# precision highp float; 29# 30# precision highp int; 31# 32# layout(location = 0) out vec4 _GLF_color; 33# 34# void main() 35# { 36# modf(vec4(1.0, 0.0, 0.0, 1.0), _GLF_color); 37# } 38SHADER fragment variant_fragment_shader SPIRV-ASM TARGET_ENV spv1.0 39; SPIR-V 40; Version: 1.0 41; Generator: Khronos Glslang Reference Front End; 7 42; Bound: 14 43; Schema: 0 44 OpCapability Shader 45 %1 = OpExtInstImport "GLSL.std.450" 46 OpMemoryModel Logical GLSL450 47 OpEntryPoint Fragment %4 "main" %12 48 OpExecutionMode %4 OriginUpperLeft 49 OpSource ESSL 310 50 OpName %4 "main" 51 OpName %12 "_GLF_color" 52 OpDecorate %12 Location 0 53 %2 = OpTypeVoid 54 %3 = OpTypeFunction %2 55 %6 = OpTypeFloat 32 56 %7 = OpTypeVector %6 4 57 %8 = OpConstant %6 1 58 %9 = OpConstant %6 0 59 %10 = OpConstantComposite %7 %8 %9 %9 %8 60 %11 = OpTypePointer Output %7 61 %12 = OpVariable %11 Output 62 %4 = OpFunction %2 None %3 63 %5 = OpLabel 64 %13 = OpExtInst %7 %1 Modf %10 %12 65 OpReturn 66 OpFunctionEnd 67END 68 69# uniforms for variant 70 71 72BUFFER variant_framebuffer FORMAT B8G8R8A8_UNORM 73 74PIPELINE graphics variant_pipeline 75 ATTACH variant_vertex_shader 76 ATTACH variant_fragment_shader 77 FRAMEBUFFER_SIZE 256 256 78 BIND BUFFER variant_framebuffer AS color LOCATION 0 79END 80CLEAR_COLOR variant_pipeline 0 0 0 255 81 82CLEAR variant_pipeline 83RUN variant_pipeline DRAW_RECT POS 0 0 SIZE 256 256 84 85EXPECT variant_framebuffer IDX 0 0 SIZE 256 256 EQ_RGBA 255 0 0 255 86