Add OpenGL tests for textureQueryLevels
Affects:
KHR-GL46.texture_query_levels.*
VK-GL-CTS issue: 5388
Change-Id: I173341d0c379d12d590e81f2cf32eed97caa32d7
diff --git a/AndroidKhronosCTSGen.bp b/AndroidKhronosCTSGen.bp
index 688feac..bebab00 100644
--- a/AndroidKhronosCTSGen.bp
+++ b/AndroidKhronosCTSGen.bp
@@ -1025,6 +1025,7 @@
"external/openglcts/modules/gl/gl4cTextureBufferTests.cpp",
"external/openglcts/modules/gl/gl4cTextureFilterMinmaxTests.cpp",
"external/openglcts/modules/gl/gl4cTextureGatherTests.cpp",
+ "external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.cpp",
"external/openglcts/modules/gl/gl4cTextureQueryLodTests.cpp",
"external/openglcts/modules/gl/gl4cTextureViewTests.cpp",
"external/openglcts/modules/gl/gl4cVertexAttrib64BitTest.cpp",
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl43-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl43-main.txt
index 0441a37..ab5961e 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl43-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl43-main.txt
@@ -13358,6 +13358,19 @@
KHR-GL43.aggressive_optimizations.cos_vec2_frag
KHR-GL43.aggressive_optimizations.cos_vec3_vert
KHR-GL43.aggressive_optimizations.cos_vec3_frag
+KHR-GL43.texture_query_levels.sampler1D_test
+KHR-GL43.texture_query_levels.sampler2D_test
+KHR-GL43.texture_query_levels.sampler3D_test
+KHR-GL43.texture_query_levels.samplerCube_test
+KHR-GL43.texture_query_levels.sampler1DArray_test
+KHR-GL43.texture_query_levels.sampler2DArray_test
+KHR-GL43.texture_query_levels.samplerCubeArray_test
+KHR-GL43.texture_query_levels.sampler1DShadow_test
+KHR-GL43.texture_query_levels.sampler2DShadow_test
+KHR-GL43.texture_query_levels.samplerCubeShadow_test
+KHR-GL43.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL43.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL43.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL43.texture_buffer_size_clamping.tex_buffer
KHR-GL43.texture_buffer_size_clamping.texture_buffer
KHR-GL43.texture_buffer_size_clamping.tex_buffer_range
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl44-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl44-main.txt
index 5e0489d..5735a17 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl44-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl44-main.txt
@@ -13358,6 +13358,19 @@
KHR-GL44.aggressive_optimizations.cos_vec2_frag
KHR-GL44.aggressive_optimizations.cos_vec3_vert
KHR-GL44.aggressive_optimizations.cos_vec3_frag
+KHR-GL44.texture_query_levels.sampler1D_test
+KHR-GL44.texture_query_levels.sampler2D_test
+KHR-GL44.texture_query_levels.sampler3D_test
+KHR-GL44.texture_query_levels.samplerCube_test
+KHR-GL44.texture_query_levels.sampler1DArray_test
+KHR-GL44.texture_query_levels.sampler2DArray_test
+KHR-GL44.texture_query_levels.samplerCubeArray_test
+KHR-GL44.texture_query_levels.sampler1DShadow_test
+KHR-GL44.texture_query_levels.sampler2DShadow_test
+KHR-GL44.texture_query_levels.samplerCubeShadow_test
+KHR-GL44.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL44.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL44.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL44.texture_buffer_size_clamping.tex_buffer
KHR-GL44.texture_buffer_size_clamping.texture_buffer
KHR-GL44.texture_buffer_size_clamping.tex_buffer_range
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl45-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl45-main.txt
index 4b0dd63..3f3d62b 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl45-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl45-main.txt
@@ -13359,6 +13359,19 @@
KHR-GL45.aggressive_optimizations.cos_vec2_frag
KHR-GL45.aggressive_optimizations.cos_vec3_vert
KHR-GL45.aggressive_optimizations.cos_vec3_frag
+KHR-GL45.texture_query_levels.sampler1D_test
+KHR-GL45.texture_query_levels.sampler2D_test
+KHR-GL45.texture_query_levels.sampler3D_test
+KHR-GL45.texture_query_levels.samplerCube_test
+KHR-GL45.texture_query_levels.sampler1DArray_test
+KHR-GL45.texture_query_levels.sampler2DArray_test
+KHR-GL45.texture_query_levels.samplerCubeArray_test
+KHR-GL45.texture_query_levels.sampler1DShadow_test
+KHR-GL45.texture_query_levels.sampler2DShadow_test
+KHR-GL45.texture_query_levels.samplerCubeShadow_test
+KHR-GL45.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL45.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL45.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL45.texture_buffer_size_clamping.tex_buffer
KHR-GL45.texture_buffer_size_clamping.texture_buffer
KHR-GL45.texture_buffer_size_clamping.tex_buffer_range
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl46-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl46-main.txt
index 5b95426..7c29f84 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl46-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/gl46-main.txt
@@ -13359,6 +13359,19 @@
KHR-GL46.aggressive_optimizations.cos_vec2_frag
KHR-GL46.aggressive_optimizations.cos_vec3_vert
KHR-GL46.aggressive_optimizations.cos_vec3_frag
+KHR-GL46.texture_query_levels.sampler1D_test
+KHR-GL46.texture_query_levels.sampler2D_test
+KHR-GL46.texture_query_levels.sampler3D_test
+KHR-GL46.texture_query_levels.samplerCube_test
+KHR-GL46.texture_query_levels.sampler1DArray_test
+KHR-GL46.texture_query_levels.sampler2DArray_test
+KHR-GL46.texture_query_levels.samplerCubeArray_test
+KHR-GL46.texture_query_levels.sampler1DShadow_test
+KHR-GL46.texture_query_levels.sampler2DShadow_test
+KHR-GL46.texture_query_levels.samplerCubeShadow_test
+KHR-GL46.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL46.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL46.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL46.texture_buffer_size_clamping.tex_buffer
KHR-GL46.texture_buffer_size_clamping.texture_buffer
KHR-GL46.texture_buffer_size_clamping.tex_buffer_range
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl43-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl43-main.txt
index aa92d74..271f50e 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl43-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl43-main.txt
@@ -6132,4 +6132,17 @@
KHR-GL43.aggressive_optimizations.cos_vec3_vert
KHR-GL43.aggressive_optimizations.cos_vec3_frag
KHR-GL43.texture_buffer_size_clamping.*
-KHR-GL43.clear_tex_image.*
\ No newline at end of file
+KHR-GL43.clear_tex_image.*
+KHR-GL43.texture_query_levels.sampler1D_test
+KHR-GL43.texture_query_levels.sampler2D_test
+KHR-GL43.texture_query_levels.sampler3D_test
+KHR-GL43.texture_query_levels.samplerCube_test
+KHR-GL43.texture_query_levels.sampler1DArray_test
+KHR-GL43.texture_query_levels.sampler2DArray_test
+KHR-GL43.texture_query_levels.samplerCubeArray_test
+KHR-GL43.texture_query_levels.sampler1DShadow_test
+KHR-GL43.texture_query_levels.sampler2DShadow_test
+KHR-GL43.texture_query_levels.samplerCubeShadow_test
+KHR-GL43.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL43.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL43.texture_query_levels.samplerCubeArrayShadow_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl44-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl44-main.txt
index 95d6c39..535e8b1 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl44-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl44-main.txt
@@ -6808,4 +6808,17 @@
KHR-GL44.texture_buffer.texture_buffer_buffer_parameters
KHR-GL44.texture_buffer.texture_buffer_precision
KHR-GL44.texture_buffer_size_clamping.*
-KHR-GL44.clear_tex_image.*
\ No newline at end of file
+KHR-GL44.clear_tex_image.*
+KHR-GL44.texture_query_levels.sampler1D_test
+KHR-GL44.texture_query_levels.sampler2D_test
+KHR-GL44.texture_query_levels.sampler3D_test
+KHR-GL44.texture_query_levels.samplerCube_test
+KHR-GL44.texture_query_levels.sampler1DArray_test
+KHR-GL44.texture_query_levels.sampler2DArray_test
+KHR-GL44.texture_query_levels.samplerCubeArray_test
+KHR-GL44.texture_query_levels.sampler1DShadow_test
+KHR-GL44.texture_query_levels.sampler2DShadow_test
+KHR-GL44.texture_query_levels.samplerCubeShadow_test
+KHR-GL44.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL44.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL44.texture_query_levels.samplerCubeArrayShadow_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl45-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl45-main.txt
index 961f7ce..0f34c89 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl45-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl45-main.txt
@@ -7402,4 +7402,17 @@
KHR-GL45.gl_spirv.spirv_glsl_to_spirv_specialization_constants_test
KHR-GL45.gl_spirv.spirv_validation_builtin_variable_decorations_test
KHR-GL45.texture_buffer_size_clamping.*
-KHR-GL45.clear_tex_image.*
\ No newline at end of file
+KHR-GL45.clear_tex_image.*
+KHR-GL45.texture_query_levels.sampler1D_test
+KHR-GL45.texture_query_levels.sampler2D_test
+KHR-GL45.texture_query_levels.sampler3D_test
+KHR-GL45.texture_query_levels.samplerCube_test
+KHR-GL45.texture_query_levels.sampler1DArray_test
+KHR-GL45.texture_query_levels.sampler2DArray_test
+KHR-GL45.texture_query_levels.samplerCubeArray_test
+KHR-GL45.texture_query_levels.sampler1DShadow_test
+KHR-GL45.texture_query_levels.sampler2DShadow_test
+KHR-GL45.texture_query_levels.samplerCubeShadow_test
+KHR-GL45.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL45.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL45.texture_query_levels.samplerCubeArrayShadow_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl46-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl46-main.txt
index ff77710..147529f 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl46-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.0.x/src/gl46-main.txt
@@ -7402,4 +7402,17 @@
KHR-GL46.gl_spirv.spirv_glsl_to_spirv_specialization_constants_test
KHR-GL46.gl_spirv.spirv_validation_builtin_variable_decorations_test
KHR-GL46.texture_buffer_size_clamping.*
-KHR-GL46.clear_tex_image.*
\ No newline at end of file
+KHR-GL46.clear_tex_image.*
+KHR-GL46.texture_query_levels.sampler1D_test
+KHR-GL46.texture_query_levels.sampler2D_test
+KHR-GL46.texture_query_levels.sampler3D_test
+KHR-GL46.texture_query_levels.samplerCube_test
+KHR-GL46.texture_query_levels.sampler1DArray_test
+KHR-GL46.texture_query_levels.sampler2DArray_test
+KHR-GL46.texture_query_levels.samplerCubeArray_test
+KHR-GL46.texture_query_levels.sampler1DShadow_test
+KHR-GL46.texture_query_levels.sampler2DShadow_test
+KHR-GL46.texture_query_levels.samplerCubeShadow_test
+KHR-GL46.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL46.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL46.texture_query_levels.samplerCubeArrayShadow_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl43-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl43-main.txt
index 18fdfa3..24e0c08 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl43-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl43-main.txt
@@ -14991,6 +14991,19 @@
KHR-GL43.aggressive_optimizations.cos_vec2_frag
KHR-GL43.aggressive_optimizations.cos_vec3_vert
KHR-GL43.aggressive_optimizations.cos_vec3_frag
+KHR-GL43.texture_query_levels.sampler1D_test
+KHR-GL43.texture_query_levels.sampler2D_test
+KHR-GL43.texture_query_levels.sampler3D_test
+KHR-GL43.texture_query_levels.samplerCube_test
+KHR-GL43.texture_query_levels.sampler1DArray_test
+KHR-GL43.texture_query_levels.sampler2DArray_test
+KHR-GL43.texture_query_levels.samplerCubeArray_test
+KHR-GL43.texture_query_levels.sampler1DShadow_test
+KHR-GL43.texture_query_levels.sampler2DShadow_test
+KHR-GL43.texture_query_levels.samplerCubeShadow_test
+KHR-GL43.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL43.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL43.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL43.texture_query_lod.sampler1D_test
KHR-GL43.texture_query_lod.sampler2D_test
KHR-GL43.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl44-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl44-main.txt
index c23b5ae..6e8626f 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl44-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl44-main.txt
@@ -14991,6 +14991,19 @@
KHR-GL44.aggressive_optimizations.cos_vec2_frag
KHR-GL44.aggressive_optimizations.cos_vec3_vert
KHR-GL44.aggressive_optimizations.cos_vec3_frag
+KHR-GL44.texture_query_levels.sampler1D_test
+KHR-GL44.texture_query_levels.sampler2D_test
+KHR-GL44.texture_query_levels.sampler3D_test
+KHR-GL44.texture_query_levels.samplerCube_test
+KHR-GL44.texture_query_levels.sampler1DArray_test
+KHR-GL44.texture_query_levels.sampler2DArray_test
+KHR-GL44.texture_query_levels.samplerCubeArray_test
+KHR-GL44.texture_query_levels.sampler1DShadow_test
+KHR-GL44.texture_query_levels.sampler2DShadow_test
+KHR-GL44.texture_query_levels.samplerCubeShadow_test
+KHR-GL44.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL44.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL44.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL44.texture_query_lod.sampler1D_test
KHR-GL44.texture_query_lod.sampler2D_test
KHR-GL44.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl45-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl45-main.txt
index 476e96b..db97ba5 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl45-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl45-main.txt
@@ -14992,6 +14992,19 @@
KHR-GL45.aggressive_optimizations.cos_vec2_frag
KHR-GL45.aggressive_optimizations.cos_vec3_vert
KHR-GL45.aggressive_optimizations.cos_vec3_frag
+KHR-GL45.texture_query_levels.sampler1D_test
+KHR-GL45.texture_query_levels.sampler2D_test
+KHR-GL45.texture_query_levels.sampler3D_test
+KHR-GL45.texture_query_levels.samplerCube_test
+KHR-GL45.texture_query_levels.sampler1DArray_test
+KHR-GL45.texture_query_levels.sampler2DArray_test
+KHR-GL45.texture_query_levels.samplerCubeArray_test
+KHR-GL45.texture_query_levels.sampler1DShadow_test
+KHR-GL45.texture_query_levels.sampler2DShadow_test
+KHR-GL45.texture_query_levels.samplerCubeShadow_test
+KHR-GL45.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL45.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL45.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL45.texture_query_lod.sampler1D_test
KHR-GL45.texture_query_lod.sampler2D_test
KHR-GL45.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl46-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl46-main.txt
index 0e25a76..3c09e47 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl46-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/gl46-main.txt
@@ -14992,6 +14992,19 @@
KHR-GL46.aggressive_optimizations.cos_vec2_frag
KHR-GL46.aggressive_optimizations.cos_vec3_vert
KHR-GL46.aggressive_optimizations.cos_vec3_frag
+KHR-GL46.texture_query_levels.sampler1D_test
+KHR-GL46.texture_query_levels.sampler2D_test
+KHR-GL46.texture_query_levels.sampler3D_test
+KHR-GL46.texture_query_levels.samplerCube_test
+KHR-GL46.texture_query_levels.sampler1DArray_test
+KHR-GL46.texture_query_levels.sampler2DArray_test
+KHR-GL46.texture_query_levels.samplerCubeArray_test
+KHR-GL46.texture_query_levels.sampler1DShadow_test
+KHR-GL46.texture_query_levels.sampler2DShadow_test
+KHR-GL46.texture_query_levels.samplerCubeShadow_test
+KHR-GL46.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL46.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL46.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL46.texture_query_lod.sampler1D_test
KHR-GL46.texture_query_lod.sampler2D_test
KHR-GL46.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl43-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl43-main.txt
index 18fdfa3..24e0c08 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl43-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl43-main.txt
@@ -14991,6 +14991,19 @@
KHR-GL43.aggressive_optimizations.cos_vec2_frag
KHR-GL43.aggressive_optimizations.cos_vec3_vert
KHR-GL43.aggressive_optimizations.cos_vec3_frag
+KHR-GL43.texture_query_levels.sampler1D_test
+KHR-GL43.texture_query_levels.sampler2D_test
+KHR-GL43.texture_query_levels.sampler3D_test
+KHR-GL43.texture_query_levels.samplerCube_test
+KHR-GL43.texture_query_levels.sampler1DArray_test
+KHR-GL43.texture_query_levels.sampler2DArray_test
+KHR-GL43.texture_query_levels.samplerCubeArray_test
+KHR-GL43.texture_query_levels.sampler1DShadow_test
+KHR-GL43.texture_query_levels.sampler2DShadow_test
+KHR-GL43.texture_query_levels.samplerCubeShadow_test
+KHR-GL43.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL43.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL43.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL43.texture_query_lod.sampler1D_test
KHR-GL43.texture_query_lod.sampler2D_test
KHR-GL43.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl44-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl44-main.txt
index c23b5ae..6e8626f 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl44-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl44-main.txt
@@ -14991,6 +14991,19 @@
KHR-GL44.aggressive_optimizations.cos_vec2_frag
KHR-GL44.aggressive_optimizations.cos_vec3_vert
KHR-GL44.aggressive_optimizations.cos_vec3_frag
+KHR-GL44.texture_query_levels.sampler1D_test
+KHR-GL44.texture_query_levels.sampler2D_test
+KHR-GL44.texture_query_levels.sampler3D_test
+KHR-GL44.texture_query_levels.samplerCube_test
+KHR-GL44.texture_query_levels.sampler1DArray_test
+KHR-GL44.texture_query_levels.sampler2DArray_test
+KHR-GL44.texture_query_levels.samplerCubeArray_test
+KHR-GL44.texture_query_levels.sampler1DShadow_test
+KHR-GL44.texture_query_levels.sampler2DShadow_test
+KHR-GL44.texture_query_levels.samplerCubeShadow_test
+KHR-GL44.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL44.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL44.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL44.texture_query_lod.sampler1D_test
KHR-GL44.texture_query_lod.sampler2D_test
KHR-GL44.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl45-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl45-main.txt
index 476e96b..db97ba5 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl45-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl45-main.txt
@@ -14992,6 +14992,19 @@
KHR-GL45.aggressive_optimizations.cos_vec2_frag
KHR-GL45.aggressive_optimizations.cos_vec3_vert
KHR-GL45.aggressive_optimizations.cos_vec3_frag
+KHR-GL45.texture_query_levels.sampler1D_test
+KHR-GL45.texture_query_levels.sampler2D_test
+KHR-GL45.texture_query_levels.sampler3D_test
+KHR-GL45.texture_query_levels.samplerCube_test
+KHR-GL45.texture_query_levels.sampler1DArray_test
+KHR-GL45.texture_query_levels.sampler2DArray_test
+KHR-GL45.texture_query_levels.samplerCubeArray_test
+KHR-GL45.texture_query_levels.sampler1DShadow_test
+KHR-GL45.texture_query_levels.sampler2DShadow_test
+KHR-GL45.texture_query_levels.samplerCubeShadow_test
+KHR-GL45.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL45.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL45.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL45.texture_query_lod.sampler1D_test
KHR-GL45.texture_query_lod.sampler2D_test
KHR-GL45.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl46-main.txt b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl46-main.txt
index 0e25a76..3c09e47 100644
--- a/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl46-main.txt
+++ b/external/openglcts/data/gl_cts/data/mustpass/gl/khronos_mustpass/main/gl46-main.txt
@@ -14992,6 +14992,19 @@
KHR-GL46.aggressive_optimizations.cos_vec2_frag
KHR-GL46.aggressive_optimizations.cos_vec3_vert
KHR-GL46.aggressive_optimizations.cos_vec3_frag
+KHR-GL46.texture_query_levels.sampler1D_test
+KHR-GL46.texture_query_levels.sampler2D_test
+KHR-GL46.texture_query_levels.sampler3D_test
+KHR-GL46.texture_query_levels.samplerCube_test
+KHR-GL46.texture_query_levels.sampler1DArray_test
+KHR-GL46.texture_query_levels.sampler2DArray_test
+KHR-GL46.texture_query_levels.samplerCubeArray_test
+KHR-GL46.texture_query_levels.sampler1DShadow_test
+KHR-GL46.texture_query_levels.sampler2DShadow_test
+KHR-GL46.texture_query_levels.samplerCubeShadow_test
+KHR-GL46.texture_query_levels.sampler1DArrayShadow_test
+KHR-GL46.texture_query_levels.sampler2DArrayShadow_test
+KHR-GL46.texture_query_levels.samplerCubeArrayShadow_test
KHR-GL46.texture_query_lod.sampler1D_test
KHR-GL46.texture_query_lod.sampler2D_test
KHR-GL46.texture_query_lod.sampler3D_test
diff --git a/external/openglcts/modules/gl/CMakeLists.txt b/external/openglcts/modules/gl/CMakeLists.txt
index 9bebc02..8d56ca6 100644
--- a/external/openglcts/modules/gl/CMakeLists.txt
+++ b/external/openglcts/modules/gl/CMakeLists.txt
@@ -123,6 +123,8 @@
gl4cIndirectParametersTests.hpp
gl4cLimitsTests.cpp
gl4cLimitsTests.hpp
+ gl4cTextureQueryLevelsTests.hpp
+ gl4cTextureQueryLevelsTests.cpp
gl4cGlSpirvTests.cpp
gl4cGlSpirvTests.hpp
gl4cTextureQueryLodTests.hpp
diff --git a/external/openglcts/modules/gl/gl4cTestPackages.cpp b/external/openglcts/modules/gl/gl4cTestPackages.cpp
index 792385a..f47f375 100644
--- a/external/openglcts/modules/gl/gl4cTestPackages.cpp
+++ b/external/openglcts/modules/gl/gl4cTestPackages.cpp
@@ -67,6 +67,7 @@
#include "gl4cTextureViewTests.hpp"
#include "gl4cVertexAttrib64BitTest.hpp"
#include "gl4cVertexAttribBindingTests.hpp"
+#include "gl4cTextureQueryLevelsTests.hpp"
#include "glcAggressiveShaderOptimizationsTests.hpp"
#include "gl4cTextureQueryLodTests.hpp"
#include "glcBindImageTextureTests.hpp"
@@ -316,6 +317,7 @@
addChild(new glcts::ShaderConstExprTests(getContext()));
addChild(new gl4cts::ClearTextureImageTestCases(getContext()));
addChild(new glcts::AggressiveShaderOptimizationsTests(getContext()));
+ addChild(new gl4cts::TextureQueryLevelsTests(getContext()));
addChild(new gl4cts::TextureQueryLodTests(getContext()));
addChild(new gl4cts::TextureBufferTests(getContext()));
}
diff --git a/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.cpp b/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.cpp
new file mode 100644
index 0000000..40499cd
--- /dev/null
+++ b/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.cpp
@@ -0,0 +1,727 @@
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2025 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+/**
+ */ /*!
+ * \file gl4cTextureQueryLevelsTests.cpp
+ * \brief Implements conformance texture query levels tests
+ */ /*-------------------------------------------------------------------*/
+
+#include "gl4cTextureQueryLevelsTests.hpp"
+
+#include "tcuStringTemplate.hpp"
+#include "gluShaderProgram.hpp"
+#include "gluContextInfo.hpp"
+#include "glwEnums.hpp"
+
+#include <cmath>
+
+namespace gl4cts
+{
+
+TextureQueryLevelsBaseTest::TextureQueryLevelsBaseTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description)
+ : TestCase(context, test_name.c_str(), test_description.c_str())
+ , m_vertex_shader_txt("")
+ , m_fragment_shader_txt("")
+ , m_vbo(0)
+ , m_vao(0)
+ , m_texture(0)
+ , m_width(32)
+ , m_height(32)
+ , m_initialLevels(0)
+{
+ m_vertex_shader_txt = R"(
+ #version 400 core
+ layout (location = 0) in vec3 aPos;
+ void main()
+ {
+ gl_PointSize = 10.0f;
+ gl_Position = vec4(aPos, 1.0);
+ }
+ )";
+
+ m_fragment_shader_txt = R"(
+ #version 400 core
+ #extension GL_ARB_texture_query_levels: require
+ out vec4 FragColor;
+ uniform ${sampler} texture;
+ uniform int expectedValue;
+
+ void main()
+ {
+ int levels = textureQueryLevels(texture);
+ if(levels == expectedValue)
+ {
+ FragColor = vec4(0.0, 1.0, 0.0, 1.0);//green
+ }
+ else
+ {
+ FragColor = vec4(1.0, 0.0, 0.0, 1.0);//red
+ }
+ }
+ )";
+}
+
+tcu::TestNode::IterateResult TextureQueryLevelsBaseTest::iterate(void)
+{
+ bool texture_query_levels_supported =
+ m_context.getContextInfo().isExtensionSupported("GL_ARB_texture_query_levels");
+
+ if (!texture_query_levels_supported)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_NOT_SUPPORTED, "Not supported");
+ return STOP;
+ }
+
+ bool is_ok = false;
+
+ createBuffers();
+ createTexture();
+ is_ok = test();
+ clean();
+
+ if (is_ok)
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_PASS, "Pass");
+ }
+ else
+ {
+ m_testCtx.setTestResult(QP_TEST_RESULT_FAIL, "Fail");
+ }
+
+ return STOP;
+}
+
+bool TextureQueryLevelsBaseTest::test()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ bool result = false;
+ int expectedValue = m_initialLevels;
+
+ gl.clear(GL_COLOR_BUFFER_BIT);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glClear failed");
+ gl.viewport(0, 0, m_width, m_height);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glViewport failed");
+
+ glu::ShaderProgram shaderProgram(m_context.getRenderContext(),
+ glu::makeVtxFragSources(m_vertex_shader_txt, m_fragment_shader_txt));
+
+ gl.useProgram(shaderProgram.getProgram());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUseProgram failed");
+ gl.uniform1i(gl.getUniformLocation(shaderProgram.getProgram(), "texture"), 0);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
+ gl.uniform1i(gl.getUniformLocation(shaderProgram.getProgram(), "expectedValue"), expectedValue);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
+
+ gl.enable(GL_PROGRAM_POINT_SIZE);
+ gl.drawArrays(GL_POINTS, 0, 1);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glDrawArrays failed");
+ result = verify();
+
+ gl.texParameteri(m_textureType, GL_TEXTURE_BASE_LEVEL, 0);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_MAX_LEVEL, m_initialLevels - 2);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexParameteri failed");
+ expectedValue = m_initialLevels - 1;
+ gl.uniform1i(gl.getUniformLocation(shaderProgram.getProgram(), "expectedValue"), expectedValue);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
+
+ gl.drawArrays(GL_POINTS, 0, 1);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glDrawArrays failed");
+ result &= verify();
+
+ gl.texParameteri(m_textureType, GL_TEXTURE_BASE_LEVEL, 2);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_MAX_LEVEL, 1000);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexParameteri failed");
+ expectedValue = m_initialLevels - 2;
+ gl.uniform1i(gl.getUniformLocation(shaderProgram.getProgram(), "expectedValue"), expectedValue);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glUniform1i failed");
+
+ gl.drawArrays(GL_POINTS, 0, 1);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glDrawArrays failed");
+ result &= verify();
+
+ return result;
+}
+
+bool TextureQueryLevelsBaseTest::verify()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+ bool result = false;
+
+ std::vector<unsigned char> pixel(4);
+
+ gl.readPixels((m_width / 2), (m_height / 2), 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glReadPixels failed");
+
+ if (pixel[0] == 0 && pixel[1] == 255 && pixel[2] == 0 && pixel[3] == 255)
+ {
+ result = true;
+ }
+ else if (pixel[0] == 255 && pixel[1] == 0 && pixel[2] == 0 && pixel[3] == 255)
+ {
+ result = false;
+ }
+ return result;
+}
+
+void TextureQueryLevelsBaseTest::createTexture()
+{
+}
+
+void TextureQueryLevelsBaseTest::createBuffers()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ std::vector<float> vertices = {0.0f, 0.0f, 0.0f};
+
+ gl.genBuffers(1, &m_vbo);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenBuffers failed");
+ gl.genVertexArrays(1, &m_vao);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenVertexArrays failed");
+
+ gl.bindVertexArray(m_vao);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindVertexArray failed");
+ gl.bindBuffer(GL_ARRAY_BUFFER, m_vbo);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindBuffer failed");
+ gl.bufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(float), vertices.data(), GL_STATIC_DRAW);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBufferData failed");
+
+ gl.vertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), NULL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glVertexAttribPointer failed");
+ gl.enableVertexAttribArray(0);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glEnableVertexAttribArray failed");
+}
+
+void TextureQueryLevelsBaseTest::clean()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ if (m_vao != 0)
+ {
+ gl.deleteVertexArrays(1, &m_vao);
+ }
+ if (m_vbo != 0)
+ {
+ gl.deleteBuffers(1, &m_vbo);
+ }
+ if (m_texture != 0)
+ {
+ gl.deleteTextures(1, &m_texture);
+ }
+}
+
+TextureQueryLevelsSampler1DTest::TextureQueryLevelsSampler1DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler1D";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_height = 1;
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_1D;
+}
+
+void TextureQueryLevelsSampler1DTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<unsigned char> textureData(m_width * 4, 255);
+ gl.texImage1D(m_textureType, 0, GL_RGB, m_width, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler2DTest::TextureQueryLevelsSampler2DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler2D";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, m_height))));
+ m_textureType = GL_TEXTURE_2D;
+}
+
+void TextureQueryLevelsSampler2DTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<unsigned char> textureData(m_width * m_height * 3, 255);
+ gl.texImage2D(m_textureType, 0, GL_RGB, m_width, m_height, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage2D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler3DTest::TextureQueryLevelsSampler3DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+ , m_depth(32)
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler3D";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, std::max(m_height, m_depth)))));
+ m_textureType = GL_TEXTURE_3D;
+}
+
+void TextureQueryLevelsSampler3DTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<unsigned char> textureData(m_width * m_height * m_depth * 3, 255);
+ gl.texImage3D(m_textureType, 0, GL_RGB, m_width, m_height, m_depth, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage2D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSamplerCubeTest::TextureQueryLevelsSamplerCubeTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "samplerCube";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_CUBE_MAP;
+}
+
+void TextureQueryLevelsSamplerCubeTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<unsigned char> textureData(m_width * m_height * 3, 255);
+ for (int i = 0; i < 6; ++i)
+ {
+ gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, m_width, m_height, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage2D failed");
+ }
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler1DArrayTest::TextureQueryLevelsSampler1DArrayTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler1DArray";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_height = 1;
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_1D_ARRAY;
+}
+
+void TextureQueryLevelsSampler1DArrayTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 4;
+ std::vector<unsigned char> textureData(m_width * layers * 3, 255);
+ gl.texImage2D(m_textureType, 0, GL_RGB, m_width, layers, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler2DArrayTest::TextureQueryLevelsSampler2DArrayTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler2DArray";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, m_height))));
+ m_textureType = GL_TEXTURE_2D_ARRAY;
+}
+
+void TextureQueryLevelsSampler2DArrayTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 4;
+ std::vector<unsigned char> textureData(m_width * m_height * layers * 3, 255);
+ gl.texImage3D(m_textureType, 0, GL_RGB, m_width, m_height, layers, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSamplerCubeArrayTest::TextureQueryLevelsSamplerCubeArrayTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "samplerCubeArray";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_CUBE_MAP_ARRAY;
+}
+
+void TextureQueryLevelsSamplerCubeArrayTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 2;
+ std::vector<unsigned char> textureData(m_width * m_height * layers * 6 * 3, 255);
+ gl.texImage3D(m_textureType, 0, GL_RGB, m_width, m_height, layers * 6, 0, GL_RGB, GL_UNSIGNED_BYTE,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler1DShadowTest::TextureQueryLevelsSampler1DShadowTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler1DShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_height = 1;
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_1D;
+}
+
+void TextureQueryLevelsSampler1DShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<float> textureData(m_width /** m_height*/, 1.0f);
+ gl.texImage1D(m_textureType, 0, GL_DEPTH_COMPONENT16, m_width, 0, GL_DEPTH_COMPONENT, GL_FLOAT, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler2DShadowTest::TextureQueryLevelsSampler2DShadowTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler2DShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, m_height))));
+ m_textureType = GL_TEXTURE_2D;
+}
+
+void TextureQueryLevelsSampler2DShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<float> textureData(m_width * m_height, 1.0f);
+ gl.texImage2D(m_textureType, 0, GL_DEPTH_COMPONENT16, m_width, m_height, 0, GL_DEPTH_COMPONENT, GL_FLOAT,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSamplerCubeShadowTest::TextureQueryLevelsSamplerCubeShadowTest(deqp::Context &context,
+ const std::string &test_name,
+ const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "samplerCubeShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_CUBE_MAP;
+}
+
+void TextureQueryLevelsSamplerCubeShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ std::vector<float> textureData(m_width * m_height, 1.0f);
+ for (int i = 0; i < 6; ++i)
+ {
+ gl.texImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_DEPTH_COMPONENT16, m_width, m_height, 0,
+ GL_DEPTH_COMPONENT, GL_FLOAT, textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage2D failed");
+ }
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler1DArrayShadowTest::TextureQueryLevelsSampler1DArrayShadowTest(
+ deqp::Context &context, const std::string &test_name, const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler1DArrayShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_height = 1;
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(m_width)));
+ m_textureType = GL_TEXTURE_1D_ARRAY;
+}
+
+void TextureQueryLevelsSampler1DArrayShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 4;
+ std::vector<float> textureData(m_width * layers, 1.0f);
+ gl.texImage2D(m_textureType, 0, GL_DEPTH_COMPONENT16, m_width, layers, 0, GL_DEPTH_COMPONENT, GL_FLOAT,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSampler2DArrayShadowTest::TextureQueryLevelsSampler2DArrayShadowTest(
+ deqp::Context &context, const std::string &test_name, const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "sampler2DArrayShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, m_height))));
+ m_textureType = GL_TEXTURE_2D_ARRAY;
+}
+
+void TextureQueryLevelsSampler2DArrayShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 4;
+ std::vector<float> textureData(m_width * m_height * layers, 1.0f);
+ gl.texImage3D(m_textureType, 0, GL_DEPTH_COMPONENT16, m_width, m_height, layers, 0, GL_DEPTH_COMPONENT, GL_FLOAT,
+ textureData.data());
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage1D failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsSamplerCubeArrayShadowTest::TextureQueryLevelsSamplerCubeArrayShadowTest(
+ deqp::Context &context, const std::string &test_name, const std::string &test_description)
+ : TextureQueryLevelsBaseTest(context, test_name.c_str(), test_description.c_str())
+
+{
+ tcu::StringTemplate fragShaderTemplate{m_fragment_shader_txt};
+ std::map<std::string, std::string> replacements;
+
+ replacements["sampler"] = "samplerCubeArrayShadow";
+ m_fragment_shader_txt = fragShaderTemplate.specialize(replacements);
+
+ m_initialLevels = 1 + static_cast<int>(floor(std::log2(std::max(m_width, m_height))));
+ m_textureType = GL_TEXTURE_CUBE_MAP_ARRAY;
+}
+
+void TextureQueryLevelsSamplerCubeArrayShadowTest::createTexture()
+{
+ const glw::Functions &gl = m_context.getRenderContext().getFunctions();
+
+ gl.genTextures(1, &m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenTextures failed");
+ gl.bindTexture(m_textureType, m_texture);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glBindTexture failed");
+
+ int layers = 4;
+ std::vector<float> textureData(m_width * m_height * layers * 6, 1.0f);
+ gl.texImage3D(m_textureType, 0, GL_DEPTH_COMPONENT16, m_width, m_height, layers * 6, 0, GL_DEPTH_COMPONENT,
+ GL_FLOAT, textureData.data());
+
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.texParameteri(m_textureType, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glTextureParameteri failed");
+ gl.generateMipmap(m_textureType);
+ GLU_EXPECT_NO_ERROR(gl.getError(), "glGenerateMipmap failed");
+}
+
+TextureQueryLevelsTests::TextureQueryLevelsTests(deqp::Context &context)
+ : TestCaseGroup(context, "texture_query_levels", "Testes textureQueryLevels()")
+{
+}
+
+void TextureQueryLevelsTests::init(void)
+{
+ addChild(
+ new TextureQueryLevelsSampler1DTest(m_context, "sampler1D_test", "Tests textureQueryLevels with sampler1D"));
+ addChild(
+ new TextureQueryLevelsSampler2DTest(m_context, "sampler2D_test", "Tests textureQueryLevels with sampler2D"));
+ addChild(
+ new TextureQueryLevelsSampler3DTest(m_context, "sampler3D_test", "Tests textureQueryLevels with sampler3D"));
+ addChild(new TextureQueryLevelsSamplerCubeTest(m_context, "samplerCube_test",
+ "Tests textureQueryLevels with samplerCube"));
+ addChild(new TextureQueryLevelsSampler1DArrayTest(m_context, "sampler1DArray_test",
+ "Tests textureQueryLevels with sampler1DArray"));
+ addChild(new TextureQueryLevelsSampler2DArrayTest(m_context, "sampler2DArray_test",
+ "Tests textureQueryLevels with sampler2DArray"));
+ addChild(new TextureQueryLevelsSamplerCubeArrayTest(m_context, "samplerCubeArray_test",
+ "Tests textureQueryLevels with samplerCubeArray"));
+ addChild(new TextureQueryLevelsSampler1DShadowTest(m_context, "sampler1DShadow_test",
+ "Tests textureQueryLevels with sampler1DShadow"));
+ addChild(new TextureQueryLevelsSampler2DShadowTest(m_context, "sampler2DShadow_test",
+ "Tests textureQueryLevels with sampler2DShadow"));
+ addChild(new TextureQueryLevelsSamplerCubeShadowTest(m_context, "samplerCubeShadow_test",
+ "Tests textureQueryLevels with samplerCubeShadow"));
+ addChild((new TextureQueryLevelsSampler1DArrayShadowTest(m_context, "sampler1DArrayShadow_test",
+ "Tests textureQueryLevels with sampler1DArrayShadow")));
+ addChild((new TextureQueryLevelsSampler2DArrayShadowTest(m_context, "sampler2DArrayShadow_test",
+ "Tests textureQueryLevels with sampler2DArrayShadow")));
+ addChild((new TextureQueryLevelsSamplerCubeArrayShadowTest(
+ m_context, "samplerCubeArrayShadow_test", "Tests textureQueryLevels with samplerCubeArrayShadow")));
+}
+
+} /* namespace gl4cts */
diff --git a/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.hpp b/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.hpp
new file mode 100644
index 0000000..f96fe0f
--- /dev/null
+++ b/external/openglcts/modules/gl/gl4cTextureQueryLevelsTests.hpp
@@ -0,0 +1,209 @@
+#ifndef _GL4CTEXTUREQUERYLEVELSTESTS_HPP
+#define _GL4CTEXTUREQUERYLEVELSTESTS_HPP
+
+/*-------------------------------------------------------------------------
+ * OpenGL Conformance Test Suite
+ * -----------------------------
+ *
+ * Copyright (c) 2025 The Khronos Group Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */ /*!
+ * \file
+ * \brief
+ */ /*-------------------------------------------------------------------*/
+
+/**
+ */ /*!
+ * \file gl4cTextureQueryLevelsTests.hpp
+ * \brief Texture query levels tests Suite Interface
+ */ /*-------------------------------------------------------------------*/
+
+#include "glcTestCase.hpp"
+
+namespace gl4cts
+{
+
+class TextureQueryLevelsBaseTest : public deqp::TestCase
+{
+public:
+ TextureQueryLevelsBaseTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsBaseTest() = default;
+
+ tcu::TestNode::IterateResult iterate(void) override;
+ virtual bool test();
+ virtual void createBuffers();
+ virtual void createTexture();
+ virtual void clean();
+ virtual bool verify();
+
+protected:
+ std::string m_vertex_shader_txt;
+ std::string m_fragment_shader_txt;
+ glw::GLuint m_vbo, m_vao;
+ glw::GLuint m_texture;
+ glw::GLuint m_width;
+ glw::GLuint m_height;
+ glw::GLint m_initialLevels;
+ glw::GLenum m_textureType;
+};
+
+class TextureQueryLevelsSampler1DTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler1DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler1DTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler2DTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler2DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler2DTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler3DTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler3DTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler3DTest() = default;
+
+ void createTexture() override;
+
+private:
+ glw::GLuint m_depth;
+};
+
+class TextureQueryLevelsSamplerCubeTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSamplerCubeTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSamplerCubeTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler1DArrayTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler1DArrayTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler1DArrayTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler2DArrayTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler2DArrayTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler2DArrayTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSamplerCubeArrayTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSamplerCubeArrayTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSamplerCubeArrayTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler1DShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler1DShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler1DShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler2DShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler2DShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler2DShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSamplerCubeShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSamplerCubeShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSamplerCubeShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler1DArrayShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler1DArrayShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler1DArrayShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSampler2DArrayShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSampler2DArrayShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSampler2DArrayShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsSamplerCubeArrayShadowTest : public TextureQueryLevelsBaseTest
+{
+public:
+ TextureQueryLevelsSamplerCubeArrayShadowTest(deqp::Context &context, const std::string &test_name,
+ const std::string &test_description);
+ virtual ~TextureQueryLevelsSamplerCubeArrayShadowTest() = default;
+
+ void createTexture() override;
+};
+
+class TextureQueryLevelsTests : public deqp::TestCaseGroup
+{
+public:
+ TextureQueryLevelsTests(deqp::Context &context);
+ ~TextureQueryLevelsTests() = default;
+
+ void init(void);
+
+private:
+ TextureQueryLevelsTests(const TextureQueryLevelsTests &other);
+ TextureQueryLevelsTests &operator=(const TextureQueryLevelsTests &other);
+};
+} // namespace gl4cts
+#endif // _GL4CTEXTUREQUERYLEVELSTESTS_HPP