+ const TexQueryFuncCaseSpec textureSizeCases[] =
+ {
+ { "sampler2d_fixed", "sampler2D", tex2DFixed },
+ { "sampler2d_float", "sampler2D", tex2DFloat },
+ { "isampler2d", "isampler2D", tex2DInt },
+ { "usampler2d", "usampler2D", tex2DUint },
+ { "sampler2dshadow", "sampler2DShadow", tex2DShadow },
+ { "sampler3d_fixed", "sampler3D", tex3DFixed },
+ { "sampler3d_float", "sampler3D", tex3DFloat },
+ { "isampler3d", "isampler3D", tex3DInt },
+ { "usampler3d", "usampler3D", tex3DUint },
+ { "samplercube_fixed", "samplerCube", texCubeFixed },
+ { "samplercube_float", "samplerCube", texCubeFloat },
+ { "isamplercube", "isamplerCube", texCubeInt },
+ { "usamplercube", "usamplerCube", texCubeUint },
+ { "samplercubeshadow", "samplerCubeShadow", texCubeShadow },
+ { "sampler2darray_fixed", "sampler2DArray", tex2DArrayFixed },
+ { "sampler2darray_float", "sampler2DArray", tex2DArrayFloat },
+ { "isampler2darray", "isampler2DArray", tex2DArrayInt },
+ { "usampler2darray", "usampler2DArray", tex2DArrayUint },
+ { "sampler2darrayshadow", "sampler2DArrayShadow", tex2DArrayShadow },
+ { "samplercubearray_fixed", "samplerCubeArray", texCubeArrayFixed },
+ { "samplercubearray_float", "samplerCubeArray", texCubeArrayFloat },
+ { "isamplercubearray", "isamplerCubeArray", texCubeArrayInt },
+ { "usamplercubearray", "usamplerCubeArray", texCubeArrayUint },
+ { "samplercubearrayshadow", "samplerCubeArrayShadow", texCubeArrayShadow },
+ { "sampler1d_fixed", "sampler1D", tex1DFixed },
+ { "sampler1d_float", "sampler1D", tex1DFloat },
+ { "isampler1d", "isampler1D", tex1DInt },
+ { "usampler1d", "usampler1D", tex1DUint },
+ { "sampler1dshadow", "sampler1DShadow", tex1DShadow },
+ { "sampler1darray_fixed", "sampler1DArray", tex1DArrayFixed },
+ { "sampler1darray_float", "sampler1DArray", tex1DArrayFloat },
+ { "isampler1darray", "isampler1DArray", tex1DArrayInt },
+ { "usampler1darray", "usampler1DArray", tex1DArrayUint },
+ { "sampler1darrayshadow", "sampler1DArrayShadow", tex1DArrayShadow },
+ };
+
+ de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(m_testCtx, "texturesize", "textureSize() Tests"));
+
+ for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(textureSizeCases); ++ndx)
+ {
+ const TexQueryFuncCaseSpec& caseSpec = textureSizeCases[ndx];
+
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_vertex"), "", caseSpec.samplerName, caseSpec.textureSpec, true, QUERYFUNCTION_TEXTURESIZE));
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_fragment"), "", caseSpec.samplerName, caseSpec.textureSpec, false, QUERYFUNCTION_TEXTURESIZE));
+ }
+
+ queryGroup->addChild(group.release());
+ }
+
+ // textureSamples() cases
+ {
+ const TexQueryFuncCaseSpec textureSamplesCases[] =
+ {
+ { "sampler2dms_fixed", "sampler2DMS", tex2DFixed },
+ { "sampler2dms_float", "sampler2DMS", tex2DFloat },
+ { "isampler2dms", "isampler2DMS", tex2DInt },
+ { "usampler2dms", "usampler2DMS", tex2DUint },
+ { "sampler2dmsarray_fixed", "sampler2DMSArray", tex2DArrayFixed },
+ { "sampler2dmsarray_float", "sampler2DMSArray", tex2DArrayFloat },
+ { "isampler2dmsarray", "isampler2DMSArray", tex2DArrayInt },
+ { "usampler2dmsarray", "usampler2DMSArray", tex2DArrayUint },
+ };
+
+ de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(m_testCtx, "texturesamples", "textureSamples() Tests"));
+
+ for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(textureSamplesCases); ++ndx)
+ {
+ const TexQueryFuncCaseSpec& caseSpec = textureSamplesCases[ndx];
+
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_vertex"), "", caseSpec.samplerName, caseSpec.textureSpec, true, QUERYFUNCTION_TEXTURESAMPLES));
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_fragment"), "", caseSpec.samplerName, caseSpec.textureSpec, false, QUERYFUNCTION_TEXTURESAMPLES));
+ }
+
+ queryGroup->addChild(group.release());
+ }
+
+ // textureQueryLevels() cases
+ {
+ const TexQueryFuncCaseSpec textureQueryLevelsCases[] =
+ {
+ { "sampler2d_fixed", "sampler2D", tex2DFixed },
+ { "sampler2d_float", "sampler2D", tex2DFloat },
+ { "isampler2d", "isampler2D", tex2DInt },
+ { "usampler2d", "usampler2D", tex2DUint },
+ { "sampler2dshadow", "sampler2DShadow", tex2DShadow },
+ { "sampler3d_fixed", "sampler3D", tex3DFixed },
+ { "sampler3d_float", "sampler3D", tex3DFloat },
+ { "isampler3d", "isampler3D", tex3DInt },
+ { "usampler3d", "usampler3D", tex3DUint },
+ { "samplercube_fixed", "samplerCube", texCubeFixed },
+ { "samplercube_float", "samplerCube", texCubeFloat },
+ { "isamplercube", "isamplerCube", texCubeInt },
+ { "usamplercube", "usamplerCube", texCubeUint },
+ { "samplercubeshadow", "samplerCubeShadow", texCubeShadow },
+ { "sampler2darray_fixed", "sampler2DArray", tex2DArrayFixed },
+ { "sampler2darray_float", "sampler2DArray", tex2DArrayFloat },
+ { "isampler2darray", "isampler2DArray", tex2DArrayInt },
+ { "usampler2darray", "usampler2DArray", tex2DArrayUint },
+ { "sampler2darrayshadow", "sampler2DArrayShadow", tex2DArrayShadow },
+ { "samplercubearray_fixed", "samplerCubeArray", texCubeArrayFixed },
+ { "samplercubearray_float", "samplerCubeArray", texCubeArrayFloat },
+ { "isamplercubearray", "isamplerCubeArray", texCubeArrayInt },
+ { "usamplercubearray", "usamplerCubeArray", texCubeArrayUint },
+ { "samplercubearrayshadow", "samplerCubeArrayShadow", texCubeArrayShadow },
+ { "sampler1d_fixed", "sampler1D", tex1DFixed },
+ { "sampler1d_float", "sampler1D", tex1DFloat },
+ { "isampler1d", "isampler1D", tex1DInt },
+ { "usampler1d", "usampler1D", tex1DUint },
+ { "sampler1dshadow", "sampler1DShadow", tex1DShadow },
+ { "sampler1darray_fixed", "sampler1DArray", tex1DArrayFixed },
+ { "sampler1darray_float", "sampler1DArray", tex1DArrayFloat },
+ { "isampler1darray", "isampler1DArray", tex1DArrayInt },
+ { "usampler1darray", "usampler1DArray", tex1DArrayUint },
+ { "sampler1darrayshadow", "sampler1DArrayShadow", tex1DArrayShadow },
+ };
+
+ de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(m_testCtx, "texturequerylevels", "textureQueryLevels() Tests"));
+
+ for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(textureQueryLevelsCases); ++ndx)
+ {
+ const TexQueryFuncCaseSpec& caseSpec = textureQueryLevelsCases[ndx];
+
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_vertex"), "", caseSpec.samplerName, caseSpec.textureSpec, true, QUERYFUNCTION_TEXTUREQUERYLEVELS));
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_fragment"), "", caseSpec.samplerName, caseSpec.textureSpec, false, QUERYFUNCTION_TEXTUREQUERYLEVELS));
+ }
+
+ queryGroup->addChild(group.release());
+ }
+
+ // textureQueryLod() cases
+ {
+ const TexQueryFuncCaseSpec textureQueryLodCases[] =
+ {
+ { "sampler2d_fixed", "sampler2D", tex2DMipmapFixed },
+ { "sampler2d_float", "sampler2D", tex2DMipmapFloat },
+ { "isampler2d", "isampler2D", tex2DMipmapInt },
+ { "usampler2d", "usampler2D", tex2DMipmapUint },
+ { "sampler2dshadow", "sampler2DShadow", tex2DMipmapShadow },
+ { "sampler3d_fixed", "sampler3D", tex3DMipmapFixed },
+ { "sampler3d_float", "sampler3D", tex3DMipmapFloat },
+ { "isampler3d", "isampler3D", tex3DMipmapInt },
+ { "usampler3d", "usampler3D", tex3DMipmapUint },
+ { "samplercube_fixed", "samplerCube", texCubeMipmapFixed },
+ { "samplercube_float", "samplerCube", texCubeMipmapFloat },
+ { "isamplercube", "isamplerCube", texCubeMipmapInt },
+ { "usamplercube", "usamplerCube", texCubeMipmapUint },
+ { "samplercubeshadow", "samplerCubeShadow", texCubeMipmapShadow },
+ { "sampler2darray_fixed", "sampler2DArray", tex2DArrayMipmapFixed },
+ { "sampler2darray_float", "sampler2DArray", tex2DArrayMipmapFloat },
+ { "isampler2darray", "isampler2DArray", tex2DArrayMipmapInt },
+ { "usampler2darray", "usampler2DArray", tex2DArrayMipmapUint },
+ { "sampler2darrayshadow", "sampler2DArrayShadow", tex2DArrayMipmapShadow },
+ { "samplercubearray_fixed", "samplerCubeArray", texCubeArrayMipmapFixed },
+ { "samplercubearray_float", "samplerCubeArray", texCubeArrayMipmapFloat },
+ { "isamplercubearray", "isamplerCubeArray", texCubeArrayMipmapInt },
+ { "usamplercubearray", "usamplerCubeArray", texCubeArrayMipmapUint },
+ { "samplercubearrayshadow", "samplerCubeArrayShadow", texCubeArrayMipmapShadow },
+ { "sampler1d_fixed", "sampler1D", tex1DMipmapFixed },
+ { "sampler1d_float", "sampler1D", tex1DMipmapFloat },
+ { "isampler1d", "isampler1D", tex1DMipmapInt },
+ { "usampler1d", "usampler1D", tex1DMipmapUint },
+ { "sampler1dshadow", "sampler1DShadow", tex1DMipmapShadow },
+ { "sampler1darray_fixed", "sampler1DArray", tex1DArrayMipmapFixed },
+ { "sampler1darray_float", "sampler1DArray", tex1DArrayMipmapFloat },
+ { "isampler1darray", "isampler1DArray", tex1DArrayMipmapInt },
+ { "usampler1darray", "usampler1DArray", tex1DArrayMipmapUint },
+ { "sampler1darrayshadow", "sampler1DArrayShadow", tex1DArrayMipmapShadow },
+ };
+
+ de::MovePtr<tcu::TestCaseGroup> group (new tcu::TestCaseGroup(m_testCtx, "texturequerylod", "textureQueryLod() Tests"));
+
+ for (int ndx = 0; ndx < DE_LENGTH_OF_ARRAY(textureQueryLodCases); ++ndx)
+ {
+ const TexQueryFuncCaseSpec& caseSpec = textureQueryLodCases[ndx];
+
+ // available only in fragment shader
+ group->addChild(new TextureQueryCase(m_testCtx, (std::string(caseSpec.name) + "_fragment"), "", caseSpec.samplerName, caseSpec.textureSpec, false, QUERYFUNCTION_TEXTUREQUERYLOD));
+ }