[Piglit] [PATCH 1/2] etc2: Add test to verify texturing with etc2 miptree

Anuj Phogat anuj.phogat at gmail.com
Fri Oct 19 16:47:11 PDT 2012


This test make use of code from an existing etc1 test in
tests/spec/oes_compressed_etc1_rgb8_texture

Verifies texturing with following etc2 formats:
GL_COMPRESSED_RGB8_ETC2
GL_COMPRESSED_SRGB8_ETC2
GL_COMPRESSED_RGBA8_ETC2_EAC
GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
GL_COMPRESSED_R11_EAC
GL_COMPRESSED_RG11_EAC

Each format requires a compressed and decompressed texture data file,
which are added as a part of this commit.

Note: Tests for above formats currently passes on my 'etc2-v9' branch
at https://github.com/aphogat/mesa

Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
---
 tests/all_es2.tests                                |    4 +
 tests/spec/CMakeLists.txt                          |    1 +
 tests/spec/gles-3.0/CMakeLists.gles2.txt           |   11 +
 tests/spec/gles-3.0/CMakeLists.txt                 |    1 +
 .../gles-3.0/oes_compressed_etc2_texture-miptree.c |  286 ++++++++++++++++++++
 .../waffles-compressed-etc2-r11-64x32-miptree.ktx  |  Bin 0 -> 1476 bytes
 .../waffles-compressed-etc2-rg11-64x32-miptree.ktx |  Bin 0 -> 2860 bytes
 .../waffles-compressed-etc2-rgb8-64x32-miptree.ktx |  Bin 0 -> 1476 bytes
 ...waffles-compressed-etc2-rgba8-64x32-miptree.ktx |  Bin 0 -> 2860 bytes
 ...waffles-decompressed-etc2-r11-64x32-miptree.ktx |  Bin 0 -> 11016 bytes
 ...affles-decompressed-etc2-rg11-64x32-miptree.ktx |  Bin 0 -> 11016 bytes
 ...affles-decompressed-etc2-rgb8-64x32-miptree.ktx |  Bin 0 -> 11016 bytes
 ...ffles-decompressed-etc2-rgba8-64x32-miptree.ktx |  Bin 0 -> 11016 bytes
 13 files changed, 303 insertions(+), 0 deletions(-)
 create mode 100644 tests/spec/gles-3.0/CMakeLists.gles2.txt
 create mode 100644 tests/spec/gles-3.0/CMakeLists.txt
 create mode 100644 tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
 create mode 100644 tests/spec/gles-3.0/waffles-compressed-etc2-r11-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-compressed-etc2-rg11-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-compressed-etc2-rgb8-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-compressed-etc2-rgba8-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-decompressed-etc2-r11-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-decompressed-etc2-rg11-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-decompressed-etc2-rgb8-64x32-miptree.ktx
 create mode 100644 tests/spec/gles-3.0/waffles-decompressed-etc2-rgba8-64x32-miptree.ktx

diff --git a/tests/all_es2.tests b/tests/all_es2.tests
index ac1b636..bf79570 100644
--- a/tests/all_es2.tests
+++ b/tests/all_es2.tests
@@ -21,4 +21,8 @@ oes_compressed_etc1_rgb8_texture = Group()
 spec['OES_compressed_ETC1_RGB8_texture'] = oes_compressed_etc1_rgb8_texture
 oes_compressed_etc1_rgb8_texture['miptree'] = PlainExecTest(['oes_compressed_etc1_rgb8_texture-miptree', '-auto'])
 
+oes_compressed_etc2_texture = Group()
+spec['gles-3.0'] = oes_compressed_etc2_texture
+oes_compressed_etc2_texture['miptree'] = PlainExecTest(['oes_compressed_etc2_texture-miptree', '-auto'])
+
 profile.tests['spec'] = spec
diff --git a/tests/spec/CMakeLists.txt b/tests/spec/CMakeLists.txt
index d8796b0..40a7ca3 100644
--- a/tests/spec/CMakeLists.txt
+++ b/tests/spec/CMakeLists.txt
@@ -49,6 +49,7 @@ add_subdirectory (gl-2.0)
 add_subdirectory (gl-2.1)
 add_subdirectory (gl-3.0)
 add_subdirectory (gl-3.1)
+add_subdirectory (gles-3.0)
 add_subdirectory (glx_arb_create_context)
 add_subdirectory (glx_ext_import_context)
 add_subdirectory (arb_vertex_type_2_10_10_10_rev)
