Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/src/tests/compiler_tests/Pack_Unpack_test.cpp
1693 views
1
//
2
// Copyright 2015 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
5
//
6
// Pack_Unpack_test.cpp:
7
// Tests for the emulating pack_unpack functions for GLSL.
8
//
9
10
#include "GLSLANG/ShaderLang.h"
11
#include "angle_gl.h"
12
#include "gtest/gtest.h"
13
#include "tests/test_utils/compiler_test.h"
14
15
using namespace sh;
16
17
namespace
18
{
19
20
class PackUnpackTest : public MatchOutputCodeTest
21
{
22
public:
23
PackUnpackTest() : MatchOutputCodeTest(GL_FRAGMENT_SHADER, 0, SH_GLSL_400_CORE_OUTPUT) {}
24
};
25
26
// Check if PackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
27
TEST_F(PackUnpackTest, PackSnorm2x16Emulation)
28
{
29
const std::string &shaderString =
30
R"(#version 300 es
31
precision mediump float;
32
layout(location = 0) out mediump vec4 fragColor;
33
void main()
34
{
35
vec2 v;
36
uint u = packSnorm2x16(v);
37
fragColor = vec4(u);
38
})";
39
compile(shaderString);
40
ASSERT_TRUE(foundInCode("uint packSnorm2x16_emu(vec2 v)"));
41
}
42
43
// Check if UnpackSnorm2x16 Emulation for GLSL < 4.2 compile correctly.
44
TEST_F(PackUnpackTest, UnpackSnorm2x16Emulation)
45
{
46
const std::string &shaderString =
47
R"(#version 300 es
48
precision mediump float;
49
layout(location = 0) out mediump vec4 fragColor;
50
void main()
51
{
52
uint u;
53
vec2 v = unpackSnorm2x16(u);
54
fragColor = vec4(v, 0.0, 0.0);
55
})";
56
compile(shaderString);
57
ASSERT_TRUE(foundInCode("vec2 unpackSnorm2x16_emu(uint u)"));
58
}
59
60
// Check if PackUnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
61
TEST_F(PackUnpackTest, PackUnorm2x16Emulation)
62
{
63
const std::string &shaderString =
64
R"(#version 300 es
65
precision mediump float;
66
layout(location = 0) out mediump vec4 fragColor;
67
void main()
68
{
69
vec2 v;
70
uint u = packUnorm2x16(v);
71
fragColor = vec4(u);
72
})";
73
compile(shaderString);
74
ASSERT_TRUE(foundInCode("uint packUnorm2x16_emu(vec2 v)"));
75
}
76
77
// Check if UnpackSnorm2x16 Emulation for GLSL < 4.1 compiles correctly.
78
TEST_F(PackUnpackTest, UnpackUnorm2x16Emulation)
79
{
80
const std::string &shaderString =
81
R"(#version 300 es
82
precision mediump float;
83
layout(location = 0) out mediump vec4 fragColor;
84
void main()
85
{
86
uint u;
87
vec2 v = unpackUnorm2x16(u);
88
fragColor = vec4(v, 0.0, 0.0);
89
})";
90
compile(shaderString);
91
ASSERT_TRUE(foundInCode("vec2 unpackUnorm2x16_emu(uint u)"));
92
}
93
94
// Check if PackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
95
TEST_F(PackUnpackTest, PackHalf2x16Emulation)
96
{
97
const std::string &shaderString =
98
R"(#version 300 es
99
precision mediump float;
100
layout(location = 0) out mediump vec4 fragColor;
101
void main()
102
{
103
vec2 v;
104
uint u = packHalf2x16(v);
105
fragColor = vec4(u);
106
})";
107
compile(shaderString);
108
ASSERT_TRUE(foundInCode("uint packHalf2x16_emu(vec2 v)"));
109
}
110
111
// Check if UnpackHalf2x16 Emulation for GLSL < 4.2 compiles correctly.
112
TEST_F(PackUnpackTest, UnpackHalf2x16Emulation)
113
{
114
const std::string &shaderString =
115
R"(#version 300 es
116
precision mediump float;
117
layout(location = 0) out mediump vec4 fragColor;
118
void main()
119
{
120
uint u;
121
vec2 v = unpackHalf2x16(u);
122
fragColor = vec4(v, 0.0, 0.0);
123
})";
124
compile(shaderString);
125
ASSERT_TRUE(foundInCode("vec2 unpackHalf2x16_emu(uint u)"));
126
}
127
128
} // namespace
129
130