Hash :
7caa80e7
Author :
Date :
2017-11-14T15:03:14
Edit tests to reference temporary variables The shader translator is intended to prune unreferenced variables in the future. To maintain test coverage when this is done, most tests that used to have unreferenced GLSL locals and globals are edited to use built-ins or reference the necessary variables instead. BUG=angleproject:2166 TEST=angle_unittests, angle_end2end_tests Change-Id: I3964e7a80d52fc04a95f57e73da6095e433095e8 Reviewed-on: https://chromium-review.googlesource.com/768740 Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
//
// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Pack_Unpack_test.cpp:
// Tests for the emulating pack_unpack functions for GLSL.
//
#include "angle_gl.h"
#include "gtest/gtest.h"
#include "GLSLANG/ShaderLang.h"
#include "tests/test_utils/compiler_test.h"
using namespace sh;
namespace
{
class PackUnpackTest : public MatchOutputCodeTest
{
public:
PackUnpackTest() : MatchOutputCodeTest(GL_FRAGMENT_SHADER, 0, SH_GLSL_400_CORE_OUTPUT) {}
};
// Check if PackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
TEST_F(PackUnpackTest, PackSnorm2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
vec2 v;
uint u = packSnorm2x16(v);
fragColor = vec4(u);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("uint packSnorm2x16_emu(vec2 v)"));
}
// Check if UnpackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
TEST_F(PackUnpackTest, UnpackSnorm2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
uint u;
vec2 v = unpackSnorm2x16(u);
fragColor = vec4(v, 0.0, 0.0);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("vec2 unpackSnorm2x16_emu(uint u)"));
}
// Check if PackUnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
TEST_F(PackUnpackTest, PackUnorm2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
vec2 v;
uint u = packUnorm2x16(v);
fragColor = vec4(u);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("uint packUnorm2x16_emu(vec2 v)"));
}
// Check if UnpackSnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
TEST_F(PackUnpackTest, UnpackUnorm2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
uint u;
vec2 v = unpackUnorm2x16(u);
fragColor = vec4(v, 0.0, 0.0);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("vec2 unpackUnorm2x16_emu(uint u)"));
}
// Check if PackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
TEST_F(PackUnpackTest, PackHalf2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
vec2 v;
uint u = packHalf2x16(v);
fragColor = vec4(u);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("uint packHalf2x16_emu(vec2 v)"));
}
// Check if UnpackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
TEST_F(PackUnpackTest, UnpackHalf2x16Emulation)
{
const std::string &shaderString =
R"(#version 300 es
precision mediump float;
layout(location = 0) out mediump vec4 fragColor;
void main()
{
uint u;
vec2 v = unpackHalf2x16(u);
fragColor = vec4(v, 0.0, 0.0);
})";
compile(shaderString);
ASSERT_TRUE(foundInCode("vec2 unpackHalf2x16_emu(uint u)"));
}
} // namespace