blob: 34b6b9ec328cbeca48adeaf88926a9ab24b673c7 [file] [log] [blame]
Jamie Madillfa05f602015-05-07 13:47:11 -04001//
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
Corentin Wallezd3970de2015-05-14 11:07:48 -04007#include "test_utils/ANGLETest.h"
Jamie Madillfa05f602015-05-07 13:47:11 -04008
Geoff Langd701ea12014-01-10 15:53:35 -05009#include "media/pixel.inl"
Geoff Lang066230a2013-10-30 12:59:30 -040010
Jamie Madillfa05f602015-05-07 13:47:11 -040011using namespace angle;
Austin Kinross18b931d2014-09-29 12:58:31 -070012
Yuly Novikovfea6e952016-06-23 16:29:20 -040013class DXT1CompressedTextureTest : public ANGLETest
Geoff Lang066230a2013-10-30 12:59:30 -040014{
Jamie Madillfa05f602015-05-07 13:47:11 -040015 protected:
Yuly Novikovfea6e952016-06-23 16:29:20 -040016 DXT1CompressedTextureTest()
Geoff Lang066230a2013-10-30 12:59:30 -040017 {
18 setWindowWidth(512);
19 setWindowHeight(512);
20 setConfigRedBits(8);
21 setConfigGreenBits(8);
22 setConfigBlueBits(8);
23 setConfigAlphaBits(8);
24 }
25
26 virtual void SetUp()
27 {
28 ANGLETest::SetUp();
29
30 const std::string vsSource = SHADER_SOURCE
31 (
32 precision highp float;
33 attribute vec4 position;
34 varying vec2 texcoord;
35
36 void main()
37 {
38 gl_Position = position;
39 texcoord = (position.xy * 0.5) + 0.5;
40 texcoord.y = 1.0 - texcoord.y;
41 }
42 );
43
44 const std::string textureFSSource = SHADER_SOURCE
45 (
46 precision highp float;
47 uniform sampler2D tex;
48 varying vec2 texcoord;
49
50 void main()
51 {
52 gl_FragColor = texture2D(tex, texcoord);
53 }
54 );
55
Jamie Madill5599c8f2014-08-26 13:16:39 -040056 mTextureProgram = CompileProgram(vsSource, textureFSSource);
Geoff Lang066230a2013-10-30 12:59:30 -040057 if (mTextureProgram == 0)
58 {
59 FAIL() << "shader compilation failed.";
60 }
61
62 mTextureUniformLocation = glGetUniformLocation(mTextureProgram, "tex");
63
64 ASSERT_GL_NO_ERROR();
65 }
66
67 virtual void TearDown()
68 {
69 glDeleteProgram(mTextureProgram);
70
71 ANGLETest::TearDown();
72 }
73
74 GLuint mTextureProgram;
75 GLint mTextureUniformLocation;
76};
77
Yuly Novikovfea6e952016-06-23 16:29:20 -040078TEST_P(DXT1CompressedTextureTest, CompressedTexImage)
Geoff Lang066230a2013-10-30 12:59:30 -040079{
Geoff Langa8091652015-04-27 10:53:55 -040080 if (!extensionEnabled("GL_EXT_texture_compression_dxt1"))
Geoff Lang066230a2013-10-30 12:59:30 -040081 {
Geoff Langa8091652015-04-27 10:53:55 -040082 std::cout << "Test skipped because GL_EXT_texture_compression_dxt1 is not available." << std::endl;
Geoff Lang066230a2013-10-30 12:59:30 -040083 return;
84 }
85
86 GLuint texture;
87 glGenTextures(1, &texture);
88 glBindTexture(GL_TEXTURE_2D, texture);
89 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
90 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
91 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
92 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
93
Geoff Langd701ea12014-01-10 15:53:35 -050094 glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height, 0, pixel_0_size, pixel_0_data);
95 glCompressedTexImage2D(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_1_width, pixel_1_height, 0, pixel_1_size, pixel_1_data);
96 glCompressedTexImage2D(GL_TEXTURE_2D, 2, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_2_width, pixel_2_height, 0, pixel_2_size, pixel_2_data);
97 glCompressedTexImage2D(GL_TEXTURE_2D, 3, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_3_width, pixel_3_height, 0, pixel_3_size, pixel_3_data);
98 glCompressedTexImage2D(GL_TEXTURE_2D, 4, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_4_width, pixel_4_height, 0, pixel_4_size, pixel_4_data);
99 glCompressedTexImage2D(GL_TEXTURE_2D, 5, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_5_width, pixel_5_height, 0, pixel_5_size, pixel_5_data);
100 glCompressedTexImage2D(GL_TEXTURE_2D, 6, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_6_width, pixel_6_height, 0, pixel_6_size, pixel_6_data);
101 glCompressedTexImage2D(GL_TEXTURE_2D, 7, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_7_width, pixel_7_height, 0, pixel_7_size, pixel_7_data);
102 glCompressedTexImage2D(GL_TEXTURE_2D, 8, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_8_width, pixel_8_height, 0, pixel_8_size, pixel_8_data);
103 glCompressedTexImage2D(GL_TEXTURE_2D, 9, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_9_width, pixel_9_height, 0, pixel_9_size, pixel_9_data);
Geoff Lang066230a2013-10-30 12:59:30 -0400104
105 EXPECT_GL_NO_ERROR();
106
107 glUseProgram(mTextureProgram);
108 glUniform1i(mTextureUniformLocation, 0);
109
110 drawQuad(mTextureProgram, "position", 0.5f);
111
112 EXPECT_GL_NO_ERROR();
113
114 glDeleteTextures(1, &texture);
115
116 EXPECT_GL_NO_ERROR();
117}
118
Yuly Novikovfea6e952016-06-23 16:29:20 -0400119TEST_P(DXT1CompressedTextureTest, CompressedTexStorage)
Geoff Lang066230a2013-10-30 12:59:30 -0400120{
Geoff Langa8091652015-04-27 10:53:55 -0400121 if (!extensionEnabled("GL_EXT_texture_compression_dxt1"))
Geoff Lang066230a2013-10-30 12:59:30 -0400122 {
Geoff Langa8091652015-04-27 10:53:55 -0400123 std::cout << "Test skipped due to missing GL_EXT_texture_compression_dxt1" << std::endl;
Geoff Lang066230a2013-10-30 12:59:30 -0400124 return;
125 }
126
Martin Radev1be913c2016-07-11 17:59:16 +0300127 if (getClientMajorVersion() < 3 &&
128 (!extensionEnabled("GL_EXT_texture_storage") || !extensionEnabled("GL_OES_rgb8_rgba8")))
Geoff Lang066230a2013-10-30 12:59:30 -0400129 {
Geoff Langa8091652015-04-27 10:53:55 -0400130 std::cout << "Test skipped due to missing ES3 or GL_EXT_texture_storage or GL_OES_rgb8_rgba8" << std::endl;
Geoff Lang066230a2013-10-30 12:59:30 -0400131 return;
132 }
133
134 GLuint texture;
135 glGenTextures(1, &texture);
136 glBindTexture(GL_TEXTURE_2D, texture);
137 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
138 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
139 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
140 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
141
Martin Radev1be913c2016-07-11 17:59:16 +0300142 if (getClientMajorVersion() < 3)
Geoff Lang066230a2013-10-30 12:59:30 -0400143 {
Geoff Langa836e482014-04-28 10:08:27 -0400144 glTexStorage2DEXT(GL_TEXTURE_2D, pixel_levels, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height);
Geoff Lang066230a2013-10-30 12:59:30 -0400145 }
146 else
147 {
Geoff Langa836e482014-04-28 10:08:27 -0400148 glTexStorage2D(GL_TEXTURE_2D, pixel_levels, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height);
Geoff Lang066230a2013-10-30 12:59:30 -0400149 }
150 EXPECT_GL_NO_ERROR();
151
Geoff Langd701ea12014-01-10 15:53:35 -0500152 glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, pixel_0_width, pixel_0_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_size, pixel_0_data);
Geoff Langa836e482014-04-28 10:08:27 -0400153 glCompressedTexSubImage2D(GL_TEXTURE_2D, 1, 0, 0, pixel_1_width, pixel_1_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_1_size, pixel_1_data);
154 glCompressedTexSubImage2D(GL_TEXTURE_2D, 2, 0, 0, pixel_2_width, pixel_2_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_2_size, pixel_2_data);
155 glCompressedTexSubImage2D(GL_TEXTURE_2D, 3, 0, 0, pixel_3_width, pixel_3_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_3_size, pixel_3_data);
156 glCompressedTexSubImage2D(GL_TEXTURE_2D, 4, 0, 0, pixel_4_width, pixel_4_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_4_size, pixel_4_data);
157 glCompressedTexSubImage2D(GL_TEXTURE_2D, 5, 0, 0, pixel_5_width, pixel_5_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_5_size, pixel_5_data);
158 glCompressedTexSubImage2D(GL_TEXTURE_2D, 6, 0, 0, pixel_6_width, pixel_6_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_6_size, pixel_6_data);
159 glCompressedTexSubImage2D(GL_TEXTURE_2D, 7, 0, 0, pixel_7_width, pixel_7_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_7_size, pixel_7_data);
160 glCompressedTexSubImage2D(GL_TEXTURE_2D, 8, 0, 0, pixel_8_width, pixel_8_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_8_size, pixel_8_data);
161 glCompressedTexSubImage2D(GL_TEXTURE_2D, 9, 0, 0, pixel_9_width, pixel_9_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_9_size, pixel_9_data);
Geoff Lang066230a2013-10-30 12:59:30 -0400162
163 EXPECT_GL_NO_ERROR();
164
165 glUseProgram(mTextureProgram);
166 glUniform1i(mTextureUniformLocation, 0);
167
168 drawQuad(mTextureProgram, "position", 0.5f);
169
170 EXPECT_GL_NO_ERROR();
171
172 glDeleteTextures(1, &texture);
173
174 EXPECT_GL_NO_ERROR();
175}
Jamie Madillc751d1e2014-10-21 17:46:29 -0400176
Yuly Novikovfea6e952016-06-23 16:29:20 -0400177class DXT1CompressedTextureTestES3 : public DXT1CompressedTextureTest { };
Jamie Madillc751d1e2014-10-21 17:46:29 -0400178
Yuly Novikovfea6e952016-06-23 16:29:20 -0400179class DXT1CompressedTextureTestD3D11 : public DXT1CompressedTextureTest { };
Jamie Madillc751d1e2014-10-21 17:46:29 -0400180
Yuly Novikovfea6e952016-06-23 16:29:20 -0400181TEST_P(DXT1CompressedTextureTestES3, PBOCompressedTexImage)
Jamie Madillc751d1e2014-10-21 17:46:29 -0400182{
Yuly Novikovfea6e952016-06-23 16:29:20 -0400183 if (!extensionEnabled("GL_EXT_texture_compression_dxt1"))
184 {
185 std::cout << "Test skipped because GL_EXT_texture_compression_dxt1 is not available."
186 << std::endl;
187 return;
188 }
189
Jamie Madillc751d1e2014-10-21 17:46:29 -0400190 GLuint texture;
191 glGenTextures(1, &texture);
192 glBindTexture(GL_TEXTURE_2D, texture);
193 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
194 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
195 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
196 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
197
198 GLuint buffer;
199 glGenBuffers(1, &buffer);
200 glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);
201 glBufferData(GL_PIXEL_UNPACK_BUFFER, pixel_0_size, NULL, GL_STREAM_DRAW);
202 EXPECT_GL_NO_ERROR();
203
204 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_0_size, pixel_0_data);
205 glCompressedTexImage2D(GL_TEXTURE_2D, 0, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height, 0, pixel_0_size, NULL);
206 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_1_size, pixel_1_data);
207 glCompressedTexImage2D(GL_TEXTURE_2D, 1, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_1_width, pixel_1_height, 0, pixel_1_size, NULL);
208 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_2_size, pixel_2_data);
209 glCompressedTexImage2D(GL_TEXTURE_2D, 2, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_2_width, pixel_2_height, 0, pixel_2_size, NULL);
210 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_3_size, pixel_3_data);
211 glCompressedTexImage2D(GL_TEXTURE_2D, 3, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_3_width, pixel_3_height, 0, pixel_3_size, NULL);
212 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_4_size, pixel_4_data);
213 glCompressedTexImage2D(GL_TEXTURE_2D, 4, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_4_width, pixel_4_height, 0, pixel_4_size, NULL);
214 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_5_size, pixel_5_data);
215 glCompressedTexImage2D(GL_TEXTURE_2D, 5, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_5_width, pixel_5_height, 0, pixel_5_size, NULL);
216 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_6_size, pixel_6_data);
217 glCompressedTexImage2D(GL_TEXTURE_2D, 6, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_6_width, pixel_6_height, 0, pixel_6_size, NULL);
218 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_7_size, pixel_7_data);
219 glCompressedTexImage2D(GL_TEXTURE_2D, 7, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_7_width, pixel_7_height, 0, pixel_7_size, NULL);
220 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_8_size, pixel_8_data);
221 glCompressedTexImage2D(GL_TEXTURE_2D, 8, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_8_width, pixel_8_height, 0, pixel_8_size, NULL);
222 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_9_size, pixel_9_data);
223 glCompressedTexImage2D(GL_TEXTURE_2D, 9, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_9_width, pixel_9_height, 0, pixel_9_size, NULL);
224
225 EXPECT_GL_NO_ERROR();
226
227 glUseProgram(mTextureProgram);
228 glUniform1i(mTextureUniformLocation, 0);
229
230 drawQuad(mTextureProgram, "position", 0.5f);
231
232 EXPECT_GL_NO_ERROR();
233
234 glDeleteTextures(1, &buffer);
235 glDeleteTextures(1, &texture);
236
237 EXPECT_GL_NO_ERROR();
238}
239
240
Yuly Novikovfea6e952016-06-23 16:29:20 -0400241TEST_P(DXT1CompressedTextureTestD3D11, PBOCompressedTexStorage)
Jamie Madillc751d1e2014-10-21 17:46:29 -0400242{
Martin Radev1be913c2016-07-11 17:59:16 +0300243 if (getClientMajorVersion() < 3 && !extensionEnabled("GL_EXT_texture_compression_dxt1"))
Jamie Madillc751d1e2014-10-21 17:46:29 -0400244 {
245 return;
246 }
247
Martin Radev1be913c2016-07-11 17:59:16 +0300248 if (getClientMajorVersion() < 3 &&
249 (!extensionEnabled("GL_EXT_texture_storage") || !extensionEnabled("GL_OES_rgb8_rgba8")))
Jamie Madillc751d1e2014-10-21 17:46:29 -0400250 {
251 return;
252 }
253
254 GLuint texture;
255 glGenTextures(1, &texture);
256 glBindTexture(GL_TEXTURE_2D, texture);
257 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
258 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
259 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
260 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
261
Martin Radev1be913c2016-07-11 17:59:16 +0300262 if (getClientMajorVersion() < 3)
Jamie Madillc751d1e2014-10-21 17:46:29 -0400263 {
264 glTexStorage2DEXT(GL_TEXTURE_2D, pixel_levels, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height);
265 }
266 else
267 {
268 glTexStorage2D(GL_TEXTURE_2D, pixel_levels, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_width, pixel_0_height);
269 }
270 EXPECT_GL_NO_ERROR();
271
272 GLuint buffer;
273 glGenBuffers(1, &buffer);
274 glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buffer);
275 glBufferData(GL_PIXEL_UNPACK_BUFFER, pixel_0_size, NULL, GL_STREAM_DRAW);
276 EXPECT_GL_NO_ERROR();
277
278 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_0_size, pixel_0_data);
279 glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, pixel_0_width, pixel_0_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_0_size, NULL);
280 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_1_size, pixel_1_data);
281 glCompressedTexSubImage2D(GL_TEXTURE_2D, 1, 0, 0, pixel_1_width, pixel_1_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_1_size, NULL);
282 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_2_size, pixel_2_data);
283 glCompressedTexSubImage2D(GL_TEXTURE_2D, 2, 0, 0, pixel_2_width, pixel_2_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_2_size, NULL);
284 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_3_size, pixel_3_data);
285 glCompressedTexSubImage2D(GL_TEXTURE_2D, 3, 0, 0, pixel_3_width, pixel_3_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_3_size, NULL);
286 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_4_size, pixel_4_data);
287 glCompressedTexSubImage2D(GL_TEXTURE_2D, 4, 0, 0, pixel_4_width, pixel_4_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_4_size, NULL);
288 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_5_size, pixel_5_data);
289 glCompressedTexSubImage2D(GL_TEXTURE_2D, 5, 0, 0, pixel_5_width, pixel_5_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_5_size, NULL);
290 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_6_size, pixel_6_data);
291 glCompressedTexSubImage2D(GL_TEXTURE_2D, 6, 0, 0, pixel_6_width, pixel_6_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_6_size, NULL);
292 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_7_size, pixel_7_data);
293 glCompressedTexSubImage2D(GL_TEXTURE_2D, 7, 0, 0, pixel_7_width, pixel_7_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_7_size, NULL);
294 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_8_size, pixel_8_data);
295 glCompressedTexSubImage2D(GL_TEXTURE_2D, 8, 0, 0, pixel_8_width, pixel_8_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_8_size, NULL);
296 glBufferSubData(GL_PIXEL_UNPACK_BUFFER, 0, pixel_9_size, pixel_9_data);
297 glCompressedTexSubImage2D(GL_TEXTURE_2D, 9, 0, 0, pixel_9_width, pixel_9_height, GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, pixel_9_size, NULL);
298
299 EXPECT_GL_NO_ERROR();
300
301 glUseProgram(mTextureProgram);
302 glUniform1i(mTextureUniformLocation, 0);
303
304 drawQuad(mTextureProgram, "position", 0.5f);
305
306 EXPECT_GL_NO_ERROR();
307
308 glDeleteTextures(1, &texture);
309
310 EXPECT_GL_NO_ERROR();
311}
Jamie Madillfa05f602015-05-07 13:47:11 -0400312
313// Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
Yuly Novikovfea6e952016-06-23 16:29:20 -0400314ANGLE_INSTANTIATE_TEST(DXT1CompressedTextureTest,
Geoff Lange0cc2a42016-01-20 10:58:17 -0500315 ES2_D3D9(),
316 ES2_D3D11(),
317 ES2_D3D11_FL9_3(),
318 ES2_OPENGL(),
319 ES3_OPENGL(),
320 ES2_OPENGLES(),
321 ES3_OPENGLES());
Jamie Madillfa05f602015-05-07 13:47:11 -0400322
323// Use this to select which configurations (e.g. which renderer, which GLES major version) these tests should be run against.
Yuly Novikovfea6e952016-06-23 16:29:20 -0400324ANGLE_INSTANTIATE_TEST(DXT1CompressedTextureTestES3, ES3_D3D11(), ES3_OPENGL(), ES3_OPENGLES());
Jamie Madillfa05f602015-05-07 13:47:11 -0400325
Yuly Novikovfea6e952016-06-23 16:29:20 -0400326ANGLE_INSTANTIATE_TEST(DXT1CompressedTextureTestD3D11, ES2_D3D11(), ES3_D3D11(), ES2_D3D11_FL9_3());