xref: /aosp_15_r20/external/angle/src/tests/gl_tests/IncompatibleTextureTest.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2024 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker // These tests assert that textures incompatible with samplers do not cause any runtime errors.
7*8975f5c5SAndroid Build Coastguard Worker 
8*8975f5c5SAndroid Build Coastguard Worker #include "test_utils/ANGLETest.h"
9*8975f5c5SAndroid Build Coastguard Worker #include "test_utils/gl_raii.h"
10*8975f5c5SAndroid Build Coastguard Worker 
11*8975f5c5SAndroid Build Coastguard Worker using namespace angle;
12*8975f5c5SAndroid Build Coastguard Worker 
13*8975f5c5SAndroid Build Coastguard Worker namespace
14*8975f5c5SAndroid Build Coastguard Worker {
15*8975f5c5SAndroid Build Coastguard Worker 
16*8975f5c5SAndroid Build Coastguard Worker enum class SamplerType
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker     Float,
19*8975f5c5SAndroid Build Coastguard Worker     SignedInteger,
20*8975f5c5SAndroid Build Coastguard Worker     UnsignedInteger,
21*8975f5c5SAndroid Build Coastguard Worker     Shadow,
22*8975f5c5SAndroid Build Coastguard Worker };
23*8975f5c5SAndroid Build Coastguard Worker 
24*8975f5c5SAndroid Build Coastguard Worker enum class TextureType
25*8975f5c5SAndroid Build Coastguard Worker {
26*8975f5c5SAndroid Build Coastguard Worker     UnsignedNormalized,
27*8975f5c5SAndroid Build Coastguard Worker     SignedNormalized,
28*8975f5c5SAndroid Build Coastguard Worker     Float,
29*8975f5c5SAndroid Build Coastguard Worker     UnsignedInteger,
30*8975f5c5SAndroid Build Coastguard Worker     SignedInteger,
31*8975f5c5SAndroid Build Coastguard Worker     Depth,
32*8975f5c5SAndroid Build Coastguard Worker     DepthStencilDepthMode,
33*8975f5c5SAndroid Build Coastguard Worker     DepthStencilStencilMode,
34*8975f5c5SAndroid Build Coastguard Worker     Stencil,
35*8975f5c5SAndroid Build Coastguard Worker };
36*8975f5c5SAndroid Build Coastguard Worker 
37*8975f5c5SAndroid Build Coastguard Worker enum class TextureCompareMode
38*8975f5c5SAndroid Build Coastguard Worker {
39*8975f5c5SAndroid Build Coastguard Worker     None,
40*8975f5c5SAndroid Build Coastguard Worker     Ref,
41*8975f5c5SAndroid Build Coastguard Worker };
42*8975f5c5SAndroid Build Coastguard Worker 
43*8975f5c5SAndroid Build Coastguard Worker // Variations corresponding to enums above.
44*8975f5c5SAndroid Build Coastguard Worker using IncompatibleTextureVariationsTestParams =
45*8975f5c5SAndroid Build Coastguard Worker     std::tuple<angle::PlatformParameters, SamplerType, TextureType, TextureCompareMode>;
46*8975f5c5SAndroid Build Coastguard Worker 
operator <<(std::ostream & out,SamplerType samplerType)47*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &out, SamplerType samplerType)
48*8975f5c5SAndroid Build Coastguard Worker {
49*8975f5c5SAndroid Build Coastguard Worker     switch (samplerType)
50*8975f5c5SAndroid Build Coastguard Worker     {
51*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::Float:
52*8975f5c5SAndroid Build Coastguard Worker             out << "Float";
53*8975f5c5SAndroid Build Coastguard Worker             break;
54*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::SignedInteger:
55*8975f5c5SAndroid Build Coastguard Worker             out << "SignedInteger";
56*8975f5c5SAndroid Build Coastguard Worker             break;
57*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::UnsignedInteger:
58*8975f5c5SAndroid Build Coastguard Worker             out << "UnsignedInteger";
59*8975f5c5SAndroid Build Coastguard Worker             break;
60*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::Shadow:
61*8975f5c5SAndroid Build Coastguard Worker             out << "Shadow";
62*8975f5c5SAndroid Build Coastguard Worker             break;
63*8975f5c5SAndroid Build Coastguard Worker     }
64*8975f5c5SAndroid Build Coastguard Worker 
65*8975f5c5SAndroid Build Coastguard Worker     return out;
66*8975f5c5SAndroid Build Coastguard Worker }
67*8975f5c5SAndroid Build Coastguard Worker 
operator <<(std::ostream & out,TextureType textureType)68*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &out, TextureType textureType)
69*8975f5c5SAndroid Build Coastguard Worker {
70*8975f5c5SAndroid Build Coastguard Worker     switch (textureType)
71*8975f5c5SAndroid Build Coastguard Worker     {
72*8975f5c5SAndroid Build Coastguard Worker         case TextureType::UnsignedNormalized:
73*8975f5c5SAndroid Build Coastguard Worker             out << "UnsignedNormalized";
74*8975f5c5SAndroid Build Coastguard Worker             break;
75*8975f5c5SAndroid Build Coastguard Worker         case TextureType::SignedNormalized:
76*8975f5c5SAndroid Build Coastguard Worker             out << "SignedNormalized";
77*8975f5c5SAndroid Build Coastguard Worker             break;
78*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Float:
79*8975f5c5SAndroid Build Coastguard Worker             out << "Float";
80*8975f5c5SAndroid Build Coastguard Worker             break;
81*8975f5c5SAndroid Build Coastguard Worker         case TextureType::UnsignedInteger:
82*8975f5c5SAndroid Build Coastguard Worker             out << "UnsignedInteger";
83*8975f5c5SAndroid Build Coastguard Worker             break;
84*8975f5c5SAndroid Build Coastguard Worker         case TextureType::SignedInteger:
85*8975f5c5SAndroid Build Coastguard Worker             out << "SignedInteger";
86*8975f5c5SAndroid Build Coastguard Worker             break;
87*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Depth:
88*8975f5c5SAndroid Build Coastguard Worker             out << "Depth";
89*8975f5c5SAndroid Build Coastguard Worker             break;
90*8975f5c5SAndroid Build Coastguard Worker         case TextureType::DepthStencilDepthMode:
91*8975f5c5SAndroid Build Coastguard Worker             out << "DepthStencilDepthMode";
92*8975f5c5SAndroid Build Coastguard Worker             break;
93*8975f5c5SAndroid Build Coastguard Worker         case TextureType::DepthStencilStencilMode:
94*8975f5c5SAndroid Build Coastguard Worker             out << "DepthStencilStencilMode";
95*8975f5c5SAndroid Build Coastguard Worker             break;
96*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Stencil:
97*8975f5c5SAndroid Build Coastguard Worker             out << "Stencil";
98*8975f5c5SAndroid Build Coastguard Worker             break;
99*8975f5c5SAndroid Build Coastguard Worker     }
100*8975f5c5SAndroid Build Coastguard Worker 
101*8975f5c5SAndroid Build Coastguard Worker     return out;
102*8975f5c5SAndroid Build Coastguard Worker }
103*8975f5c5SAndroid Build Coastguard Worker 
operator <<(std::ostream & out,TextureCompareMode textureCompareMode)104*8975f5c5SAndroid Build Coastguard Worker std::ostream &operator<<(std::ostream &out, TextureCompareMode textureCompareMode)
105*8975f5c5SAndroid Build Coastguard Worker {
106*8975f5c5SAndroid Build Coastguard Worker     switch (textureCompareMode)
107*8975f5c5SAndroid Build Coastguard Worker     {
108*8975f5c5SAndroid Build Coastguard Worker         case TextureCompareMode::None:
109*8975f5c5SAndroid Build Coastguard Worker             out << "None";
110*8975f5c5SAndroid Build Coastguard Worker             break;
111*8975f5c5SAndroid Build Coastguard Worker         case TextureCompareMode::Ref:
112*8975f5c5SAndroid Build Coastguard Worker             out << "Ref";
113*8975f5c5SAndroid Build Coastguard Worker             break;
114*8975f5c5SAndroid Build Coastguard Worker     }
115*8975f5c5SAndroid Build Coastguard Worker 
116*8975f5c5SAndroid Build Coastguard Worker     return out;
117*8975f5c5SAndroid Build Coastguard Worker }
118*8975f5c5SAndroid Build Coastguard Worker 
ParseIncompatibleTextureTestParams(const IncompatibleTextureVariationsTestParams & params,SamplerType * samplerTypeOut,TextureType * textureTypeOut,TextureCompareMode * textureCompareModeOut)119*8975f5c5SAndroid Build Coastguard Worker void ParseIncompatibleTextureTestParams(const IncompatibleTextureVariationsTestParams &params,
120*8975f5c5SAndroid Build Coastguard Worker                                         SamplerType *samplerTypeOut,
121*8975f5c5SAndroid Build Coastguard Worker                                         TextureType *textureTypeOut,
122*8975f5c5SAndroid Build Coastguard Worker                                         TextureCompareMode *textureCompareModeOut)
123*8975f5c5SAndroid Build Coastguard Worker {
124*8975f5c5SAndroid Build Coastguard Worker     *samplerTypeOut        = std::get<1>(params);
125*8975f5c5SAndroid Build Coastguard Worker     *textureTypeOut        = std::get<2>(params);
126*8975f5c5SAndroid Build Coastguard Worker     *textureCompareModeOut = std::get<3>(params);
127*8975f5c5SAndroid Build Coastguard Worker }
128*8975f5c5SAndroid Build Coastguard Worker 
IncompatibleTextureVariationsTestPrint(const::testing::TestParamInfo<IncompatibleTextureVariationsTestParams> & paramsInfo)129*8975f5c5SAndroid Build Coastguard Worker std::string IncompatibleTextureVariationsTestPrint(
130*8975f5c5SAndroid Build Coastguard Worker     const ::testing::TestParamInfo<IncompatibleTextureVariationsTestParams> &paramsInfo)
131*8975f5c5SAndroid Build Coastguard Worker {
132*8975f5c5SAndroid Build Coastguard Worker     const IncompatibleTextureVariationsTestParams &params = paramsInfo.param;
133*8975f5c5SAndroid Build Coastguard Worker     std::ostringstream out;
134*8975f5c5SAndroid Build Coastguard Worker 
135*8975f5c5SAndroid Build Coastguard Worker     out << std::get<0>(params);
136*8975f5c5SAndroid Build Coastguard Worker 
137*8975f5c5SAndroid Build Coastguard Worker     SamplerType samplerType;
138*8975f5c5SAndroid Build Coastguard Worker     TextureType textureType;
139*8975f5c5SAndroid Build Coastguard Worker     TextureCompareMode textureCompareMode;
140*8975f5c5SAndroid Build Coastguard Worker     ParseIncompatibleTextureTestParams(params, &samplerType, &textureType, &textureCompareMode);
141*8975f5c5SAndroid Build Coastguard Worker 
142*8975f5c5SAndroid Build Coastguard Worker     out << "__" << "SamplerType" << samplerType << "_" << "TextureType" << textureType << "_"
143*8975f5c5SAndroid Build Coastguard Worker         << "TextureCompareMode" << textureCompareMode;
144*8975f5c5SAndroid Build Coastguard Worker     return out.str();
145*8975f5c5SAndroid Build Coastguard Worker }
146*8975f5c5SAndroid Build Coastguard Worker 
147*8975f5c5SAndroid Build Coastguard Worker class IncompatibleTextureTest : public ANGLETest<IncompatibleTextureVariationsTestParams>
148*8975f5c5SAndroid Build Coastguard Worker {};
149*8975f5c5SAndroid Build Coastguard Worker 
150*8975f5c5SAndroid Build Coastguard Worker // Test that no errors are generated
TEST_P(IncompatibleTextureTest,Test)151*8975f5c5SAndroid Build Coastguard Worker TEST_P(IncompatibleTextureTest, Test)
152*8975f5c5SAndroid Build Coastguard Worker {
153*8975f5c5SAndroid Build Coastguard Worker     SamplerType samplerType;
154*8975f5c5SAndroid Build Coastguard Worker     TextureType textureType;
155*8975f5c5SAndroid Build Coastguard Worker     TextureCompareMode textureCompareMode;
156*8975f5c5SAndroid Build Coastguard Worker     ParseIncompatibleTextureTestParams(GetParam(), &samplerType, &textureType, &textureCompareMode);
157*8975f5c5SAndroid Build Coastguard Worker 
158*8975f5c5SAndroid Build Coastguard Worker     std::stringstream fragmentSource;
159*8975f5c5SAndroid Build Coastguard Worker     fragmentSource << "#version 300 es\n" << "out mediump vec4 my_FragColor;\n";
160*8975f5c5SAndroid Build Coastguard Worker     switch (samplerType)
161*8975f5c5SAndroid Build Coastguard Worker     {
162*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::Float:
163*8975f5c5SAndroid Build Coastguard Worker             fragmentSource << "uniform mediump sampler2D tex;\n";
164*8975f5c5SAndroid Build Coastguard Worker             break;
165*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::SignedInteger:
166*8975f5c5SAndroid Build Coastguard Worker             fragmentSource << "uniform mediump isampler2D tex;\n";
167*8975f5c5SAndroid Build Coastguard Worker             break;
168*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::UnsignedInteger:
169*8975f5c5SAndroid Build Coastguard Worker             fragmentSource << "uniform mediump usampler2D tex;\n";
170*8975f5c5SAndroid Build Coastguard Worker             break;
171*8975f5c5SAndroid Build Coastguard Worker         case SamplerType::Shadow:
172*8975f5c5SAndroid Build Coastguard Worker             fragmentSource << "uniform mediump sampler2DShadow tex;\n";
173*8975f5c5SAndroid Build Coastguard Worker             break;
174*8975f5c5SAndroid Build Coastguard Worker     }
175*8975f5c5SAndroid Build Coastguard Worker     fragmentSource << "void main()\n" << "{\n";
176*8975f5c5SAndroid Build Coastguard Worker     fragmentSource << "    my_FragColor = vec4(texture(tex, "
177*8975f5c5SAndroid Build Coastguard Worker                    << (samplerType == SamplerType::Shadow ? "vec3" : "vec2") << "(0)));\n";
178*8975f5c5SAndroid Build Coastguard Worker     fragmentSource << "}";
179*8975f5c5SAndroid Build Coastguard Worker     ANGLE_GL_PROGRAM(program, essl3_shaders::vs::Simple(), fragmentSource.str().c_str());
180*8975f5c5SAndroid Build Coastguard Worker     ASSERT_GL_NO_ERROR();
181*8975f5c5SAndroid Build Coastguard Worker 
182*8975f5c5SAndroid Build Coastguard Worker     GLTexture tex;
183*8975f5c5SAndroid Build Coastguard Worker     glBindTexture(GL_TEXTURE_2D, tex);
184*8975f5c5SAndroid Build Coastguard Worker     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
185*8975f5c5SAndroid Build Coastguard Worker     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
186*8975f5c5SAndroid Build Coastguard Worker     switch (textureType)
187*8975f5c5SAndroid Build Coastguard Worker     {
188*8975f5c5SAndroid Build Coastguard Worker         case TextureType::UnsignedNormalized:
189*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
190*8975f5c5SAndroid Build Coastguard Worker             break;
191*8975f5c5SAndroid Build Coastguard Worker         case TextureType::SignedNormalized:
192*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8_SNORM, 1, 1, 0, GL_RGBA, GL_BYTE, nullptr);
193*8975f5c5SAndroid Build Coastguard Worker             break;
194*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Float:
195*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F, 1, 1, 0, GL_RGBA, GL_HALF_FLOAT, nullptr);
196*8975f5c5SAndroid Build Coastguard Worker             break;
197*8975f5c5SAndroid Build Coastguard Worker         case TextureType::UnsignedInteger:
198*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8UI, 1, 1, 0, GL_RGBA_INTEGER, GL_UNSIGNED_BYTE,
199*8975f5c5SAndroid Build Coastguard Worker                          nullptr);
200*8975f5c5SAndroid Build Coastguard Worker             break;
201*8975f5c5SAndroid Build Coastguard Worker         case TextureType::SignedInteger:
202*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8I, 1, 1, 0, GL_RGBA_INTEGER, GL_BYTE, nullptr);
203*8975f5c5SAndroid Build Coastguard Worker             break;
204*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Depth:
205*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, 1, 1, 0, GL_DEPTH_COMPONENT,
206*8975f5c5SAndroid Build Coastguard Worker                          GL_UNSIGNED_SHORT, nullptr);
207*8975f5c5SAndroid Build Coastguard Worker             break;
208*8975f5c5SAndroid Build Coastguard Worker         case TextureType::DepthStencilDepthMode:
209*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH32F_STENCIL8, 1, 1, 0, GL_DEPTH_STENCIL,
210*8975f5c5SAndroid Build Coastguard Worker                          GL_FLOAT_32_UNSIGNED_INT_24_8_REV, nullptr);
211*8975f5c5SAndroid Build Coastguard Worker             break;
212*8975f5c5SAndroid Build Coastguard Worker         case TextureType::DepthStencilStencilMode:
213*8975f5c5SAndroid Build Coastguard Worker             ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_ANGLE_stencil_texturing"));
214*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH32F_STENCIL8, 1, 1, 0, GL_DEPTH_STENCIL,
215*8975f5c5SAndroid Build Coastguard Worker                          GL_FLOAT_32_UNSIGNED_INT_24_8_REV, nullptr);
216*8975f5c5SAndroid Build Coastguard Worker             glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE_ANGLE, GL_STENCIL_INDEX);
217*8975f5c5SAndroid Build Coastguard Worker             break;
218*8975f5c5SAndroid Build Coastguard Worker         case TextureType::Stencil:
219*8975f5c5SAndroid Build Coastguard Worker             ANGLE_SKIP_TEST_IF(!IsGLExtensionEnabled("GL_OES_texture_stencil8"));
220*8975f5c5SAndroid Build Coastguard Worker             glTexImage2D(GL_TEXTURE_2D, 0, GL_STENCIL_INDEX8, 1, 1, 0, GL_STENCIL_INDEX,
221*8975f5c5SAndroid Build Coastguard Worker                          GL_UNSIGNED_BYTE, nullptr);
222*8975f5c5SAndroid Build Coastguard Worker             break;
223*8975f5c5SAndroid Build Coastguard Worker     }
224*8975f5c5SAndroid Build Coastguard Worker     ASSERT_GL_NO_ERROR();
225*8975f5c5SAndroid Build Coastguard Worker 
226*8975f5c5SAndroid Build Coastguard Worker     switch (textureCompareMode)
227*8975f5c5SAndroid Build Coastguard Worker     {
228*8975f5c5SAndroid Build Coastguard Worker         case TextureCompareMode::None:
229*8975f5c5SAndroid Build Coastguard Worker             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
230*8975f5c5SAndroid Build Coastguard Worker             break;
231*8975f5c5SAndroid Build Coastguard Worker         case TextureCompareMode::Ref:
232*8975f5c5SAndroid Build Coastguard Worker             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
233*8975f5c5SAndroid Build Coastguard Worker             break;
234*8975f5c5SAndroid Build Coastguard Worker     }
235*8975f5c5SAndroid Build Coastguard Worker     ASSERT_GL_NO_ERROR();
236*8975f5c5SAndroid Build Coastguard Worker 
237*8975f5c5SAndroid Build Coastguard Worker     drawQuad(program, essl3_shaders::PositionAttrib(), 0.0f);
238*8975f5c5SAndroid Build Coastguard Worker     EXPECT_GL_NO_ERROR();
239*8975f5c5SAndroid Build Coastguard Worker }
240*8975f5c5SAndroid Build Coastguard Worker 
241*8975f5c5SAndroid Build Coastguard Worker constexpr SamplerType kSamplerTypes[] = {
242*8975f5c5SAndroid Build Coastguard Worker     SamplerType::Float,
243*8975f5c5SAndroid Build Coastguard Worker     SamplerType::SignedInteger,
244*8975f5c5SAndroid Build Coastguard Worker     SamplerType::UnsignedInteger,
245*8975f5c5SAndroid Build Coastguard Worker     SamplerType::Shadow,
246*8975f5c5SAndroid Build Coastguard Worker };
247*8975f5c5SAndroid Build Coastguard Worker constexpr TextureType kTextureTypes[] = {
248*8975f5c5SAndroid Build Coastguard Worker     TextureType::UnsignedNormalized,    TextureType::SignedNormalized,        TextureType::Float,
249*8975f5c5SAndroid Build Coastguard Worker     TextureType::UnsignedInteger,       TextureType::SignedInteger,           TextureType::Depth,
250*8975f5c5SAndroid Build Coastguard Worker     TextureType::DepthStencilDepthMode, TextureType::DepthStencilStencilMode, TextureType::Stencil,
251*8975f5c5SAndroid Build Coastguard Worker };
252*8975f5c5SAndroid Build Coastguard Worker constexpr TextureCompareMode kTextureCompareModes[] = {
253*8975f5c5SAndroid Build Coastguard Worker     TextureCompareMode::None,
254*8975f5c5SAndroid Build Coastguard Worker     TextureCompareMode::Ref,
255*8975f5c5SAndroid Build Coastguard Worker };
256*8975f5c5SAndroid Build Coastguard Worker 
257*8975f5c5SAndroid Build Coastguard Worker GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(IncompatibleTextureTest);
258*8975f5c5SAndroid Build Coastguard Worker ANGLE_INSTANTIATE_TEST_COMBINE_3(IncompatibleTextureTest,
259*8975f5c5SAndroid Build Coastguard Worker                                  IncompatibleTextureVariationsTestPrint,
260*8975f5c5SAndroid Build Coastguard Worker                                  testing::ValuesIn(kSamplerTypes),
261*8975f5c5SAndroid Build Coastguard Worker                                  testing::ValuesIn(kTextureTypes),
262*8975f5c5SAndroid Build Coastguard Worker                                  testing::ValuesIn(kTextureCompareModes),
263*8975f5c5SAndroid Build Coastguard Worker                                  ANGLE_ALL_TEST_PLATFORMS_ES3);
264*8975f5c5SAndroid Build Coastguard Worker 
265*8975f5c5SAndroid Build Coastguard Worker }  // anonymous namespace
266