diff --git a/tests/spec/gles-3.0/CMakeLists.gles2.txt b/tests/spec/gles-3.0/CMakeLists.gles2.txt
new file mode 100644
index 0000000..2bfd529
--- /dev/null
+++ b/tests/spec/gles-3.0/CMakeLists.gles2.txt
@@ -0,0 +1,11 @@
+include_directories(
+	${GLEXT_INCLUDE_DIR}
+	${OPENGL_INCLUDE_PATH}
+)
+
+link_libraries(
+        piglitutil_${piglit_target_api}
+        ${OPENGL_gles2_LIBRARY}
+        )
+
+piglit_add_executable(oes_compressed_etc2_texture-miptree oes_compressed_etc2_texture-miptree.c)
diff --git a/tests/spec/gles-3.0/CMakeLists.txt b/tests/spec/gles-3.0/CMakeLists.txt
new file mode 100644
index 0000000..144a306
--- /dev/null
+++ b/tests/spec/gles-3.0/CMakeLists.txt
@@ -0,0 +1 @@
+piglit_include_target_api()
diff --git a/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c b/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
new file mode 100644
index 0000000..f99fcf5
--- /dev/null
+++ b/tests/spec/gles-3.0/oes_compressed_etc2_texture-miptree.c
@@ -0,0 +1,286 @@
+/*
+ * Copyright 2012 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file
+ * \brief Test texturing from an ETC2 miptree of a real image.
+ *
+ * This test uses two data files for each etc2 format:
+ * The file waffles-compressed-etc2-xxxx-64x32-mipmap.ktx contains a full
+ * miptree in compressed ETC2 format of a 2D texture of waffles and fruit [1].
+ * The base level size is 64x32 pixels.
+ * The file waffles-decompressed-xxxx-64x32-mipmap.ktx contains a parallel
+ * miptree in corresponding decompressed format. Each of its images was
+ * obtained by decompressing the correspondingETC2 image with etcpack [2].
+ *
+ * This test draws each miplevel i of the ETC2 texture such that the image's
+ * lower left corner is at (x=0, y=sum(height of miplevel j for j=0 to i-1)),
+ * and it draws each miplevel of the RGB texture to the right of its
+ * corresponding ETC2 image. Then it compares that the images are identical.
+ *
+ * [1] The reference image is located at:
+ * http://people.freedesktop.org/~chadversary/permalink/2012-07-09/1574cff2-d091-4421-a3cf-b56c7943d060.jpg.
+ * [2] etcpack version 2.60 is the reference ETC2 compression tool, available at:
+ * http://devtools.ericsson.com/etc.
+ */
+
+#include "piglit-util-gl-common.h"
+#include "piglit_ktx.h"
+
+#define num_levels 7
+#define level0_width 64
+#define level0_height 32
+
+#define num_vertices 4
+
+static const int window_width = 2 * level0_width;
+static const int window_height = 2 * level0_height;
+
+PIGLIT_GL_TEST_CONFIG_BEGIN
+
+	config.supports_gl_es2 = true;
+
+	config.window_width = window_width;
+	config.window_height = window_height;
+	config.window_visual = PIGLIT_GL_VISUAL_RGB | PIGLIT_GL_VISUAL_DOUBLE;
+
+PIGLIT_GL_TEST_CONFIG_END
+
+
+static GLuint prog;
+
+/* Texture objects. */
+static GLuint compressed_tex;
+static GLuint decompressed_tex;
+
+/**
+ * The \a filename is relative to the current test's source directory.
+ *
+ * A new texture is created and returned in \a tex_name.
+ */
+static void
+load_texture(const char *filename, GLuint *tex_name)
+{
+	struct piglit_ktx *ktx;
+	const struct piglit_ktx_info *info;
+	char filepath[4096];
+	bool ok = true;
+
+	piglit_join_paths(filepath, sizeof(filepath), 5,
+	                  piglit_source_dir(),
+	                  "tests",
+	                  "spec",
+	                  "gles-3.0",
+	                  filename);
+
+	ktx = piglit_ktx_read_file(filepath);
+	if (ktx == NULL)
+		piglit_report_result(PIGLIT_FAIL);
+
+	info = piglit_ktx_get_info(ktx);
+	assert(info->num_miplevels == num_levels);
+	assert(info->target == GL_TEXTURE_2D);
+	assert(info->pixel_width == level0_width);
+	assert(info->pixel_height== level0_height);
+
+	*tex_name = 0;
+	ok = piglit_ktx_load_texture(ktx, tex_name, NULL);
+	if (!ok)
+		piglit_report_result(PIGLIT_FAIL);
+
+	piglit_ktx_destroy(ktx);
+}
+
+void
+print_usage_and_exit(char *prog_name)
+{
+        printf("Usage: %s <format>\n"
+               "  where <format> is one of:\n"
+	       "    rgb8\n"
+	       "    rgba8\n"
+	       "    r11\n"
+	       "    rg11\n", prog_name);
+	piglit_report_result(PIGLIT_FAIL);
+}
+
+void
+piglit_init(int argc, char **argv)
+{
+	static const char *compressed_filename;
+	static const char *decompressed_filename;
+	const char vs_source[] =
+		"#version 100\n"
+		"\n"
+		"uniform vec2 window_pixel_size;\n"
+		"uniform vec2 level_pixel_size;\n"
+		"uniform vec2 pixel_offset;\n"
+		"\n"
+		"// vertex is some corner of the unit square [0,1]^2 \n"
+		"attribute vec2 vertex;\n"
+		"varying vec2 tex_coord;\n"
+		"\n"
+		"void main()\n"
+		"{\n"
+		"    vec2 pos = vertex;\n"
+		"    pos *= level_pixel_size;\n"
+		"    pos += pixel_offset;\n"
+		"    pos /= 0.5 * window_pixel_size;\n"
+		"    pos -= vec2(1, 1);\n"
+		"    gl_Position = vec4(pos.xy, 0.0, 1.0);\n"
+		"\n"
+		"    tex_coord = vertex;\n"
+		"}\n";
+
+	const char fs_source[] =
+		"#version 100\n"
+		"\n"
+		"uniform sampler2D tex;\n"
+		"varying vec2 tex_coord;\n"
+		"\n"
+		"void main()\n"
+		"{\n"
+		"    gl_FragColor = texture2D(tex, tex_coord);\n"
+		"}\n";
+
+	/* Draw a square triangle strip. */
+	const GLfloat vertices[2 * num_vertices] = {
+		0, 0,
+		1, 0,
+		1, 1,
+		0, 1,
+	};
+
+	GLuint vs;
+	GLuint fs;
+
+	GLint vertex_loc;
+	GLuint vertex_buf;
+
+	if (argc < 2)
+		print_usage_and_exit(argv[0]);
+
+	if (strcmp(argv[1], "rgb8") == 0) {
+		compressed_filename =
+			"waffles-compressed-etc2-rgb8-64x32-miptree.ktx";
+		decompressed_filename =
+			"waffles-decompressed-etc2-rgb8-64x32-miptree.ktx";
+	} else if (strcmp(argv[1], "rgba8") == 0){
+		compressed_filename =
+			"waffles-compressed-etc2-rgba8-64x32-miptree.ktx";
+		decompressed_filename =
+			"waffles-decompressed-etc2-rgba8-64x32-miptree.ktx";
+		/* Enable blending */
+		glEnable(GL_BLEND);
+		glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+	} else if (strcmp(argv[1], "r11") == 0){
+		compressed_filename =
+			"waffles-compressed-etc2-r11-64x32-miptree.ktx";
+		decompressed_filename =
+			"waffles-decompressed-etc2-r11-64x32-miptree.ktx";
+	} else if (strcmp(argv[1], "rg11") == 0){
+		compressed_filename =
+			"waffles-compressed-etc2-rg11-64x32-miptree.ktx";
+		decompressed_filename =
+			"waffles-decompressed-etc2-rg11-64x32-miptree.ktx";
+	} else {
+	        printf("Invalid format\n");
+		print_usage_and_exit(argv[0]);
+        }
+
+	load_texture(compressed_filename, &compressed_tex);
+	load_texture(decompressed_filename, &decompressed_tex);
+
+	glClearColor(0.3, 0.5, 1.0, 1.0);
+	glViewport(0, 0, window_width, window_height);
+
+	vs = piglit_compile_shader_text(GL_VERTEX_SHADER, vs_source);
+	fs = piglit_compile_shader_text(GL_FRAGMENT_SHADER, fs_source);
+	prog = piglit_link_simple_program(vs, fs);
+	assert(prog != 0);
+	glUseProgram(prog);
+
+	vertex_loc = glGetAttribLocation(prog, "vertex");
+	glGenBuffers(1, &vertex_buf);
+	glBindBuffer(GL_ARRAY_BUFFER, vertex_buf);
+	glEnableVertexAttribArray(vertex_loc);
+	glVertexAttribPointer(vertex_loc, 2, GL_FLOAT, GL_FALSE, 0, NULL);
+	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,
+	             GL_STATIC_DRAW);
+
+	glUniform1i(glGetUniformLocation(prog, "tex"), 0);
+	glActiveTexture(GL_TEXTURE0);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
+	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+
+	glUniform2f(glGetUniformLocation(prog, "window_pixel_size"),
+	            window_width, window_height);
+}
+
+static void
+minify(int *x)
+{
+	assert(*x > 0);
+
+	if (*x > 1)
+		*x >>= 1;
+}
+
+enum piglit_result
+piglit_display(void)
+{
+	GLint pixel_offset_loc = glGetUniformLocation(prog, "pixel_offset");
+	GLint level_pixel_size_loc = glGetUniformLocation(prog, "level_pixel_size");
+
+	int level = 0;
+	int level_width = level0_width;
+	int level_height = level0_height;
+	int y_offset = 0;
+
+	bool pass = true;
+
+	glClear(GL_COLOR_BUFFER_BIT);
+	for (level = 0; level < num_levels; ++level) {
+		glUniform2f(level_pixel_size_loc,
+		            (float) level_width,
+		            (float) level_height);
+
+		/* Draw miplevel of compressed texture. */
+		glBindTexture(GL_TEXTURE_2D, compressed_tex);
+		glUniform2f(pixel_offset_loc, 0, y_offset);
+		glDrawArrays(GL_TRIANGLE_FAN, 0, num_vertices);
+
+		/* Draw miplevel of decompressed texture. */
+		glBindTexture(GL_TEXTURE_2D, decompressed_tex);
+		glUniform2f(pixel_offset_loc, level0_width, y_offset);
+		glDrawArrays(GL_TRIANGLE_FAN, 0, num_vertices);
+
+		y_offset += level_height;
+		minify(&level_width);
+		minify(&level_height);
+	}
+
+	pass = piglit_probe_rect_halves_equal_rgba(0, 0, window_width, window_height);
+	piglit_present_results();
+
+	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
+}
diff --git a/tests/spec/gles-3.0/waffles-compressed-etc2-r11-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-compressed-etc2-r11-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..10a62ccfb92c1d3b2ac1a9af637fc0d0100fb905
GIT binary patch
literal 1476
zcmV;#1v~nyOH^1OF)_Oh3K|Ll0s{m900001000000001Rk^le$82|u40000W00000
z00000000010000700000000001ONb+g8VO0<c^GkQ0iE9GSha7Yg*%W8)<*FByLnl
zVgx&`y#qmNHZcR6Nwhg-7jbr{YeGhe2~OR+c;%m({2%<LrQd7+8~6UR=yKMsWMoK9
zU&jvX%o>PCGK^slgV`xYZKBO$;!jL<LJ6}|gbYEgu7tc1 at UMcsj@qxi|9}6HjS@?x
zup0w#b<{mt)vrl^bh(=tr3esXV$h9B)gFy{bgWWkGg-ZzH=E%$Ce(#-d$!%A`Y(fZ
zdHtP;npt(vTa6E(|L_0yAKM8w_uIUfrJwPCCiG{Hn*>BMM!`p(k&<$DXJoWuMod&z
zNu-NRZ6u%(Bp!*MmnAZjp+5t0h=gLuWF~?`F)S2H5FPM_N<^|iCgLw#Vw-U_qA&A+
zQNO$R-|PRRMl)0;XjYV;i6m5Ia)qLyQk=a>!2k)iQUNeZ)}R0PEr~;E$stAa7pGrF
zpM9?K5&LKCA8<Fln~LccR*H1USD5vsqxbj5*LPMmYgXp3$!uoUZPwgpa{FljNwnKB
zMF}uj3G!BCuSt-SrMyp7e#G$5ZIp>pX-Jld3SOXzj;%Tw{11SnhoP91DrTgNS!dvA
zide?0k^~?VnLk^tfyKO9;hqV!QsJzW#!P~}RLmT~>7N|gRMDGa*4eG_E3{9EyD#kb
z81{{(+HH0G9lL9mn8Rv+r?+t?Y*y5KscpucLE>IviwO3&m;bhFY1?~mGUgL8IHj(e
z>6lS+aZRF<5h?bbh`wI{peZ7LRGbN%sDzVMV;LzDg<=<VYGErN+FSpNYcq6rF5<|M
zVvN`~lY6DPQV_5T)=!||E4VrW1WR}P9Z4VrmRWB69lPmm7UVABM)zHAn%Az-X?Nvz
zBXG9PSub?=D|AP|lK^0MCw4cI-e-32PGYBknoD-2AWaNxTBKrc4)o`5k4RG7ZN|i!
zfMAhH*sT(fZwSVAlkN7sJvf4FDpv&0N&yXFwwa at wRG0xF+Ph=QSp_*Iw}1cq9YjfO
zyKT1r0wuEBq>@eh18uhIci;c~14`P}O?y}U0%Vp+G?Hoj0Fy{zk~t&%9SYzEDD5oG
zTmSKYW at gl<GDuKLxGBS%LXa^d6G1nrX(Cc3Qr9=eLuOKK17T*zIuK(=lxkXknBhMg
z(YhO(dVx89S9f>jV`fP%yIrpS0CGv;lga1)16S6szuK+%6Os#T+goh=9k3grx+^04
z9on6!+MTNQANx=A-&^(iEhigrw$U#4AHUyh)?v1}n!E9LQ)XwC*hFU4ZG_o+sE3+y
zq>dHULJeST00>HerP|LS;JjK+U?ikLBa~&O+ihVt-~Ipj6I)xikX^O at 1GdzXskKx5
z9p7!X*Il9j0RRAybLvVV60vK4Xqvm>zCFU2K(&gEqG^P-gG8c3$UhO6l>b@(U-dto
zs!H_MXoQSv-79dHi3<{=m4&=h^snMhc^BggB{&gVXSF-wn2Z{ApV6(zz8QFhKst$6
z;OzyYn1CH?{y*ulWB#w;{txlvFlM%GBSp2Kupi~WQ}jNppc7_pYGh`bsA6#^5 at bhN
z`~+}E1ZymPV))Gzp^{mLpDYA<1W7KOQd?#&SLuGwQY|`5up4&$9Z1P7mcw at Y0c5+d
zo16Ol1QV-!lentlQ{Qd2n`U;aq5}8^1%Vr$WfcK~n)~&Sg4+$Ft+?5-ssU4XyMO=w
z0uT#>I@@DF0001BWcUpW@}DB6y$U%3D4c?%n%a^0cgB3SyJA%C41AZQz8m#_6Y)Ql
zl4JBYhGL?4n=?s&o6Ew{TP=$>|Ns9G0001gql)-%u=@q0qtL^lTH${P00022QhQ=a
egpvOU0001{5N*Hz|Ns980001`0Jht0w%cv%KDp)q

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-compressed-etc2-rg11-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-compressed-etc2-rg11-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..a2a952a8ec2e118fa332dc15168274ef6e60c854
GIT binary patch
literal 2860
zcmXw*2~^VA7sqj_+{%R+Esc>Zoy-umNv3fc)J$_B6&1Id6#1iOh+9xv;exrfIFc(B
z?zw|nXrYj$jh2p6qnI*^OO{rSJ18K(Kb|>r&wKCl-hJ=f^UizUbI+}J_YHtrTXS}6
z7-}dftEhq$rnEgMEG`cO`aTr|vRBNZivFK%@9+9=p#}nRir+Wx>%G-qTP$Pl>)YSU
zh^_M?*i4ZrUY`RJZ2ls=3 at 6PZ5TTUJGl_oDM&6V;X!yEi80KpEF}G=uP0ERPVYJa^
z{ijjavf2c!XPmGplLBj^zt}e2eaNngzRBxC8{lw<zmD8ZGjXz~PGH^yEucpKhHP=u
zdyIoNAT_LVp%kzab01X!QF5bC^2WJ%d=n0TCSBmaMsbW&^>C{H?#tYMSBHR^KWck5
zoPM;bi`+$<PdIOX^o8F}Wk<*JH{W1Cd+N9lQU|cpgC1BL^;TNtS$mR`daDmr%b}u)
z+M&C|c+tj7|JiUEo- at _?>|_T(lz;4GpS&i#&g0#-acyKn!fxKqb^jmBP=(jQ;utk|
zf<rG4oeUagx)w6Fj02{$bnxEex6eI)t at R+Y%R;mHyIT?HG9z$v)9{Os23(bodnX~J
z0gd+w<W6`3n-nu#Pl=t;knKf&cX2v<0Vgs(6^mw%mr9Un#dVvI%#uJt%$2PNnTCOv
z`M=(}P$^s#zq*(?*dSa4WDtPKoB3EOG14=se78H6oo93z5iR=t!DGfU#d$5f$P2Zz
zK03|w4qesJ#<|PoS|xi4d1~cad3#<QDI6yY at btj>yH at 6$CS+XI24$L at CLGGuIrLqY
z8v$yr3;oWasL<4gR)*AM{7aRTr0Tfd2-`Hj?CLnG^S#hO>!aoFI<OkIV2^@qD~lSM
zn^TLu8P at W)M at S3EY#L7Uvhjr`BUdq4&hqhc`0A6(!p;prFi?=D|Fne@$o~9;|C%KZ
z<4X%fOj|nPZ?ma+%LxCTIU4Q^raFGd%$Vyrj??pL(>$;Hoo-!f>az!UX;2PQ{^XvL
zl}3v;SG at mE)YR08KnX0>ue}<~6B*Va1B66Cte5d+7bbGY5*#2m>MxnC>xe#mHI5 at c
z at xFW2n3UZyQoP3t61TUe%f4v6x<V}O^DkPjQt-tH8FM at eGutyl#w+--w)YZgguwrs
z*>?%gS1_qv8hOa{kN`)QjDpM`3w|c5Ta~C!`&s|0ZdI(lg1OR!%FRo!bHVdmbMvY?
z&f>7WE4R+PFoh0?WIIfC-1595oT*3TgcC{ThqAQJcJ*VvKHMi`(i8G)f6|p{C%0y=
zYwgL1v%OjTRs*$jjWFUEJ{R-q>my?1silaU0oBY at DJr!S8T{ZkRj6h at 5?vcN&-GsR
zRIO|8=?I#7sLr?V$>e8CDqm!D)#XyvvIV|PZXf0bwOh!&`%`9(zY$uk-(Hb!0)x@(
zyUWCpBC*axN-n)~ZWW&E+1ti!kibUh&W{O~rLYw`YH0DY48n{0qsY5i3g!f--*Y&S
zE2J;OFX9Ih1Z}Zq9+;tmvPkEA2P`J2K9Y~Ijxk71*Ag*ll%@-zYNED6fL#zFO=9ZL
zXkv;5NkqL5>d}-gu3nFtn%<$TJvj?|(Iv4kJ+!X5m{5aiq3fE9rcQBhfIixB3a}GG
zrS5i>ZY)>xR^>PDk>2;!&(%<Al=yFr^vb-ogCea<^~`-Qw0eis9vu?^H?WcI>MRFR
zf4D&$*>bWsG3Qtu`N(wlU+6|RMBCQaf;gBXQF-3!i%pTWGXH!sI|szlU}=|1!O!Zj
z9;x_oi;0t=sqSRJD9<S~Qu&M&4BZDC`@)v1073#F-IBnBUkLg$mg}g`@^ChJQGfx2
zjSq*LCasfZw`gCl4 at 8hZQ4YqiKOpW-ax<p2$L^l>ojrnfo*38pljkm?3 at kvW+uTXy
z=EZPa(-ALx=0D-2#pr}bO`#U}4<Ju9Qi&(&0~Do|?=l%+S-12l5SJPQ*I0QJ7~h(x
zt+vJtjBtu8aOJ1>(?V4GWK2C;Wyo)??;G_7iE0=MZ41coReQyz5k<0twxdVcBOxq{
zzg=x_e!{PzQi!4K+Lr_FDcYrDSu-DfI?AvBry||2NC`Tj$iK%~M$sGqcp16lglXG#
z9-v&!Cy at BA5*P?Y5D>XCh>|_}`EF;$I{*{_05)O6 at I1Nkq!ebBKsMR5l)wPvr at S{Z
z2~2rzCpF4U3SsnYA!jHuh>2^>#N9b5OeKbSbAu at X%LgYXjHWihb4l=H^UD&LbP at l2
z5iaxr0!fY^PQURNE>rOMKVMt9eaKYO^<f1cPS$8QfBDQY_e2y&z^nAhwNWuqwH&er
zhr$rylybDAFDyQsvS5Kb*R)Fceb5K*L^v2`wrH{;{at<|_?5eUY<R&%z2f#Irrz5+
zJ^zs<W7nYvN`J(poH%Yf47-<@a^i+RnX-943`H6VKFvpC1tdjYl|ht+%i;ymq8V=s
z5CVV%#tB1k7DU at R0Dv(-26o2U9>bYQ42L=$_z)!t?4UQnu<Nh{wxK;GH?Ea}C^oS_
zovaia0_WESs3jRB^PEd%qRWPn5VFisUt84yc$>5^#D=l^)#DP+#!ax at -DNodh;*bx
zcuRcrAda`mMex6GDB&$rd_?fNIVb!uA$2UX*NHStppKT-WIwyuedk+ZN=8Ynf-~0L
zl<UCx&c2{q8 at 74plxl^5=YgqTf=Hv1!O+PDbm%xp<p+Z_TXd$mZMI7_^~w87Q<h`n
zjYSF~gj>MI{u0La&u$n6&yzvp>`ky>6Ur)v%2jv(07wD33Ren<rP58XaEm9nPzq88
zfy&WeqJFSzmS#16_At?Jt$#>mSWHd8rmi}aaJo89zI<n&-+Q|4YWlT+(SDZ}>Bm>`
z`YINWPTDubIhCI3MXEpHOuPjsB1GXmAP~5)jx5f1OW;RPsf=1Tk%G6%3NGQsQRTrG
z$1P$Cvo!S{=BIb~tnsERw>iX|4$CTB0h|7)>k(xz3qIYx?`qO-PgC;u==d`p*H0E{
z7_qXJAM{V;w1?A&dGEO9?E~(=95;TR6rSanSZh50I-tHt;MppN*HqQ2Hb%*jpC=VT
z``^DQtqPGdCgs{oGxqp`=!1Tj$6UkAY{7qV at 24Tf09iySWf{-%eAaB~y>v1HyMjm`
zEfgV~SKyoq?6PGZ*5zItHWscY$|x+{9e3yO{L$3c1knU40MwZGez(Wlz5A|YtiApw
zUAed`#zVCk6iiG_ at X${@+-E8D2^Jxa1t;WTgYlOB^EW;tvth^hnr-b@)aq0eltBs;
z6oUCGgFx?!IO`OV!3zppL}--2?95pPSyyC`cJ;|1zbYAoHfTN5P`Zi|3{)55DerwH
zTU>_7wtwr`6=(Hg`t3a0^<61_K|S8ZwP_q8kHOGYN-L4Bm*)eX6^(m)Np-+rec!Xu
z!T9tpt`GotF{V8TIz_Yz=8u=sx40Ynyz63VQbV$$9!v{)|G;MjejpURaUZ;Dd9dFn
z?IdfbT4VWwhL!T+`)=J8oE^(y&QBP1W4asU?w=pkU~!9ku6ed`u)hCjT`PP^wF at U9
zLT$^bNHGtwN at 3T8VJ*u8Dsqy;)(|(b<(+hNF^Qo`%c^rsu{BW7nLm)yNfs{hdZS?O
z2!%4CiaS(=+_}OWl2#^FWN#3Yr8`>bY(Ew`4EfZnEaOz7A5uqg=DB0iMNr;p;1N0r
i=SnRGwtc@&2#AUh0Id06Zu_{PZ4UsHg4hCrqWvFSuD=NY

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-compressed-etc2-rgb8-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-compressed-etc2-rgb8-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..a1df9f2cf5b5c8d410e0b5af6a325f7384f21a8b
GIT binary patch
literal 1476
zcmXw33sjO<9RCE(N2z>*Q%pOErJdZGh=S%>;v)@T`Ak!{UP#sv%Lg(k!4(w}F4Nhx
zsZ%SRnmS9DMuzq<aDZ!OWg(ngOUne&O;plvA3LZ2IrrZG`~L3l-1BdXOiaNM2qJ4M
zCo2;K(iDKj#JItdUk(7~SOB2FIu2f+#27dKWWW{D$B(4+>8okNLgsasCg71+kaW~#
z0&r1ZNwTaReT~F;ji)jzkRM)_B@;m<XmN|5(Mi|+0nF#ms(3g($TfJ9Kmdh`N>3jf
zBghncf?`KBtpIOFa71`<7*DY$nQ=t35LZmk{vi^tcI+5>_TswWxbE0Yp;m9&Y<Oxz
z=uJ2tp58ZB9%t>rCanAItoKoRXlqy(=GD~-Vn<_tCiv?{QV`NP_nm``Kv9ifCJ^2e
zueeDr$1?~~Qd7;u%PwGK at v|k}975!m7$Y5j`IJZy*DT172#~kat}qy!(px?awljsH
zd!f8*=KetuHrf!>9IvuTE)c~6%tUXYXg+Cch$pzMbj1&Gn(gn2(DE%yihOgw at 9K4&
zZFUL(tGzs at YEcn+1Z=Iccw>1r*|$vDlt3j}?r_qS`e)h7URdaLQn#3OmBROPlXz(`
z0(>{8_aKyo5^vm<Gh2f5h7}6crT8%~jQK8&mVy_4 at b{0v(!!#ojX4C~^c>m*hsB`_
zG@<~~7PrLgsTxd1kSm|Oh&;;1+nsHM(v^npYfdr^5OKE<!}QK_N>Zetsq}`fQfVfs
zTP9g6mh{|eao4zT<$aYUjoH5xP4w|fVp^XQwd!`7N?6g)HLz0ovZ(u912m7 at U>dOm
z=@4Zhh~lBEhr07}M2@?CLzuf*is$L}4HW?SFH$cL{QOC5T}?j9HHiMUlauOz_OczC
zMb9=TWC`9#M~7+ntof+#4xOX;Bp1lb5$!1;&DnO<vVET&brPHusMtO^1KYjMX at 1(B
zFO#A8T<f*_<{x*Aa1GoQ{RtL_TeJe{AqX-+!xvHTuT_gV85wc>0Ch*q7kdk05#o;M
zOG%6}({EfnsbM+F;f6zrH^Ygjor2wV(ezL^v-#WvEAruj{NYN<BT0qCM8USBA;}(p
zLbq}2?0kJjne!YG%S*`{Kkc0>so^8E_lh#jZ3l%*OFHD>1PWgS69GZ$wY512X+nHR
z;j#?SG9(ro at s-rJ_3I!Vl1~HxIPE<Ep24rqOlReJ`D1#!V<Pzr_3H=9h_;}zyiIXo
z3l$u at 3Ft*`Ar$hBlI3e3$sR1fiHD6r2Rn{6?UxD2m7oo{L96cMMIucG;r at mPfdByC
z&w&9zC%MZfA^j>;#9c8!Q!4KNe!coDBaXmT at hl8$MaD`O8SNu1)vUUc)6R??KTURb
zFPu6NDyS+TRc5!27HDOMGbc$F!`7~^b|SLTg~@1)Pk<99w)0}040IUy-B?dvJCB8y
zbO_-FU;yR;p_Tz?<G>L8m|rPs<Rix~Cq!3Q^Q|YUg5u({aGQsl&&aJr&I51WJYy4_
z)ody?)js-w+w`(3>DW*nMDOVt>fvj1yw~Ar+ld6^rn7n8)YsMrGPCTd>-jR at m<Q*#
zWz+YW4J4Q?s#qsvORFn-OR?zHmkNb4+7U~`wl1((3Jn^?`8ujS86~f)J+-wze^;?3
zo9xbf%pz$dOhReF0a{5-imTB4=J{at1)oyO)ligS=3N?~wGkNK1g&CW%D5|HgBUWN
z94$x7Sb)|>AQ0%Q3g7qa;M*!p#!QSp!7_(o--6Z at b0xF#+G>+PZwF((9vW0o;Ca}?
zi)XY>((7g4ZZ7K(pe)+kTAuXPBu$?>B^;ysz5v8ObN`;G1rRl9{)KPBhKqO1KGX#+
zmJqoH<~@K6>_NdjZm|7&hUig(_O at mwsCv+20s9ts$~&Nq4lwF{jVJMtEdUwy{q=_Z
J_5c2}=|7l}!M*?h

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-compressed-etc2-rgba8-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-compressed-etc2-rgba8-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..4ae0670182af450ad3162790847900b98ac78c0c
GIT binary patch
literal 2860
zcmZ8jdpJ~EA6_%FF~%?#BbDQu86mneE=N95R0c`8rRhq91~JSysb*);I65^($w{KG
zI8@}4nR6OUbsXI$P0A&crcP3HTq3td_BYORe1ClJ^Q^u1`>x-!pWnOI`mMFD`v&cx
z+1beqaf@*%GzJ1%pynQ0q>2H+E&{+q`%TlfdCc|e%@ZsDv8Az5PN9)03yk-*I~}#~
zI(LKX87U645>Z%~A;nU46=~>r at 0%3{MWG-Q6%3pF$61o&B>sWgbP%l1-F652ER1>f
z)r#IMBU&epCnL50>bc}FJHv)K7SO4CWir9^tXdovx8VMY0?N*;*5S~Im}{Iq37gxs
zbP0W&m&9X)&RU9?8JC#QM|*0KsoXjH)*p>5r5jBbGBI!2 at p@O|=HUCCdxA>=ie%08
zw)ChBly6DA#fpSY0IoSw&aH4!vE*sva at YhG4<W-ynU867)f!U>K1)Gc+yNd(>q0&_
z#&+~+5R}iW)>@ZkjW)?$aT3)MhIr<9)9gN}XNJhj;;r*&K!y=)1OuhlrUOn(q8wj@
z11r1+|A)eXp!~P%`djsZASQ}!;q}@%d_$@4L8qM*TMS!aUHjT4jWz!I*cLYAB0xDU
zR=p=)u6Re?AD>K#Naql1=w0;uw_HZ(N<E^~APNbFTb(^a*ehz=SQI-!rsDfuAvdWL
zrE&S)8z9}iS;TP^mS}m;+bhExa$sKU3r#_G|7N&s at zl*fbxf_?I#+=WhqG@#-8%JX
zIkXJr!$TGYr2hiRSnZ7kqb2A)by9v}xqr90O!Z9)j{-5mLng0pk_^U6+9ePLwPaX3
zKHIvaX;Ra%)lezQSuuO_iOMs`^|JCw at XwHs02uye)w}ezZ(LSLrh_qn&d6d`JoAJD
zuqgY${X2mk1raS$FiR at 0s*g#dBZ0%|nsW1AtCAhT**|VGB=!@KNdWiTJd at p16;EmX
zqd6o;T4gpe*w{7 at pA2ol<l3ngTsd-mWS!Z|rYD(z=`=_-$gPm3acLpqY2^nT9x+hZ
zI$n5KzV>|W^cz<*5hwr_Yx!l at qa`XG^BC&a^4=kemA8Mk{vy&YieS~ZFACq_l!evy
z&A;!^3r8o&Cm|1?1Gu&6b`8%VYXt!U8Q3HD9yXY at H|C+q^kCN>Ve6rf-79NV=G72+
z3ISLkd>nSb*Q4%`91Z{(e~!Gn^K?()v{WXmfnn$*AnwB`y;YATuH$u{6rvy=F&}>I
z%G0k`e?xpB8U~p#<-B%RBNJ1yvoS=F8O8t3>%G<Yo(}#kUo_QuIAN<-{1aaO!x#sb
z^=!%p41*oq(c(33mUZdj=baD-)1%;@NKtDC^JFp)PwXII_(bo-N1-V^4%fMYLW?JX
zrSaPzg^o2*BPJo6vqpBu)#8L}?hzBL at uPQ7fkT^?ciP8Sc!od+ZskC%$3`~ltqq%#
z{5SQnLzF+Af<M2<aOlAJd|I4 at xk8UXq{_z-&HVmw^=k4=Pc!nVXsp`Bwp%@}10)6+
z{dj97N9AXKt#+9XN~(ty!on9c?rN4jDOyC?g_(U2e*FD%k7bw(#pBhKK*1`cY)${F
z{P#^}amNdw01Sz=X1A1&AoAy5D<dd0fg!S>uar;NxQ?nx_*&9#H2X#f6uwov9P<aA
zIS^AY>o at tib#u<BdtpyQHH9S*f?b1y7KMi-jKkTLJ3z+22xs-xE)v^{#dl|`m|)8X
z(mV8Bmb_m;tiF)~g$u@<q4?0Q&TrBMf3AX3KNvklXu|zG@~1e7M<C_!Cj<WMK7By!
z_-HA{0<=ZaEB**FI=}TLBqY2g88aB`$}PoA=pqxUrxRKS)q at As{Y_ at iWO;YP(Yg3D
zeyvfZJ#IN&@+)I7*bBq3Fr~huD5u at s7eam^Abb%x`SOeW_ZheJ(|DJYlf1M#QTeOl
z-mg9NY|47U at T6DT8=`3CwPM##+0KB;jSAQKu)MpnT;<z{C*~VHDDp7r^67jdPe^gs
zRG%X#)Bx2-SMNPBA`<ST92FoBFl&{xvcLS4#U;nCLTLqh9Ui{~6~3^xQMP<7`9`?8
zMhNcu7{o61`?85c*@+ewe6)(Xpw{fuaVR`7+N<l1G~o3YR*M6-loe_aG}ZQ~Eq~s>
z1_5ZAmi&Ea%)RwU1Y{BN8|I$?hyVypY805~S{aRK@&6qCzjzXLc-=4(QxR8P_`>a$
zP$y7#(upLOIL{ak{kWsgPkWvSPbm)Gap>56^-FQi#Z++0RfrY-8r?x)PY`@tkARJ&
zo;t5i*XhP>q6#$cG{nEBCj%{3n&QNCyX0xnjIJrqu;=;rp%d;AoSSvIsF<MvYexOS
z+m8)K+|g``i-3f;kZm96AZ}+`ip#hQFH-wwoBv4<%=rc6c?Q7L)YRXp>-;0>EHb7Z
zf5uBh5yfHF;uvelmPAP6ae06!?za~AuQCx4*D)9}*&JUbj?vY{kqA5nPuow9u at Z+x
z!g%aSp0ir2<pEaW-H;`;@ztf!7T)&v8AbYEiZ4sUpq^ZRtj~!lNo9 at talH=(i$=y!
z4*8GkRl&Dk-Z}s+G>9L%cm4dCe0PtpTW at NV14cv6K=<KB@&0&LqP(1vl11Vx{;IpK
zimPgmE5W1St=5PI;y;O)>FZl;KcKNYQzOsd&)0WBL)EOFF)}>wc-}8W)UJ1s?lmzn
z@!ey9XlE6G5>=9?6*<OQmt2Y?|CL<QwcfkA*?UuF1Y{==X7BEL;Jul1oY5vX@#xg!
zu+%Sqn3l$HoqAWYAi9BzsLgKs1DhSW52<9&2*>22#NfEJ=Ut7p-A_u)SK2;e at GfKb
z$YzVC)q`?~OgTdml0fvYrsKR#eJ$B|eY2UNqTwET_U)w|pA%~+Sj<!9%-b$6bX#*4
zi<=w{w!Ej>8TQ#=_FZq at x|<Do2!sj~|36roZLw*nWLW};3JKf%2>w|;YU(}FdA|-7
zHzV-QI(Q+P+ZR7^--o*<m$r-M#pJ=M`Z{+C#%dhm8H`{?!i%476y9w#(`YQ*YY<h)
z>3f&ufnBZ<+0dh`s0i2Tw4sj5itaN5B_ at Gc$i(NoD{7TntxBJ52(rwkU>I9-nh}<A
z{*(NE5QyRKOU~}}U7Hq)sBU}}W#G_tI at G5TZClDupm&aX4B&1LacRfoGEM^7Bk<J^
zAn4;II319sOd5;@v9U*{QT(d!=4(($!CvV<eXx4I#{OkW67zU`#7nK6Gaah_2D<T2
zxXF>^bCcCB%Op9DWf`cH)+H^lG`6jQJ?h3bqz at RWIkatU4sd`T^=%y<)r})XllF#u
z(hz(yEyWe7Hen%qY^>+kga(N^1cN&$SSwsh4cyPq at 0aS)&*7r%d25tU*1nU3v_PNe
z_i at 8{%X`BMH>W;%tKK8lQDq7JTnd83BZd!~9P9i>_09OaDwoKq(iP-qtI0x>4LJ<@
z#>lF%yE5ba<yUpd=M3zV;*ym1U8}Dsw+|Z8Ug8!xxwmnj%ZSF>dzdW8H8n5c5KPnN
zuxF~tykBkBsLjFPMdDI=yp%EET!v-&dNYFEdh+av+L)yD-r_jwh<NO9q&sPN#Ar^-
gwnipY+JD`KWQ&mzK$z2n+BS!VApE)@&qu=l0$7{EIRF3v

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-decompressed-etc2-r11-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-decompressed-etc2-r11-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..26315752fcabbdaf5c582f8fcf58b3dc35f3ddeb
GIT binary patch
literal 11016
zcmaLd1<V{r5(VJR-9=|vNu(qfIt3h7I1V#2!-c_NW at d+(nH^?kc9 at yjVP@vO{aSge
z_J7We^!}Qiotf_Us=B(m_rHAU|ExY>;K18Q?f>uoBmM2~{}}0Coz6&|PN&~^ozCC?
z!~)&V1G>oJ`+w%cfKKPfAAc+ at 9(m-Ea at 0{rm5n#vxMIEa)+<|WwN=??pMA=)#~xeG
zI_s=*;e{9W?D^-PU*ObJPp$Uy%P%iOh72huoNz+L-h1y|w%l^da>f~FlsDdZqx|yA
zFT>%7AATtByz@>u^w2}g9COT3rkrxh9u{7B;ri^(JMUcW`s=S>mRf45vfzRXR_lD3
zWtJ%`t+Z0vYp=a3w%&T{;=bK?- at P1n+;Qcx#~v%+e*10t{rBH1zW at IF-nnbI-+c4U
zW!r7HEvv1zT3L0~RV!~AoO$M%<*KW$D(9VdUeDrx>7|#JtFOMg0{2^Qy|u!<__x5D
z2GK#EKKtymo(AR5gAR^+?zyMnJ!sINidklvr3 at G_pknH&r>?fuV1We|s2aqsvdSvu
zpo0#o8qi_;?YFO=qXYh}28SGSNac+`;I03-v*C{0-FM$zdE$?=ciw;h{XOoq;CKF~
zDO`EwmF2L*4(svfOK at E*g!i8^l%Ie8x#E;lPO1FG4j%K(H(#Lz--{F1S6+GL%6+lL
z7Ar8<Tyxd$X&?>&|8>?`r>DdF at 4r7>9Pl~bbkJ|S1N`w0 at E<yKXwUaz!FM#HKkT^U
zj#W4JwfymQjsFig;DBoHz4zYX_|pRa95le2|8aM|_S$RrxYGe|-$euZK*j-$q5&Pm
zVKfl`d~@1qr}c2jC6|=orkif6{ucv)XAAn!V1*S{s4#}bz=<cGSdKpW=o)wKHwLb`
z=9-EdZn&XbbkRk<@%sGp&zIkR`)xS<^wUq}k3asX at o~i!SCl>W*rSed{EhSFmtVfZ
zx%Uq0j+LpVnyM_a$RcH-g%%nPd_o&`|NZwbJM6GS#eMhPSGDGkbI(1u`osC at r=LC?
zydMWKwZ#@&l+8EayzIH>o)t6CJad_1iYa>B>2ck4*HsPr@}~iWKMk};zt2Da{D1fx
z8_|VEavT^7c(d9He;VLF+ibH{zR{uOZ+ze{<_|pZz;f-i*Y<de16XUVwaTQEPFgYl
z{PUM-rkSQ<@x>P}u;`+TR^aa3Ji+g{KlIQ;<@Vceul<rE!~yMg+ikas4L97d%rL_Y
zy?jjr{vA;a at ISN~xEFUh2lx2@%P+qy0gZ5v4*27p7{EQC0UwC}{r20hjvL$u4jfp4
zfBeq(;Ms5&2mIGUzW{#-fBm4P{%yMHraj#sc;JBoi2-vJ&irp2gnz7 at ApY55!-myV
z5$<BaSTR>e1KhP8%rnnCrG<G?zL<F8i7Td`e)=-`<dav;)?IhqvdJc!lwEe&rH2hR
z*r3MyPCM;XF1X-=a`xG0SIBS9#R6U9^Idn{wTMl9X8D}|00%yWS6+FgeDlpWbv~xS
zufP6U=PC2EJY~+JiI|YT!ui1mA1r|L+i$;Jo_+S&a?UyDl-FN>y=pxB?6a5uhj3^4
zef;sqFEm(k$tA0wTJG97_~3&}G{FCkJMI_`d?4;=0Qkej7hhandg-NF1KoJzjg@=&
zi=RgyeYEob`s=T2UW)zVi!Z7sG{B!O85=avC;V|&pMCo2rxoUB_k($jFGr+<Jc2t5
z;st-!Gx%%c_~VbSz&{$WefgUsTMdpm=9tRe+(!fP0pgC8C;y6neE!u}UsWDr0e|Cy
z1-$i-6*uZKF at QHM+T*Ra-m1Eb#b{xS;+-*{_-{4ve)HdDmt9t4UhGdh?X+dI(MBtB
zg!xtc_tk<9cmo{<b>m+>jW^%3YN2S*#((^eGcK+Fzx(dHUJT$2@~=2>uh?h%qSZp~
zkgH*vZMLa-S#CD=gR#aMt4uiIgf({_dE}9GT=DswbIw`D9((LE!2}bONhX=3p3ATJ
zm{Y(y0*rHWo?NX~Uvteh>pU#)Cilv}?s23(O<(!mxC!_WXaMpe-Pm{EeYeJjXT?a4
zj2D)U;C}j8w}k&Fql{8U9d*=#cP#!e(@Zl}$l<uR{AmyvOKJq%)$(-PXrqmKP#=P8
zv=CePfAYyE<*BEhs_`HuPCDtN3Nhy$Y6sRl1->`m;*5VZXy*+4 at eKd=JX+wt#u{rB
z+{1t5kw-2-gZ};dSN<#w at aK2@ovS at z_0?CekT;_N9rzqq{snnSe&&1i81Cu<FlVQ}
zVCg_Bygf&Y)Z)=W?r1fzw))_M4=V3y!9sLUWAnW@=*u5({-?=`E3Q~M^FRLjZ$20Q
zxVQY(2F3vHp2Z!+z2}TcR(`^p2F}A9_wZMz;|}4Dzw;s8Tppy}GTsscEdJKi&W)$=
zZvF3^4sx>mH~Q$KSByLExCP`l>r5K>4i~vn+*!XYyX>+xXQ(Uq7{r0+Xn at 1M`|ewF
zlK#j|=6*RM`OjKgyr?;0-g)P(+GZ`rW*w9DoV*$6PuAh|#r30)KC1B9IgaKDd?91s
zweYuQZTaJ{*=Czn{?-*B-o$M9%lU)4`Fx^@CMx5NH(rJFamE>^YS41WTaIVV{ni_}
zgZK`2TF_ZtIi%}nIbEB$XU$`8!1|sBa`#<#-BmSs;)y3}jER5TUwrY!;rJ)-W!(Er
z1GOjqVnF_n|6|3vKG3 at 5F9znGd+svkm}B-phw!JNxD5C3x7Jphng{XEyc=uWXMKf#
z{A*oF2YO}RqJeP)bO77~TD1Ph*%2*Rxq}AA0UgY5>N;z4z&pU7??4>T3uhYeJ>VVS
zFYa+yO9B4kKRSdrUUC`!VnFQUZw>)E3?4kV_C>7>`lZg+uf)OQk3U}PpNxO}6Zgpj
zc;`HNSbvC3wJSZXVa(mGC2rZ|Uwb4=FTHe~3(N=hrmR2hNmvuxrx at C;d-&4apl0^H
zy30B;`+Vk2`S8_OU#&17nisuazRW%nYfQ*_>blond#yb8+;ep=QeMR0{pwHi=$mi8
zS?lHz at yFf4`W_M!$sf4WA$vj50RLQbjuZaT0Dn+ZSWjnOR8Ir`;m+bN&hR(CS#MdR
zYXcYi6u9Gd=bd*}{<s4j at U|Zt{$j4>pLs6+W?TO|j|QxxtsB*$0ZnigD=qlJ`~-ZC
zH~wOP-!q=&OzY?Hcb;`MYi*2s{22e!0r%T(yRD7`?Zy9mkH33abvpj~m-RwlzU}Au
zJ~rH=gB;nyd)p)TyYBp%XP&9GTJ}@a{c4=RXX7{sf7~H)j}PFCdo&RLGzK{fe|vi7
zB2dpH_VFLl*bjd^THm{lt7lr9bJzPK+Tbp>STURZE_~(7>#x7Q#<wvn&jv>vaYO;@
zLHXS})4rp42DwkZw?2OQ>8E?}oqdDsO{$~p)!;AhtM?rG+c);xYvGSa_{XO$SMSK@
zRu9kn%=+H5)}nkz1N`;L+R%PE{w?Hu$UKL8_*=)eyy-xr)KJdVqt=<hlTSWb`B(DY
zKl<%xEuIcG{dW#H#HTG!*S#b6L<^tYhqv=+r|<F^-{YToli%@AUJq}6Hm>pYtbFJ^
z^B-%zlRvXQW%=E`<~?YA-`4#2wi at I!{`!nV%gwzIo~;dE&*i?{8~$=L9^zgMfSS<W
zAJ9NNwETv3*W{iFf4tN(=5m%+EqCW)9&h&o{*J`Ie&NMBTI;;^e_wy&?AaEc0pH>3
zH;ZVaP494c#`@get~`}`dAjMQ>(z_S?U7{<(7o!|K#gO}zxUpI70%TeYSUQzwem;y
zLD=*yeGUKETxa|8PaL?nJ@*;ByM4apPY;LZ at +?j8GRLbK)jn;_>^F_T+;5zS2^z3C
ztI5ox>Ib~R9xjW&S}jNV*2ZS~?mGwT8rzq@=hA;RzWpnk_VT^=d(L~c;h+J~KrPV5
z0By`|G{8r_X at 58T<xTu?A7hL$dferGb)q#YpXW$_%zZhJ- at -Z9^*O(}rO)~e>9cd1
zwAXy+8hGAk at ABTfM_b_^4OshG)@F1N3$5>s1GQH8rydV?b#-E&R(_XnxqH8U#HLT-
zpU?W~8cv;losRLPc2bLi^=0NIIXB~zRTEnyoqY1iwa(BM9o&~Ss=WcQc4YlNXg@%$
zV=o*p`7s)ad+l1!>4$f at C(y1vSGCS9x7<?O*1mqI1LBMHqix%{HFKa3*^iT7^db8R
z+6LTd0M=#dSh*W_ebBb`0O$jMwtX;9Yd3p1a$MSH?U|_c^aDrj<2UQ9vsSpro&ZZz
zZPEbu=)c@@%N5WUb$Q#q*tf1#gUY?by7LO~LE29r^uu}fv&<(rgL#Su)}f$=&7O?9
zLtRQQeKSX8PgY#DNKK<Qe)!>s%iwPPYp*BZ6Yc7QzG#~!+O{X6O>KcbXp>bl>WB5O
zJo#7cYZuIq#;3!W)h~VV4sB;&*E#O`XMI1}WRsO8mRO?K4{h5oQGe+}+NXnlWX-0=
zu@=eRoVL?`?Zlsd^r2tBeiho*rnYhS*}kA$rw^<)qrJZ9hkGG4VPe_$c<RH)AAeje
z?m3*>p9pvHpgnO7@@w`pSl6;&Vm=$xU2~*w@{#t$viN1qXWAE!fmqGhr-%H%-FDm6
zF~MrX9t_ws$@-ejZ)x_QQd2}9{m}l<?%K#YA~i97`e3fnhqT|$18;Ws3-klhHmfgv
z`QvPS+y4Q)`I$9Nw6E=#Uw*m57}P%9_yOm%%@6W&i^Oq$=g4m!YDxTY2mJu;hP$}X
zehd7gf%a*iIY9fys`m9O{cumtU55`p{IL4d*i7DXE<b^K-yCm^3hGtg%cpV?jU3u`
zXv4uDX)Eo<YS)oISl at Uj7zg^HP1nH~Py5+t(7v|iMMv7NAG&|izBWgMv>j`mqW$a*
z+bhOD{m{Pe)4p7x?Y8~&fu+B9>j$Krzq0zRPDmfLZH~fS9|m{xN!pgjqI>vilim)t
z^S4e%J$3luhxgXg)~@C^zbUK1j2mN0J^;DMKBf6c4)Lrw4CHRlv*3CA^FzC_nYq+E
z@*Z=Un%4fGcX(DGw9k4jzYVf#V{?x7^~3XOBk!1T#u at 7#oOV6WYE%FHP79uG^PqiH
zzhUJ67W~hZG46jF_}5-%esemryEkVpR;SSt_`{x*F%B7{p7kEjdd~it-v)<t*MI7U
zJfHZF<s11b|6h^kJgZ*vyx;%--}8A#+V`w}sLRA?o at Mv#{!eK3tWx{E at WKnVP8CDe
zuWAQ-cDav^?g9SDbMEo~d1_qu_|B0rz`ECW?(w{%`|qe7&)FlekD0x^>=oIY?Ut(@
Nac_U+AKi0t@?TT3T$ca<

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-decompressed-etc2-rg11-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-decompressed-etc2-rg11-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..623a6b5fc2d62f8f744649466cd20b6e67ed1304
GIT binary patch
literal 11016
zcmZvi33OFemWGeRvTavet6FWBwxw+q%W8^pX)B=8VFnSQ#DD`s$s`2=X+asp1_U&S
zsEBA7WG;sQAxvRP2m;CwWDpD*AOsSoL=sFw$oMjy{{D0BC8_GlTL0ST-FNTV`~UYo
z(|t+o{(PVNA9-Z^t+)L9E!SOt!;RP7Va#>Ln49l5rq48Q+w=K;5dP`=e+oa`Z%lQy
zu at 0B8;J`j(KX~8RQG>DI?Lo%I4L3G^nz2dX;2dL*&&LW&j6E43EwC4s8hd7*vFY@&
zA0&@9cHux{S1mC1VzIGR^~M(20JJM;pS)n~6z+Yfm9f8V)(D-A9W=_=H-*0#JG`H<
zPd#aDTcM}79iQUbbH<K-%j2by#y&TI_@@{<<5Oe5{odI8h_R*k5q>E#wzAe(8$jIm
zZZvi*Tn9gEY~Nm<`&!~T at R_k$Um1H8Zn9a})A0WVdp at 2v5dSNi;U>_|hkHI62+|^B
zD%_<3m?k>|4T`)D(!vsxP*Lf%*uKr!Ht_Bn<MH6*#{TARV;=-9nizZUZv*~lAT6Hg
zfPKc;=GczdZZ8@;;RCOMba;iFO(Iv)p%fh|#UD7owZ_h#?0L_IzuJ!XO3yu8{AU?k
z2(Lo;+chB3*sFZ5!rC;jH{j2;i__su9`eyHl3;8xxJcg9LJbBQ`{f&GFpPLscpWUf
zLk*lIAEn?EawiRjllwvBy*)a#0LuNtt&DwnsIk%1fVis$#Jzcxu~A*T2C4($71hJ@
z-cCY`b9vsMs{wRZ-o-ls>?Ky^`~dNbdnpii3wLM5KZ&@xCJj!bt8$+DKgLdf&|`mp
zxKjgv&;KHt)+HPJ!wkj*8YE*+t)Rck2B-!s+(Sr%7G20cc^7xJqv8GX>z;dCbP)IE
zExm0+Tl|Hg;!pmc4!DOpjD6E<PziTo{S0Gw&1S5Equ}hq23TUwiEF_3<TqoovHJq#
zqRZJ2jh*#0AilHzYi#{oWAol+Zs4BX-~jDRuH~=wC|yr~pHl}fg9*mw9_E=^^t$4$
zt%83!AhxUEt4)kY`swhbM-1&}$k{W`8at8pI{F<ji1E>a8tG<iYwmMs=WVOD#<t_S
ztnwc-#^dWf^dEsc{Kb1ecK;Ok!KX2DzA$z>yeIee_y|qoU-jt!pVa5=p8pZJUuC at 4
zQzJ$2JqYhq;uHS^d=8Nl at RtV3Xq!L{h1{ist)Y)nV{5RHdSlDcVAoG@|Feg<hZ-bp
zY~U{q+M_{>R>pRg2I3D|bq at Gro1=mFN5kbUIIX6ZcfncQWresu8Qb#?k1_vcY at Y{=
z?E?CA^61~**jItL%Wfd9kh}es*td8M@>UpoOuXTrK)nlZzd}7WGxqf^KKIFJuzMXf
zaFS=>9trqM1ECh~;xC*+1J#1KC+!7r5A$D8Y^($K{fRlDH5!CEh=21Z&;YBpxQB?D
z4rk?^{I4gz(T at e(e}@&|KT>&rtpWY1yJrIK at x*eKdO1tpj|8?J-l~BLY!TNp#UI{-
z>8k?}_jjp%<z6VJ{xt@|8i<g4R|AZLnqV9>o*&;|;A>wtI|try4*AbvEW9>}wGt at z
zEt<nw+{wG at UufC-Z?TkG9>Dw&^=}@X;nw*sG<w9?aRZnihZ-CERs+V5GIki_X(={y
z8S^6g70Qyw9PF`)9%(Vm`_yXM5M!5hH}(yIcIp!1O+_D|JwwSNV^4sR^URNMsjCKM
zXi$qL6#yNiM;$qKa|8Ee=h4Si&wJNCatOu|<Bw;lw;zd(y2?0%&YzNda at rV=JZ@}b
zgxsUiKzJ1H(qJHY9>=~X_U!=l{~_(A)0pR90%#!qHSn(434b6PS;_p$`f+k1kOpuT
zvX>Ko2DNdLxD(MR)}s#Y`Ji&Y=k55`8(RkVYHSfaLk%2%^wGGe0?NC1i@&(XevI#5
zJhr6r9J*C7$1PrFY`^|qhsNC1p2_tAPm*WqU at Yy<<XwnnY{v}nc^B^m3yob4meN<K
z!FIIxd;a#D1`SjT**se$?mN5&Y2)Ax(uVRGTZiBLsR4gDmBBB9y at D;oYK{7(ocmM<
z*jlbv33c2H&ci#*eF=OMHuxG4cWKdh?3~VFU%|L}n%ssue6!T^jw1ICaDSBiM**h+
zaf<)?c#vf58u(AA_PhQb+|2y{kg<OqM(qc6V7KBEM8FklLHh-9PoocwgN;wYn?5VZ
ze*ye+SUYpj;Lswtmhl{QUkcYk^6&Pm_3%W4I;@));apWon`^2AaTZpr_I2QRpP?VF
zx%_jFYQTYZs7G#&v0Jti%NF*@_-{omG<m?-X7 at JWzT1s$dN(>eY3zK)(&|<0m1eOX
zJi*)o_bzuZN8Sl&kNzWb;G5JpaX1{of|`BCUgp|%xW=_*-fzdAlJQVF-ow6Q?9brn
zdLLUI+#HBi^Fal<&Sq}NK89YP?1G0I3#tk3sf3?w?m0LI+K9WZ)q`3zlU8a=N1+y-
zYk2NEba(vWe(Np9-uBN85dZt&FAZ8h?9t*uxWilg`+z|q3>tuWO^i+H>$w+yO<oz3
zU-CH)$nJsro}M1b?chGZ^S8`fN5SjEi3e<$>#-B<7NO5Z;@pT`KG9<n{pK>(iVEQw
zK?7O%UE5Cw{A;m}zcc{u9%+FFT64dfiN9Xt9_}Ikn{G5#kQVpd;Q7l&qd^z=EAL(4
zIuh=&0yVIK{0j;2mj(%Nod?FY_1skhf{iEd at 4=b;X94AYIU0=a#9kisXpIH|7Nf(W
zk)C$}&t{`R?oy8(=pbxd4tMe{4TK0f6y<xK;%?!r at ggYyLN)g(_y35$<4xWN^)>eS
z=Y7tV|E4#f)hfn6^*<5~#C<XvEWs{;|B?3a$0qzMXvtoM=f(faah`Y032#f`e{_h~
zz%FDD0O!$7;VuOHm5&X>Jr1Hzg>(~t+PTVm0L`_>lR38}dhSjGc$T5TrCcm+ohj<k
zARGrS at 8rIY+*k9R#`K7O#@++Rd*H(>1cyh7C%Oys+cR*7)0`O2F3e|#=NY>h-9KP2
zHRe~weg@|i-1`}rOnbz=;1SkdxUZVPJVuN*8(?*YIz2W3H8A&apX<3jXe;N<=#xFt
z4)$ed=kpF>4EqJNSQkL;pLyP4Cfulnq7~=?>~R3EdU7w6=TH}Dpz%-zSM4FSp6VWV
z_Gj*>uRzmPXu#au65itfD77u_dfy=aO`CAW26JMK{RZw1 at ZUU;yrV(i>pi;jY~P#M
zYcXb|fw&j##~0i);hoOhSpET@$$t^tSHNAEJBaZIe{r9I24B(M0q?VDP>co_$+`G{
z&=GLYr%|kL(g6N;BY?X!sN6|A4-|XeMVSHri07~ULN#!6B6>Its`+j=^#lLa)WEaU
zz at woC(gAd(mN$quxpy|mziMF2A2^G{zYV<GV7r6o;qQP3nVZPXIxM_%;cu}A at uPZ4
z>EijnaG$X+z)KiHdk*<eM-%0~nB1uLg^P>OVWhE%1Nbc7KpN!E_HcE82K712bD&a|
zI?$L<-u15K|M5qMD(;a6sspFPJM2%;UGH=R)qDu${xF{fwfl+xzra1ny=q}ZBmPD3
zx8e`?wOu_@;D3<(t-!v~6wdG#_qp)>aSmrB)xY>F|HNd8O^^nu#CDRJw*_FoZ|@z(
zb5r2E0v$m40q`U9ApBJes(-iUSu6<WeK%InBwP<7^!YvUZu^8Y8OTduj{KH2_Y3A}
zP=MYUAU(+=`Agm}bYM?;3v~lxz<YPGH+qP<^EZr*Uc|fwE<@QbKE-(%yx)?uJerNd
zcE>(Ujr6{Uu`- at Gs8?YJS}p93Phu$D$sG1IG2>VHKEH&|>9kA8ndUdz<;;br-{9I>
z+Qd|v4A7u7i)+k-+9!l-zWCP!2-kvqJ{O{c_MFnB<}w!K!Tk_g at A;H`gAD0F4B5Mw
zv+*PBO at em|&);bP|1ofP{Fy&er@~ph!Fc$N0E0sA;tx{AeII~(#!7S=$k`T%zlFbY
z at A#8jn?g-;ueb}+!SO}|3vWwIKgWCik$`_a{I$-7`4)eT2U+PM-sOxDAp*jBaQg^q
z$JH9OA)7%g;%xI9f$RB4s2#KsE^hI>m%x8|FSrkd(*%#Dv?sHkw1IaUazBc8YH#u%
zV16g^KZ3qjH^Lg))PT54hfDZZ-mA`_1@;)ZzbyW6mpvKh`McbU5B%L+2WRD6e1)(M
z+?uKT1nB~2y?4_0S7}G88z5~ii#zrj)IZ1%?8W__zjD6>#4jeFU`K$p#JDyVOz;T#
zi at WgiC-m2tKb-5uA5?+beVm8DC2%;NJqi4U_#PgI-y>e-KIBCF*Z9Lv`{0nj^w3`0
zy>FAP0ph_kI%l~(GFI!S-bIDlh0oX2aW8$S&vL$Z^J at _`K%C#s^;o}va}%}u?Os4_
z>`Va6bNU_O;0(stM2}sA(F0`8#t%8R+XL)mZUgopIF7GOk34kw0h~rx;j5R7{TL1Q
z&*MI7QvAhF at 6oge6!clK>Nf{j&4tRh(?ELZUifRw*a`r5ca8f(p5m^(gwCb1rF>V7
zKGlJ4@>7)K=gLE9u>PZf{}H&I@%#@iV&4|v)Mvcg0(p%6ysf-H-_Cgu6q8^36S2YB
z?QO8R=<wC+;6smC+S}0ZG at 6zG*|NjL4}WoW{IQB%V_jC)lqXr$MJb$h&WsSZ;N}W(
z3HfkOs9$L7cqW8&P_0NWJ*#uMP?UiNjLA&$pAyu7>Okih at h>3O0 at j=2fVcQoWiyW8
zT#k)g^6gymei at X2jMc0ctdAY;H1>}`@6$eh3E!-DB|Kk(4RbH9W#rVYdEyE}O&s^&
zbNIVZn9~aKDQJ##^CX;fju2m03$oG%z7E_M&aLXBDB!Q(c#6Je%~I`C11VtX6!v&S
zJe&qQ;J?-9J>*{w|424{!r!3)D{xKx#l10xQu85q at z*-;YCoud at elLu_$yv<$Lh1j
zg7$`j+KoT!n(95&qLya_J*)FWoyJTFAphd7_cgNW-)VJ)Ys`mP<U5h|;JseP{x^G`
z`+n{5BJI^vnZuW(K{9 at h(l_J82B`mqcCa2ho6g?ycbt>1$KK{`bM#m|h5Jf9suhpo
zQhtJ1#b4uHJREPV`;Kd>)oM^DOK!DKbaO*+f2g11&NZh;@SU6QLjF9bIZ*w(`cRFi
zR_Hf^28GOhJJ8|9_6_`{L-gau{w2Vy-kc*B(9bTOLxXx*IPW3v?@;H%TYBDu;XVo-
zWW|3s>wwdoxSW4-bB(`ZZ3K5;7$>$)It8)n9h>GpH}{iM&HrJ}Yq<9xK{^UG++QQV
zwCmwr+lYTSZ)Bmv?AQLb29A;QW655F=>K3YL?=t$T^;OVo`w6KSl$c3y~VFQ|4DGy
z{5h#3zw33QX32e6yIQwh45|mk7I0TxhT|aAz|HT}=(Vwo7K*zTTMep!)_?s*taq?_
zA72;LnR|vhyGXx<@D_i~r<M4;HU{Kh`3Hr-=}^YLg|*P>KrOT;_o at NqUgJRhmczgN
zBtQ#sSKh_Fhxk+b%Dd`+Qa|ojJj4+4FAF$_Yreh<*D6`ZT~@iRG}hc~O!ft1w=QL`
zHkEVyc+OdG^S<&EG#0piYPm<=JS<2V$GBa_xIV)iO<$F8U(S5~)UzI4v0bB#eGI7G
zHkz|>e=w5YE+=q~+{$=|W0gR>6Jv~BiSK=J?62{sbA1K<g~-Ey>HwZ0uB%+ndY`=}
zSWO&Ro8Tht11Jvp41GKQorod8%fv8nsK-yIy#IalC1lG#5bt%bHefzAmNo|8aMycW
z`OboWK1iW`?s$WLX^}{s%WpsWm;&@$Tj*alssq2_Jm+JO7V^Ck4F*5pq4)8l(92oc
zr|_xsm<7^8`p5M2aQ>;MkiV>c=RcQ=Z}tg^JaaaO-&lZh5c*dPQN*A)VyMF?#*`4#
zi~m!Y6kr6tXjhSsODTZ<eqj7=dx1SI>sjtL{?}t6>o|JVUIx~~og;`rwivA3=yB*6
z at 2Jx_15Bl!+cY4Swc$DZMm>Zj7Ww~jIq%Q#5!0F&@LPp{;S#Zw#B&DayM4rWW<37K
zg73X={T?QtS_9-?kYC|MHnqz5a&cDi4hQWOOX54c|Ac#!UwbrfhF|*bitnyBab~-f
z-$_`j#9c9 at FJ!Nc2Kzud2>owf&-sHm4(|a;9=RFbr~JD4sJ=m`Fpfm}y&d0zG-!So
z>jb{VJqG_X at t=bKzY6$^C$^Gp;3Gh7Z01@|@;L-7q`jMKxp5xHv4>LejsMDmfIr;B
zTxq^r`6;|_0QaJQXMPK4#kCpm197w`-@^M&0gV!7bN=`ad<JGRZ$z^;bpyn`rVsPs
z9QHde^IHe~9KsfH-<8$)%L4g~X<2Gi>!_O#BjgJ%s{dG?iN!kKi}4TQUZPI$t at E{z
zFw*<hJ0kgB`~>ge@%;|I*L3s#bxz74_KU0W4>G3t7 at Tin&|XgKgj*}?@J~F&XQ>b3
zP%N4F&D?;0pjhNL<iC9+KJhyZzeB+j_v80f_#6%RQ=9IrhTp1F9#_z;md{sqc at 66E
zC*O*}?aTSxc>HSLR~SI;k|O4$<6wp7zgW71X=pHwSfu-cZl1f{<ozoK?LT!E6aS-Q
zm=lP>o$KMRS`7C^ZV#Xss)z at xy`AbqInudLaq1jZdY+svVP2e1Z69VoBMXjB_qagK
zTWY`d2al8Z-aMDM=TQ^HaFwy4^+(*b_jKzqZJnXC4(J>u-|h?|i_d!ML%s#AUzZPf
zpNe7mB*q>-uL>Cfe)hf#@ZIkB;5K77;otdYy_0`&b9>>yI^T+c&x%QW!~LH2K-%N#
zoS^I4(-nw2z8|~GV>)@*iUwEVuHSeI;4j`i at jV2Ldy(t%9YFr&$F0TqwPirs1Dzwa
zkJ5fZ`)k#z^NkJtYi=t5(%>=Hhd6vs?}2}~OaIMiE#C6|9 at mefyWVLyf5agF;a)%*
zo9m6)#JswReokP8bmGqiyQ%;5ot$G>Pi8U?cZ>q8ZJnOxEH)C~pHr*EqGvzv&3SAX
z!0vw2Kc9kKM;{eDuedkt at crmH^&!O2&%my%MXh+2e$+?q7ykKlp3Tzp34rHAB<*I5
zUSJ)fpYZuV-0%Asi2d+RAA{o0B8CkUcppRjN9gA~DCAki<1|5!xH0I}(c47Yy>4e;
z(uwtEG4Fc+%vwrpY2!W4F{c(XmTJxd<qs%dmrwb#>W>GF{bFnYo*hO%dREWrf2vBE
zD=y4pe|IE!HhA9cq3K6fXU<E9 at Gbw~T=1Npoidp5wv7AOKZR>b<7dO?!#;Z9e-8fj
zY$A5Z13cfzxB8gI|AZ#Ji=H3@>{&=19HVwev2Oq~h_`z?eye(p?_TluoIrzo?m2PJ
zSp7d$63^(lx49>Yd%otmeBHx$(pmr85<>Ut`OkF^edv4s9o5Vt_diVKJ>weII&c~-
aQ)crST)AK at +f}n|4tg@?Z>0SV`Tsw4zE}(Z

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-decompressed-etc2-rgb8-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-decompressed-etc2-rgb8-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..74a2f65bb1c7931bca2b8a802105637ae728edb9
GIT binary patch
literal 11016
zcma)?4OCTSy2p22E$!A-Yvcx+`B9pnIeuL=P%%Ho4^X*@mI at RtbuCeB(9~IykakB|
zX at F^0n`i{Xb&)P65UkMB5<ljmUQL)$M`)qQC|<Nd<Om1+-{=1v-pxK}Yt62o?>>jK
z&-?zK_ucQ;KG`$oyxx20(1TAs;rGNNkN#7KM}B2lk64z~$=9-8PxPe0^18QR4*vad
z^P;z9!Ew~q*5bm66WE=cjCZ1<l+?%okeqc>m9o at O{PjOygGtMGg at YX5Fiz8}yXN6y
zawtx3oS>wwngMe9i*>-|JV$PAr$7C42Jim<_ZT^43i^#0;YG~bE8*nT8Lz>~*vXL~
ztKxSk^P at imS+*(-iJK1~|JX59-MwpPc1zCgJK!I(v$GK$9jzE|#(<pM5$y%NfBM5b
z<yv}#I at f=-41{r at zY}_!7%<(pW)g0dmowXk9yx~(tN)_at3d|#8R|vP7Y9Go-^5|c
z%r)w5;t;=eD+uGjgZ|DKWF$r+e*S2r#D*vbH%~(OzQs7PeKyX0J|9=Mjz&Xzh=ROG
z5c~CsIQ2H}+7>p9M!A5!3zff0JibpDt9%jNTm2b>WBK`7o?rSWK0Y2~*{XQVniqwU
zV<#(PCQJia at OF&8|C?F!r2a#dp<^b<XXavB*i!j>yz<st8xbD91~D;Pv1ZLKRNTI;
z^>1Qe+!=?0?Q!bN82lstj1Aq{_BRi=l)Tsf<)QwJ!@Yu4w*NmG1A0H(`z70--o~AA
zpg+A$4Cqf*tVvOS<8I>Mi~;Y1uQ$xX_a805!Oh{CvTd9Do9+ALj$kj2%jcb-;4SQ#
zX(2ttLdj|iw{~?yMbaZUwWhC!&3$oU`^&iU`DonQHwhQ_Mk^UB0&sZCRQ$QMUBcX>
zjg4rL^OlyoaJg<H`_LgouUv^~)8;FS*KEeDH-D?V_t77bk&%Zva~8qhKTy*#W2R%$
zq;Q*2!Ba6|`oBv|LZvNzfF)~_l&qo>)QP|GW=c%IX2&4c6NA*q&e9Kd##hV6*erPI
zF~s;->QDFEpZ3H3tUek8r~fI50bv}BKU4aDF88MG-g+|_f5xEp{(X&s at u$0q!NF7I
zw!evi)1T)~f5yQ0Gi3~nH`@V82nod0?j4lqA-yndbVns3#24hZ<9aG|=Q->C{Q80F
zj^a at DH!)y4$X?seX44!CkwF&Lz0n;zRt`aKN(ge(V{y4;r<hl_(i#Lu!Wi7R(S!pB
zeo%LM6V`uTUNLHF+%~gjy{UC?;t)6~1VdkWRqLPrVbLpXViQud&9nW}eev*awm03$
z3K{#z#<=kco#{^47U)i#^>6%nFBty_e+$IRUHs{;{<jaQzf1Zj at E(x5C+46(p)=b6
zQ^tUY at n<Y}e-qvVi~;>k`=|e?sc(3Zv}7_CP3(gJKTG+|%iS^dg?~oam at ZfoH4-bA
zzJ#R2aW)CDFCaSXaqNB9A7}qK2Nl~NN6qeM6rTT2f~9=F!~!`L_ZTv!T6n*eQW;B{
zWZbBhapZ{fpKj at 2NafirVsaGC&F2;1CwWcoDZD2b7akSW)u^efQwmRB1W8QIK<Tvx
z6iJ&-Nl8aV#cfT8OB|d828Lkd$SF2-5A?M#byRm{=(CpkzdfUm`X{U&0R!W(Yx6iT
z1{=a2Q-2f;1gYQmoTfi#`l90F$5FP<1O3VWelih_N0xiJxA%9~>_uJOpVZ%^HFZ}|
z-~4~-ZT$J7zPVZb=}mvS^PJv<ao}<5)-B}Z<k&G7I#lk3R)3zG`cIJYpE&EEG5B!f
z7$t3o%;N<56Z*3axW1k41-=;!#^7&TeKiJj|M?Stb!QC9Rs<<WBm6b3T-P5;YyJPt
zbq0UO1u(5`DOGpIK<^1 at 1I^9#ipt49RaJLop0HI at zL%Sui_4cU>z_ at kFXSJ_Vy*Oh
zLxu#~<fX3A_HXK+ZC`oO^4tR}UR3`BSy3PbnG3Z3UmswBEE{Iw>vf&%7|@@%(+6t|
z=#C?EkRA8DvVWS7df(VMThn40Q|Mouw?ayI6fRUKbmuwip6Hm+>R(q^^FSQ(^N)e>
zXz#6WKI9*^k!s0z=b}Cs-nXwZu=hY1e7pL>-`5wj$B)PQ<uk;6BREf*Gps8{%hDmF
zQztCyY9Ub0lScHDsbQ!LsFS?7mL3Rl@`GMT4Yja;w1u)rKir6WS*cn-1LVN&^|*1N
z;K5S5$^fC_bhZLlvAlMGQn`lQlKMR*X?;87rQ`7QsnU<g|1Ec0a42cA?f=}9PlC=)
z=uc*j?V-@!zmw(V&lng!9&BOXq;7T$=$*5)gSs=N`_Yh23S(jX=}zKfVwC(ndq9e^
zHX$V;!cNl at LSVRk`ct at T3dOFp)%}XxCfDV4TMQao`%F&=>RZPYPd~~S82<r2KA?Y>
zE?vCv>DW>IeL7lR{;c~*KR at j1)=fD$d^iZ*O$>M*Kh09A4lD#g=4`l9gK#auU!i~g
z%pNkw at KItUHKaxc;Yj>wr8*-L9zrDzmG=fH#d(PugQlhnAoca%<NEclH4Y{gj6qu*
zJYy@}o&IzuvNTrzh=>S~pnw3|-`W1 at -rhg+x#zsx>7W1pAdmNr?Y9597$1!RV?p<L
znL|4L6GHrv88=(zn;w69Hx<Nb97<CHVQ7-MH~k6S+5U|`W59Dy3_P{(`M0g^+5Ypl
z&6M?@4}8R%_;vPEM)e<su;4JvnK%q1`aO;8q<$#LnkZwokE~&29y6+g_*+Qy3&8f5
z$16NvEd2<H4Yagvp)^67ryy&Inh%0;QRaQ5G&TfjGUl!u^Afhsctu(A;;)bxV4*O&
zm&~ELe&D*IlaeR*4dHhf_?_;(VG7Rg7QG8-6mMMpNYQf{O`2t_G@!)=G)oMc+*1E7
zsQO{O#=z-M_t=P7^{2b>XAJ01a$^IrBdizZTOGZaBr%*X_Y(V5_N{cUOq+_cOZ#iN
z8)VK$=uXn3X4>wIMcUL3>VHM at U<^)3KS}Sc(pQkY(9ZUEJ>V}fF#e5y*`Vjm%{Og#
z#sK%ly;<DdE!zH#|9Yu|nLVDsXt~dw(4F;8=zmJeRIu?$^=BIhvO3$mYIVVExrYer
zpZ;_&P7F|YmiMsC{WD|@P#88u{TIlb*opCH-P6B1Bf#cJd`HQ*lXO~hmCHMap>oS8
z<<EQG0a0&p*ES&S|3QCoZxMG%&_oKf4HRsQ6R$YzmT~TajB^I#?(}C2SpRJQA)S0d
zZ>EHG at AP*UMyo&TjnJR%pZ<w*y>b6={!2Kz?M=J=8~>()@lwR`8Uy;%8P$olfAI=G
zkoNxC4qE*o_kagUAnx)%q$#LB-{Mho5~ucUMxN|%k+V5V<*g5JW&bpZ#du9m?HZ0O
z$^W#(pJ{^Bh4GG*dp}P40p82u&pe7hy!AY8>|c(|w_cX9&(BW7WuIi(^nV4 at aXl?r
zV_CXJsx4Xsa#+U544EgC%i8JA{sD0Px3AKi+aJ}Rbw%UxS-^FvU!nfTWw at C-4(Haq
zfX2OZlu9YLo8>-tMCJ+A_BzU}rC9A$X9&3e at xXB{9Wr52cgBFu^fxgu?o0`toiU)h
z at jv_@6V;vmF)~*q#+&Yh>qFztl<tfH{bfJ}z8#2`yysE(Up;~EhI#pG9C8+D4BGoQ
zT$4GG__rON0naVg%|eU7{~kQ<$XIg2rmnIQhO**f9L-Hf?d1|1S9LMY9r at hmZe9ky
zUAI*0pKTy9(n8ug>FZiy-5YnF at 1Nh%X4fQ-dxOju>CXD6J7Yk1wt=f(jnNpe?g{Ij
zZGiq|8-9&qX}hd{^_K?TBKJDs!PG70%>w^p6dr!uX?xo(Eye-e0a>FflE}F0#Q3xB
zN#PE;*B$JWeK9BW&zx<6?&PA(7wJ!Tg2I04Pj|xh&lni!PqJTsOrby9ucz)G<}YKR
zMu4qAA|Z1CgU*R$cx+vA>-b>CO&vR=AGs at g5=3TH`k!>Pa>3QM`IW?q?IbTXQrW$8
zF!H~gfaBl2rkwd~42ri6QNG(U5JwYyZT81>#HHOGa4Y{=;JB=tgxiPuDL5tf!sUr*
zD2-Jv7KVXTd^%Z4k^M)){Uo_S*LqU0c1NSsKmTjicEEeV%Uy1f7K4lpEgT<o{=hNR
zLwkQSx3uS%;?Mi#Y|gp|{4f2u1oStY{A9T7HwGv-q>mwVxBV}TgL>0lU at S5c{ct#K
zl%_l{THVKv0b^nIlA4;d at DKQV*S^@v+?Z8vaLZ+ObC-_N)Vn=~c)Ag78`@sl<)AO+
z3u;d8&=?#~dlmT~{u)flH=D*P=hNqbT+0nnT*Z;Htcyf#=_vgDLLgif6ZG6!|K+lO
z9OCbbAU~ON2vc5oM&_;qWc*IHVcmQ766LnEV_*u+e!uO`=iN_#17pxA&Wij|riWg0
zCyhnxSJ~}Gg+2dh8!*AUma8$ibYQOfGX}fY^u%XNdn<JR`MXu>%oxxe7vj{L?gqAb
z1O1KntG&DE`7immxwC9-{-)Pw&re*qDclzB2rjuVT+(Yc$Q5^`8>rX2#dFWJ-Z`8@
z%E4GT;SA$u>wEeE{mf0=mAW~$Eeczuo=EVJA?V+|yTbEqS$~(wJkj93xDu6z-vG*j
zJX9@|O`bM5zv3J_s>dJ<kTkg05ZS|8EBj_LP6^KWo~Ilh_qGUl-ZkSwqx)wxy6c5|
zg7gcrHfU;=^JW+BH8;S0zsU<vf8g!TI5=lmCN7#&(+Q1%i9<w4i0#ifM94hZuu0Yo
z#Th~B-*D6)q+G_q{B2Jt;eEU5+>$Y%KcRm~R*_`InGNwAEQ9BGm_OIRp0UsEx(l~U
z`bC$FjdBCH8{KGXY|{SxUgJHD2V-I|Zl3R_wdZiY?>uLjOx=`~6=Ub7O_)1*GM<vU
zBNqw^ly_#%#Axx-x^GC)x_A21ozR`@%M%;7BYDO`t$Tft<8Wt*O!>^b at 2>bV5`67J
z`T=>b<&KPzcVrxpA)mM#TF}(cjK&5x?lnl=OS^F5bYoj%n|HQ*GftS)Stl%4<=L}}
zi37b2jD;)?J=~bB_0PID?(OTJ{_4&LS*`vaZ@%Wb_olk?75zzjf2)&axytfzI$NFx
zZCa#o&!tq>s0Qx07`XS4owP)$Ey<E^u9JO+tN8ZYFR^gpLS at R7c_2YSp_+z=FP3Mp
zi?M9kd&-_Y`7DxsBt!(-d9w^{dp&J?KHTqN-rVyr`7`yD!Tu^_W at g%XhlE6cj2k!0
zhGmF}iC4~_uhI+8CohDPqbU*CyE53uJlo{+JwE3tls$-2S<4chU%K?CwgSi*pHuO9
z-TUuvQ<$f-3}eU61X;d(y_B~=^WGCR$X+9?2<nV2Z}bOKVxBEAf08D935l|nB+Q?&
zXC0WsJS$@UEK7O$Eya|><Zsf&llo$84|(n(@H`>bAE}8!c3PV?4CHju)5<q8juB+O
zjhmaN;QRNc<1fd*kZs2w6_?AU_ZCyKfBzAstgISGkCtNn`eY0mG}b0r*4(BHOqqA4
z{QiJxjO<M at UuPN4r~Vtrx!6I<!}2$I^B!lu2FAu5$K=^F%fkHoN}poj93yV_czISC
zAbnCtBt89zV#>k1KbvnMKdg&a{)_=>I<Z~$J`$yU#Ok@*eNp<5i;`_aE2adVw0-`}
zlX(-Ch52U<>tn;%|D5xh#-8#2cvep at j%=N;c{3%&#TlA^W#!@4a<tEXAqL344~ZH(
z2-9SpdLa1~<^8B9u(W at 7oAihfK*s9|8MjH1j9J-BMqty#uE>zJ-o+igq`mfO{XIY*
zX|I!IA17S4=MUO=_o2-=ktu!o@`ai=Q<FDS<{#SGvSI!vU*?^{@l&4PIrC?pECW+=
z=654KW%%Y at PZ_jtG~**<A>(|_McGHqP;%1VfRp(Hd|=on`*k~He{!Ad(?!Z&C82+r
ztaprmUCt;FT$8nkK!1%vYyQT+trkqXFsb~-UFbnhn@$ucKP0aQ^UqBPR9FsT;?LMO
z<OXWqb{S5FsXt=?NB+#)j1{Il&eY8J&1d-e>({U2_!n==bNfIUvt{pD#s!`q+t$P8
zmOTHdEt#mC&h97UN<aBbgmSrPlYC1Vze*4D-OhX;c5Xh;wEoAB?0i3$F at fb^o~T-`
zsWbn{Pd^R9{M+&_v%Sstdd6zcobF-sJM%e{7G>?k+9h)_q}Nl*=EdRa&%90k^fvjg
zl;5x1m)|fLj3d9#oc~hlsRxsDYbx_xS!BvHp`CXAEQ5)GGw(&ihT)L>hQ{R0)Z}Gc
ztw$}Z{qNi=l19jVCVV;<vVn<`k`g2(B_TLCSeZL_3CPZ!S*Wb6)87V~-wHA<TGUmq
zFIqiJ)~LhudY0aN53e)d!8BU-L-`EWJcl;<^IDdnM4p53IiMk5em_=KRVB|n^YwRP
zyq>>dFwb$>FR%<I|8#kVM)*C1*AjDVSvnO?Rs_fxJhi{<O~_mzIv8&b?kT@}@=*WP
zbexgjNy!hT%;lQaoZKsGJ`d(Peh0tHdF{ilH|sT~=DhZD5wbsBtMD4bM+-dp^LLZx
zFxQ#XywC4oY<LZ?XF2HNyq2F$lm}lwB+r18($Z2SCMGIrX=&02TGIdYQ205%$Ip<$
z!a`Z2yrb|pb!2PI036#Bg}djIC5IDU`(*qq|HjXlzst{2E&le79RK<YrTo-Eea-jk
Zul@*`u3BGiUy3sYThKwyzf1oe{vTo3bd>-A

literal 0
HcmV?d00001

diff --git a/tests/spec/gles-3.0/waffles-decompressed-etc2-rgba8-64x32-miptree.ktx b/tests/spec/gles-3.0/waffles-decompressed-etc2-rgba8-64x32-miptree.ktx
new file mode 100644
index 0000000000000000000000000000000000000000..a90ae7c7ae247d01ad9c3fbefdb3fc7fc4debefd
GIT binary patch
literal 11016
zcmb7~30PG1`o~|E85u at u2A5F;W9dP#sJ}wjHKQOkx1zvuBjqOgcg-lJ>uz3!dtD>D
zU>U9?sE7-KfXbrCs)7h2i-Hh~2q?G^)!grU=67hQZqL2*JRjc!%$fK1dEa-=oHNHG
z6Ma9hA2KA_%F at Qt#MI2(q&JZX5n1#n`e2<Qdg5n$AV2u;J>(zkiG~i{jGx}*s6o`|
zlr#h^2GMS|>gZYhDT&$aMM+2IStp#FMX`dzh=((0Q?wwFW8oq?4B|javLB@!97C}a
zTy(LvM2o?5rKP0`Bs7LsGXQJ^S4~ZO6%(n7Ia*lsFIFh}>;XF!R(5;Htk)i;QkOz%
z+f2ZbIS=AV?e<TlZp2RN{rY#*@2wab;PW*-H*Jm1WyVNAdc7Vm??yfWS-r`8fhr)t
z2R}>x>^%vaQ4G9K!TVI)42ovpyiafh at yNxcs#tJXreXy}gGd4U$6=dmAi at 41i{UyT
zM-V`Vx at tf{Sc?q2$AMJTAQCYW?)jh=?zQM#DO?+f)Uvzm&owZh8FG?(jo3uG*JH>A
zb<le6f&XT?4(yKHU5~y*Ye3SJ0hF|6V!tHWn`7oOb#z`J#ohdb;;L6Ej)3o5KR1nS
z`iv3~4?kXOvA%tqE|P(BBDf6iJj9Fj8`N<CHPChWa}Bmnbj|p1039Dh<Og^Th?+wT
z>p|3a>gCy(k6*I?PQ*QMzl0iGf_tXm0A}H&@V<yBa7d?TT~CtrkngDPi0{}RoDy*}
z{GTgr<XJF0WN&r{QNsTe+$G?g1la#zbBJ~yoFm}Q{;5AKrBwFLoK3}nj?~Uz=Iimh
z6u9q2WdAHdEY|}5#|0UPev-TFZ&;FISI|a<r~_)CzQp~<{O2=Doy$oO0pAoc2bg`?
z9kGWdoh<vM(=+y8lh!2$GcUWNhS)Y=u$61TsTvzgDaMbI!Ex|C$2>pudk*@&P>~4s
zW(8Pf2$DGF&efbd at +MtH%;fF-U`n0mM2(xhG;P>!s}G~b!qv*U%w<%~B(I=yP+0aa
z`y6mSceCcqk$H4%xtHbw;)U_%G~83)Nr)0SYMC;foqA#veFu#Lq14kZRYL2%10IP2
zY`^#sfai- at 62`SKY-gZ8mq7+*;GY@?uP;gK{w3lt$eV?DOWu+@*8=W|;3C{5;CwiC
zJZ0>BfvOm|-vF7+o7PkV_cpk9z`f&sxTdi^Qdx}}w4nxV at Na~BjezS=4*yHw0yxHX
z$lB-`1vGLE*nRZUb*6p#EI=IyXbIlqKn&`T3WvjBhlsPu(eEAMZ>Yf^`*RHpb$~nk
zk8&M=zwqb&XMkKkckNAgEj2N34N^1>?@RZYNrS11nLAWd!@#`_k=>=f!@UYzg?}-q
z1NTt_*}w6d_lc>Q>O^<JE$%<hg79BJTUK`KzrmeMoyR*X_}Go;4CYJj<Tf6W*}?v<
z6W8>Xf#+$ECE#O%>~8QkaXLx{GI<V!KfecZaa^i<&CcL1{A=J`=093hC?nh(*&XxG
z?u`Pu|K*|v_b~_e(R0ZiuUEqe_agBgkp0)74$q?o8uZ>0D1w5r6qo at 8`)`ceD8bus
z4hD%ho(Gd-jD1WD^+pXOf5eZJx(Pc-J!Yd(4S4nq^Uu-5Dbtv36DVVho4U?LM=i{d
zXQ_#Cccl8ahAXbjc$aQ~?71^dvk}w${HPq%?_JzaqB(+ELA{{0aFOx}Xu~n_3Fr*>
z)jSIJpjtux at r9IlW2b5tgYB5+6?B%-Z_|BPQ9*7M&GfRMcdu{ALaVJXmkEr}nt$^-
znc8pq%mq9H`jKOxr(i4M^I$lb51hfLI2pRq4XtB786mqP-iCi2+#kN6qNdkgqFa96
z+M+ohP&UK<AZ;Oz3v=dB{l~9T>&-*&uy-XW28A5a`+MknC)a`fD}(6~YEX+9|4X>$
z?+u6S7G|s^b}vFKGV)&y|JUK(ji^$eSDmMkCEP6$Wq;GMvqQKJ?9bj at 19o2vYy?vg
zP3>NK%|>POLI7$IBh|sko$G-9UuSoa3o=Iax2S)mmnr+#!@n{xkg`D<IQ#L(inA+L
zXcJL`Yw(x*&;IOwg(LiLfLc)l$sgX2Kt5`aUo?rTWq$BiRhP`B5(agU{YRk&GOx2g
zcmecff9^YteMJdOCD at ysw}R*0105~k%-+MdY{9XUYat#ZN4gTQf%E6a{XaNc{XM&*
z_fr4S`+70|T!W_R)2V`M0QWtsR%!RZ|0w!@ZMcG389yzx#!i#o1JWD_|5C&Xt^>Ro
zc9-4*slz4zBDg1lBDmiZH8?B!&+~8pUfB?y|7W=O?9H<;`ri*VV1EhW+!wBY1)h4n
zr@<S&m$u~sAb#@69DLwjAbl3jf3%J|@b>O`))C9S=(bj?y{%9vZWEbTnvtSXNy>T^
z^{BTtp{Ah at nwsEwlnCNNr&6j1Q59%qd<{GfcCvoFfAZ)?eKM5 at t|MN(AFV0N52Z4^
z|6 at Q|+z5J@`L_Dj-5GR+sR*PD!FGL=r_E>Y*=w2S=^TAz|1*(e2z at +&9KlGAXV=oW
z)-!{d=a{@?8hGGKvV2tIYDs>{1EKkBLPCOMZ8+zbE{V+W3&sS$Gbt^N;>#cj_ at 88d
z{Co{Go00ONl6pK;k;TKFq<YByq6S=tCO9_=_YPl;rUU+u1yU_G*wUl83AzS$XW-s|
z_kS1c4yw5h4BRV(zlXP$JYMNVy9BEdr@?u7gf~T{FLphTc>db}$`-_5kFeSb|LJgN
zMsqEuO`9fN>j-x!N#5Q3xdxq`of7a*o7A7u(EDaQ_o<RBo~Yp6lPsS+OKSFS7d2>S
ze>h8hM-3!@oVh;+t>EfcMA`7aEo$%pb>L%v1A{swG9Am*Q6LGu=NYJG_dU*(0e1;F
zUy{KbTw-Si{#=8ol229f%!w(K&7k+EMGZ!C4O%L#r!cumG-BTlde)t!>j|m%KAt{i
zD_4&1>OFi-;D627Uj^@;q=tLX{nli40`5h!fB0t2;ppX>o2Wsf)O++F&X2!SC|YB*
z+6=@RxHm+&{|b7~^B;rv!8#BF_gMDk+2?JzSHQgsxL3ft3uAYlflC1-`J)Ee_d at JG
zhyT|gnBN1Ke at o#XjQCfs0i1h^8IZiW_v|f`97s7h!#oP=fnH16HbE`oX<Q4R!8LI!
zVpe9D`bzu;bxGtRy1&d;T?d{-619NRc(u9;@rkd4rbSSdGLNn|$IuS&DaQ&wN~@eo
z<)8*!3w5HJ8A>X~>m-3<Y&S0HPc13)tRGcxRou;6K at Iyx(LGSTbr6-Fnye}<pR2h6
zGC=}^&yACUS7}9vN?&F_sX3We3nn>ug<B9=iF0W_pYHxB+hl+Ao3X$1PltOHNQZkR
z6Staff=c*T!Jl~mo{Uke+W^NWE<|k}Ce#Ah{Zjd6%_evU!uu4cVE<p1YYxKwBHYWt
zHF(FuI~}o+3HPE-_;=p?f?806ipz8C?!mhq{>+alZ&EY3Eo$%`+{1-`xPGtetMFbb
z`(OEn#w^%UrGP(6ce(SiK?eS7c?M7eo&(H4xBl0{oxRVX_g(&?20Q}~*co()8gvMM
zu0ad at x&K#%yW}73rIGqB{JH;+jgkG)`%a#L&M2#DaIb0$-MhHd;9t3$62M{9;0E0D
zWPhm^zxIA9{9Vz1_LuwL<t_WeoxmK_A&2XL^YRi9h4c2$aD5U5_jI_kf7krOzW|hB
z-S^=x^<JI<o_%)bDEztiS5Lo46%71&{>u?-P=i+4J#G<IW^PayWB%p->zgCA?0*?t
z<2t~<9p1NpNz!a*cm^&_p*%*^;3S;C6#ZWsvVwXW%|GG0x8M0obCK+48sOtO7;H at P
zrK^>})=WJ3COL%87?BgRg7Re+45PbKEa at jBs)L=V7+{VyjX2&FA9}~Gdgo|WJ*Zwg
zm}+s}*v8<P$FxlAL+ufMbPb=CaRA??sGr77pkLaz(J%Ug>N}l>=+=+>=}t!^-Ff;g
zHDR7k=qqR~2*q}I{W3b6HbI%+zFN7Dxf`iF1l9xJ_+>QEGr;E=ILe>>zxRi`cyE{z
zws#Dsp78br>$wJS&oS~p1NQ{s&oKe+$-nV$6#m7iK{1@!yMAF`YG#DD?B53W8uk|c
z<?Ifg!oLyzg`LrK at y95-*l~c0p6;bPaL$2yxTwKGcIFx&Mj)PmcY^SLL-<>=KhHZJ
zeE!o_1O5dbzxs<~#AJVe=?{oK;m+6#{wDlg5UqjB-kGjr!D0q=SPW-h`0obkpm-I|
zpLZ;wT2PN|?tcsSo$G+ at 4*35h;5qn-`_Fv`H<`|(=s#-Eff_tT4d7oXW<c(L1>7%z
z6I=&4v;R_d*G*W|_1S0aZM^+Q{*pZYaq{pWPtRT0>O=6CB0Hmigh-fw8u{pif)0Er
zff_uA&w5|fU^hr-_ODZw2nrAjA_A!t+yxDw1<sPUTnF_1q3q6e=!~N~KOUo^ju`lV
zPdRW;<r%oJhf+ZfX1 at Z|#*ZPULiqFS_axgflK&s|UakS8%zuM)uITCMDW5a`Y4q{&
zF`6Gew$+NTx5*D2XSQvlqJsz3xgdo(5^8;exv-L|n2aS<4VsTnH_)=39=3f;4Ns!!
zR_7VI)t=Txjy{i4YcmEXgZQi{D<%!~&S&sF)B`4bE}c#Zb^6P&Vbi!_(yYr-b~cVg
zE6ja-JdJArU;Upt<MoXHZsbp<aAyDhX{&WRf#ff0 at E!bj!TqZ6zY6~wH`b|&nTD_I
zBp&RihDXQgZbu5;`Z=3!!MPX|vU>%tuXiq`YLG9ehx={7b&!DjD%3!_?iGFSdcPZc
z%iHX4plc3{-2SUNm>SOj`@85yDB$kL{`fxq82r;g3Iq2{rgWE8ECZ+Wpt$Y0;yn1O
z?KGWzl1AyBS13zgMg^k(#fUllywNr`&4Vp0nsLvf9<drd&&TJ?zrX?Jhf|YhFB!!h
zH}qci{7(^2`-A>>>#tEg{_ywR{CWNvQG+1dM>qy at QHOMpJ8KkO1)2N(iT%HAI7CMQ
zyC2mjYgawGOlLcaDC_4cO4m1o5_O^=4*ogpZVbME=Dr8Po%uWW{(tnxdP(6E<Re9F
z8+;ujgtsN;+nC>fUSJ>N_W*vxO|GDg_zv6IqI|i-5|F;zgDM%FQkkd5H8jK9DZ!Lk
z9**;Q1N(7o`yQ0w^UXk^u0UU?I|mMN98cygj5lc|oQZ0{Kca$s8~`rg$z<`iHC@*_
zf6{m9vrwyzFm~q}{HEW=?!4X2wcF45eu?)t-Limh^N}gnzy}+m22orG*&k648lA`_
zQ&8!paj3kso)X~CTxQ^0P;!u}7P;se7}+1OjJJjVB7LczWPdpSPySe<-1{zn922EF
zL`0ARn2M;t?<Lp|@Wa&A^+dNi at b4JDe=~kTAASx+Wd$)yaD2#PZ`mKt1Hl`B>%jis
z^SKS&c at 7fbF8PlkY5)&}e_055FUAa<gMY%7X|ZO2xCZS0-}v)f;9<i3*Sc#BV4EBx
zlt3jj(sibVF^&{tVGP_Yi17I@@N$@|U at -gAEXeM9zQ=`HM9xsE;64cK0C{r%*&pwP
z{cwNV$iD>s>@B$)`OEVk34b&0JG*1M%U`Yod;SsZ4)ApkzGBll4g?>9O<`lCdvkFq
zQ%UAv{yaJi;$)6YrFai(lMvsb4lf~^*o;<L4x8rek1>h@=gGn%MS^;#P!E?Be9xE$
z_LBK{2@~t!cO8a?YY>4G=Rd}IaS!HL+9KVt^5vR1a8N|PpB{(rLCTSz?=2tBU9O4e
zH85Di44)uR!WwAe#Knw%SANdTYcS;JHAw3~&PWDpaCR8##rHtFa*O;a at XwP$?i%E7
zy1!Y|#1Z+c1=1Rp?3gu@^Yh#2i!To07M{g8UW2Ot$o(J$dH-R&2IS5K at rE^cz03LG
zUxYd|Gq^`|M+W!FT1D;}<S*wnaBg@@a1D at u8){%VV8E*kZ3qja5fdi3ac(=eDRZ>m
zA%hsKVK1*k<d at eFk6cv_8chRe!FI{?w<vGPEJ{VZ^VJu2O}MXD&EP&)J9rxBkMA!1
zDY@=bZCC-~g;=^!nq~DK7>;e{siALL4V~*?#gVZb at ap>l4 at 3_~NB2+^D at O*7*_ at Zx
zfY^ZCdF$|hEC8>e2{}1`F}MX<>vj#kn-gqRdg)!dTQ*-&x_>7XAomiZ{Ljg`Ek+UN
zm-4!M2RZ|M&4HPBbng)m5Hz0Gg8UhHGgN^F(1MevCZCtB@`m-HJD@!n-+_Wwv5rFI
zz8m&BN%?sV`(}+Q*yuTM_yTA1_a>`o_>#fo2R=>-w%!2zl9RO_z<K84?Zn6rJudpN
z1`_!nAvbeX<iCS8G|BnH9W;fY9<*|9)L=i{lR*x07a*?$)=&`cONq!E1vn-m_jb+?
z-UnR&9ze>?YuPY{@P9{0530d=H&R!G%_f<9emL&Rgam5OJzhI_eQAJIHnaZ)DqZGA
z8K5q5hOQI$fa+qr>Av7bNf;&kuuc_Sw1mdioai@`88(dX_LB*s$*x^dCUJ{&%Xtl;
znj><jrESwyFxdWW{u0i6VLX*G$lrk6Ex3<c2RMHVJ~ue;eUQQVQ>W7fUITK6onB94
zIX~x?kBcrNT(|}=@jAe6<mLPlycXG=Bm7I&O;$DF9IIjaAbP;Sy9{}gWq-~Os`P2P
zBVaw;jr0E>uC026hK5S{b8~ZXx`=8Bcr7zrMyQc at 5Z2&@s6M=D$V<pO9;})_md<@O
z$F7v&bpX!aDctL at jxv!y1Ccp`{5Md88*mR>^%mJ6zX|7+{cUa4=1L`j5$3#&)pR=t
z8mb{Pd`y^4^>DIV=Rf)Ao|ROPu*>Qc;8=jq>?#Ji?t`lKG~G>*of$?Fr`Ektv~NlO
zBE*jnY15`nUAcJ;wzhAJ{Dw9Br~JGQ<o8GZQ_MPl!#a at j9EjwozwVmNxhrBQ8|MdY
zpl<7QMa<=|UfYJ;8pLk7<^0Aq_-%gtUo6x^W%lwwPntApmf4z_uJb_wu0fbz{2aB}
z at Xr?Okn*#;od4y417m{c&C>v4<hpa at S{VGf_HRr0PMT!KczgSr+1L!`yk>pOoh3wm
zI)ee2@*>UWH6Z^=z%^LOYe4QQIX7Y~a*j-jjwb!Xha^R#bAqvB$4X~w?vC0|@E-UU
z^M8WD_pgae{A at b9!cqIdh#3={)NZy5!6^oxA*mn?pP#{?C%(Tpf&KFZW!Sg=?lxUL
z_Adt)vHvT;0=$F$H({Sy;x(k#LH;t(An%WT%XxpiPC2+(xJ?%h<kzsk{%?Rmc#T<z
zVe<ZR#F{xba}E1nJ2;zo-J1|M at oR;Kdb|-G?aTWUwrTYQWt^?8+ZDtsVY6+U at HyP^
z`72a*_A~o)a4W<A?W)b(K<$8ITI@>aJz2XvXX4tIcJJPe9=fTq?>OxHDT94?0BK*u
z4&D#fZ?)}ly6Yes`zHWtf1U&UU$$-_KVd&#&d>0*pV&7CYbh7|yOfugOY?;MyoN4#
ze+K*dBA&xOiJTYfC>Q&`QH%e;$+>y`>oD}l7Y*0T*yl20^r%sThYcFkceh|8YFmrv
z)Z*{V<vDZS*$5_sVf<YDeKGHc=kWfu2R<H94wAvf>w6~>{%$VA&l7*+=S<e)hKD`Y
w5a{P#i0|GD5d)n25HkVWU-Ivwb_ET^afm*B{h2*~`~SZL at qy}dU;B`M0~nK^QUCw|

literal 0
HcmV?d00001

-- 
1.7.7.6



More information about the Piglit mailing list