Lines Matching defs:const

77 	static const float s_values[] =
101 static const float s_values[] =
138 const char* minFilterName;
165 Texture2DMipmapTestInstance (Context& context, const ParameterType& testParameters);
171 Texture2DMipmapTestInstance (const Texture2DMipmapTestInstance& other);
172 Texture2DMipmapTestInstance& operator= (const Texture2DMipmapTestInstance& other);
174 const ParameterType m_testParameters;
179 Texture2DMipmapTestInstance::Texture2DMipmapTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
188 const int numLevels = deLog2Floor32(de::max(m_testParameters.width, m_testParameters.height))+1;
193 const deUint32 step = 0xff / (numLevels-1);
194 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
195 const deUint32 dec = 0xff - inc;
196 const deUint32 rgb = (inc << 16) | (dec << 8) | 0xff;
197 const deUint32 color = 0xff000000 | rgb;
212 static const struct
214 const Vec2 bottomLeft;
215 const Vec2 topRight;
241 const Vec2& bottomLeft = s_basicCoords[cellNdx].bottomLeft;
242 const Vec2& topRight = s_basicCoords[cellNdx].topRight;
258 const float angle = 2.0f*DE_PI * ((float)cellNdx / 16.0f);
259 const tcu::Mat2 rotMatrix = tcu::rotationMatrix(angle);
262 const float shearX = de::inRange(cellNdx, 4, 11) ? (float)(15-cellNdx) / 16.0f : 0.0f;
263 const tcu::Mat2 shearMatrix = tcu::shearMatrix(tcu::Vec2(shearX, 0.0f));
265 const tcu::Mat2 transform = rotMatrix * shearMatrix;
266 const Vec2 p0 = transform * Vec2(dst[0], dst[1]);
267 const Vec2 p1 = transform * Vec2(dst[2], dst[3]);
268 const Vec2 p2 = transform * Vec2(dst[4], dst[5]);
269 const Vec2 p3 = transform * Vec2(dst[6], dst[7]);
279 const Sampler::FilterMode magFilter = Sampler::NEAREST;
280 const int viewportWidth = m_renderer.getRenderWidth();
281 const int viewportHeight = m_renderer.getRenderHeight();
286 const bool isProjected = m_testParameters.coordType == COORDTYPE_PROJECTED;
287 const bool useLodBias = m_testParameters.coordType == COORDTYPE_BASIC_BIAS;
292 const int gridWidth = 4;
293 const int gridHeight = 4;
294 const int cellWidth = viewportWidth / gridWidth;
295 const int cellHeight = viewportHeight / gridHeight;
304 static const float s_bias[] = { 1.0f, -2.0f, 0.8f, -0.5f, 1.5f, 0.9f, 2.0f, 4.0f };
307 static const Vec4 s_projections[] =
320 const int curX = cellWidth*gridX;
321 const int curY = cellHeight*gridY;
322 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
323 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
324 const int cellNdx = gridY*gridWidth + gridX;
349 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
350 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
351 const bool isTrilinear = m_testParameters.minFilter == Sampler::NEAREST_MIPMAP_LINEAR || m_testParameters.minFilter == Sampler::LINEAR_MIPMAP_LINEAR;
369 const int curX = cellWidth*gridX;
370 const int curY = cellHeight*gridY;
371 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
372 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
373 const int cellNdx = gridY*gridWidth + gridX;
419 const bool isOk = numFailedPixels == 0;
431 TextureCubeMipmapTestInstance (Context& context, const ParameterType& testParameters);
437 TextureCubeMipmapTestInstance (const TextureCubeMipmapTestInstance& other);
438 TextureCubeMipmapTestInstance& operator= (const TextureCubeMipmapTestInstance& other);
440 const ParameterType m_testParameters;
445 TextureCubeMipmapTestInstance::TextureCubeMipmapTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
454 const int numLevels = deLog2Floor32(m_testParameters.size)+1;
461 const deUint32 step = 0xff / (numLevels-1);
462 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
463 const deUint32 dec = 0xff - inc;
476 const deUint32 color = 0xff000000 | rgb;
490 const int minWidth = 8;
491 const int minHeight = 8;
493 const bool partition = rnd.getFloat() > 0.4f;
494 const bool partitionX = partition && width > minWidth && rnd.getBool();
495 const bool partitionY = partition && height > minHeight && !partitionX;
499 const int split = width/2 + rnd.getInt(-width/4, +width/4);
505 const int split = height/2 + rnd.getInt(-height/4, +height/4);
521 const int viewportWidth = m_renderer.getRenderWidth();
522 const int viewportHeight = m_renderer.getRenderHeight();
524 const bool isProjected = m_testParameters.coordType == COORDTYPE_PROJECTED;
525 const bool useLodBias = m_testParameters.coordType == COORDTYPE_BASIC_BIAS;
541 static const float s_bias[] = { 1.0f, -2.0f, 0.8f, -0.5f, 1.5f, 0.9f, 2.0f, 4.0f };
544 static const Vec4 s_projections[] =
555 const float curX = (float)gridLayout[cellNdx].x();
556 const float curY = (float)gridLayout[cellNdx].y();
557 const float curW = (float)gridLayout[cellNdx].z();
558 const float curH = (float)gridLayout[cellNdx].w();
559 const tcu::CubeFace cubeFace = (tcu::CubeFace)(cellNdx % tcu::CUBEFACE_LAST);
583 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
584 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
606 const int curX = gridLayout[cellNdx].x();
607 const int curY = gridLayout[cellNdx].y();
608 const int curW = gridLayout[cellNdx].z();
609 const int curH = gridLayout[cellNdx].w();
610 const tcu::CubeFace cubeFace = (tcu::CubeFace)(cellNdx % tcu::CUBEFACE_LAST);
658 const bool isOk = numFailedPixels == 0;
670 Texture3DMipmapTestInstance (Context& context, const ParameterType& testParameters);
676 Texture3DMipmapTestInstance (const Texture3DMipmapTestInstance& other);
677 Texture3DMipmapTestInstance& operator= (const Texture3DMipmapTestInstance& other);
679 const ParameterType m_testParameters;
684 Texture3DMipmapTestInstance::Texture3DMipmapTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
691 const tcu::TextureFormat& texFmt = mapVkFormat(testParameters.format);
693 const tcu::Vec4& cScale = fmtInfo.lookupScale;
694 const tcu::Vec4& cBias = fmtInfo.lookupBias;
695 const int numLevels = deLog2Floor32(de::max(de::max(testParameters.width, testParameters.height), testParameters.depth))+1;
702 const deUint32 step = 0xff / (numLevels-1);
703 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
704 const deUint32 dec = 0xff - inc;
705 const deUint32 rgb = (0xff << 16) | (dec << 8) | inc;
706 const deUint32 color = 0xff000000 | rgb;
720 static const struct
722 const float sScale;
723 const float sBias;
724 const float tScale;
725 const float tBias;
726 const float rScale;
727 const float rBias;
749 const float sScale = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].sScale;
750 const float sBias = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].sBias;
751 const float tScale = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].tScale;
752 const float tBias = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].tBias;
753 const float rScale = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].rScale;
754 const float rBias = s_params[cellNdx%DE_LENGTH_OF_ARRAY(s_params)].rBias;
766 const float sScale = 1.0f;
767 const float sBias = 0.0f;
768 const float tScale = 1.0f;
769 const float tBias = 0.0f;
770 const float rScale = 1.0f;
771 const float rBias = 0.0f;
787 const float angleX = 0.0f + 2.0f*DE_PI * ((float)cellNdx / 16.0f);
788 const float angleY = 1.0f + 2.0f*DE_PI * ((float)cellNdx / 32.0f);
789 const tcu::Mat3 rotMatrix = tcu::rotationMatrixX(angleX) * tcu::rotationMatrixY(angleY);
791 const Vec3 p0 = rotMatrix * Vec3(dst[0], dst[ 1], dst[ 2]);
792 const Vec3 p1 = rotMatrix * Vec3(dst[3], dst[ 4], dst[ 5]);
793 const Vec3 p2 = rotMatrix * Vec3(dst[6], dst[ 7], dst[ 8]);
794 const Vec3 p3 = rotMatrix * Vec3(dst[9], dst[10], dst[11]);
804 const tcu::TextureFormat& texFmt = m_texture->getTextureFormat();
805 const tcu::TextureFormatInfo fmtInfo = tcu::getTextureFormatInfo(texFmt);
806 const Sampler::FilterMode magFilter = Sampler::NEAREST;
807 const int viewportWidth = m_renderer.getRenderWidth();
808 const int viewportHeight = m_renderer.getRenderHeight();
810 const bool isProjected = m_testParameters.coordType == COORDTYPE_PROJECTED;
811 const bool useLodBias = m_testParameters.coordType == COORDTYPE_BASIC_BIAS;
814 const int gridWidth = 4;
815 const int gridHeight = 4;
816 const int cellWidth = viewportWidth / gridWidth;
817 const int cellHeight = viewportHeight / gridHeight;
833 static const float s_bias[] = { 1.0f, -2.0f, 0.8f, -0.5f, 1.5f, 0.9f, 2.0f, 4.0f };
836 static const Vec4 s_projections[] =
849 const int curX = cellWidth*gridX;
850 const int curY = cellHeight*gridY;
851 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
852 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
853 const int cellNdx = gridY*gridWidth + gridX;
880 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
881 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
882 const bool isTrilinear = m_testParameters.minFilter == Sampler::NEAREST_MIPMAP_LINEAR || m_testParameters.minFilter == Sampler::LINEAR_MIPMAP_LINEAR;
900 const int curX = cellWidth*gridX;
901 const int curY = cellHeight*gridY;
902 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
903 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
904 const int cellNdx = gridY*gridWidth + gridX;
949 const bool isOk = numFailedPixels == 0;
961 Texture2DLodControlTestInstance (Context& context, const ParameterType& testParameters);
969 const int m_texWidth;
970 const int m_texHeight;
973 Texture2DLodControlTestInstance (const Texture2DLodControlTestInstance& other);
974 Texture2DLodControlTestInstance& operator= (const Texture2DLodControlTestInstance& other);
976 const ParameterType m_testParameters;
982 Texture2DLodControlTestInstance::Texture2DLodControlTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
991 const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
992 const int numLevels = deLog2Floor32(de::max(m_texWidth, m_texHeight))+1;
999 const deUint32 step = 0xff / (numLevels-1);
1000 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
1001 const deUint32 dec = 0xff - inc;
1002 const deUint32 rgb = (inc << 16) | (dec << 8) | 0xff;
1003 const deUint32 color = 0xff000000 | rgb;
1017 const tcu::Sampler::WrapMode wrapS = Sampler::REPEAT_GL;
1018 const tcu::Sampler::WrapMode wrapT = Sampler::REPEAT_GL;
1019 const tcu::Sampler::FilterMode magFilter = Sampler::NEAREST;
1021 const tcu::Texture2D& refTexture = m_texture->getTexture();
1023 const int viewportWidth = m_renderer.getRenderWidth();
1024 const int viewportHeight = m_renderer.getRenderHeight();
1033 const int gridWidth = 4;
1034 const int gridHeight = 4;
1035 const int cellWidth = viewportWidth / gridWidth;
1036 const int cellHeight = viewportHeight / gridHeight;
1045 const int curX = cellWidth*gridX;
1046 const int curY = cellHeight*gridY;
1047 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
1048 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
1049 const int cellNdx = gridY*gridWidth + gridX;
1064 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
1065 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
1066 const bool isTrilinear = m_minFilter == Sampler::NEAREST_MIPMAP_LINEAR || m_minFilter == Sampler::LINEAR_MIPMAP_LINEAR;
1088 const int curX = cellWidth*gridX;
1089 const int curY = cellHeight*gridY;
1090 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
1091 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
1092 const int cellNdx = gridY*gridWidth + gridX;
1140 const bool isOk = numFailedPixels == 0;
1149 Texture2DMinLodTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1164 Texture2DMaxLodTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1179 Texture2DBaseLevelTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1186 const Texture2DMipmapTestCaseParameters m_testParam;
1188 int getBaseLevel (int cellNdx) const
1190 const int numLevels = deLog2Floor32(de::max(m_texWidth, m_texHeight))+1;
1191 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0xac2f274a) % numLevels;
1205 Texture2DMaxLevelTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1212 const Texture2DMipmapTestCaseParameters m_testParam;
1214 int getMaxLevel (int cellNdx) const
1216 const int numLevels = deLog2Floor32(de::max(m_texWidth, m_texHeight))+1;
1217 const int maxLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x82cfa4e) % numLevels;
1234 TextureCubeLodControlTestInstance (Context& context, const ParameterType& testParameters);
1242 const int m_texSize;
1245 TextureCubeLodControlTestInstance (const TextureCubeLodControlTestInstance& other);
1246 TextureCubeLodControlTestInstance& operator= (const TextureCubeLodControlTestInstance& other);
1248 const ParameterType m_testParameters;
1254 TextureCubeLodControlTestInstance::TextureCubeLodControlTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1263 const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
1264 const int numLevels = deLog2Floor32(m_texSize)+1;
1273 const deUint32 step = 0xff / (numLevels-1);
1274 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
1275 const deUint32 dec = 0xff - inc;
1288 const deUint32 color = 0xff000000 | rgb;
1303 const tcu::Sampler::WrapMode wrapS = Sampler::CLAMP_TO_EDGE;
1304 const tcu::Sampler::WrapMode wrapT = Sampler::CLAMP_TO_EDGE;
1305 const tcu::Sampler::FilterMode magFilter = Sampler::NEAREST;
1307 const tcu::TextureCube& refTexture = m_texture->getTexture();
1308 const int viewportWidth = m_renderer.getRenderWidth();
1309 const int viewportHeight = m_renderer.getRenderHeight();
1324 const int curX = gridLayout[cellNdx].x();
1325 const int curY = gridLayout[cellNdx].y();
1326 const int curW = gridLayout[cellNdx].z();
1327 const int curH = gridLayout[cellNdx].w();
1328 const tcu::CubeFace cubeFace = (tcu::CubeFace)(cellNdx % tcu::CUBEFACE_LAST);
1341 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
1342 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
1367 const int curX = gridLayout[cellNdx].x();
1368 const int curY = gridLayout[cellNdx].y();
1369 const int curW = gridLayout[cellNdx].z();
1370 const int curH = gridLayout[cellNdx].w();
1371 const tcu::CubeFace cubeFace = (tcu::CubeFace)(cellNdx % tcu::CUBEFACE_LAST);
1414 const bool isOk = numFailedPixels == 0;
1423 TextureCubeMinLodTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1438 TextureCubeMaxLodTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1453 TextureCubeBaseLevelTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1460 const TextureCubeMipmapTestCaseParameters m_testParam;
1462 int getBaseLevel (int cellNdx) const
1464 const int numLevels = deLog2Floor32(m_texSize)+1;
1465 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x23fae13) % numLevels;
1479 TextureCubeMaxLevelTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1486 const TextureCubeMipmapTestCaseParameters m_testParam;
1487 int getMaxLevel (int cellNdx) const
1489 const int numLevels = deLog2Floor32(m_texSize)+1;
1490 const int maxLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x974e21) % numLevels;
1507 Texture3DLodControlTestInstance (Context& context, const ParameterType& testParameters);
1515 const int m_texWidth;
1516 const int m_texHeight;
1517 const int m_texDepth;
1520 Texture3DLodControlTestInstance (const Texture3DLodControlTestInstance& other);
1521 Texture3DLodControlTestInstance& operator= (const Texture3DLodControlTestInstance& other);
1523 const ParameterType m_testParameters;
1529 Texture3DLodControlTestInstance::Texture3DLodControlTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1539 const VkFormat format = VK_FORMAT_R8G8B8A8_UNORM;
1541 const tcu::Vec4& cScale = fmtInfo.lookupScale;
1542 const tcu::Vec4& cBias = fmtInfo.lookupBias;
1543 const int numLevels = deLog2Floor32(de::max(de::max(m_texWidth, m_texHeight), m_texDepth))+1;
1550 const deUint32 step = 0xff / (numLevels-1);
1551 const deUint32 inc = deClamp32(step*levelNdx, 0x00, 0xff);
1552 const deUint32 dec = 0xff - inc;
1553 const deUint32 rgb = (inc << 16) | (dec << 8) | 0xff;
1554 const deUint32 color = 0xff000000 | rgb;
1568 const tcu::Sampler::WrapMode wrapS = Sampler::CLAMP_TO_EDGE;
1569 const tcu::Sampler::WrapMode wrapT = Sampler::CLAMP_TO_EDGE;
1570 const tcu::Sampler::WrapMode wrapR = Sampler::CLAMP_TO_EDGE;
1571 const tcu::Sampler::FilterMode magFilter = Sampler::NEAREST;
1573 const tcu::Texture3D& refTexture = m_texture->getTexture();
1574 const tcu::TextureFormat& texFmt = refTexture.getFormat();
1575 const tcu::TextureFormatInfo fmtInfo = tcu::getTextureFormatInfo(texFmt);
1576 const int viewportWidth = m_renderer.getRenderWidth();
1577 const int viewportHeight = m_renderer.getRenderHeight();
1585 const int gridWidth = 4;
1586 const int gridHeight = 4;
1587 const int cellWidth = viewportWidth / gridWidth;
1588 const int cellHeight = viewportHeight / gridHeight;
1602 const int curX = cellWidth*gridX;
1603 const int curY = cellHeight*gridY;
1604 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
1605 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
1606 const int cellNdx = gridY*gridWidth + gridX;
1621 const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
1622 const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
1623 const bool isTrilinear = m_minFilter == Sampler::NEAREST_MIPMAP_LINEAR || m_minFilter == Sampler::LINEAR_MIPMAP_LINEAR;
1644 const int curX = cellWidth*gridX;
1645 const int curY = cellHeight*gridY;
1646 const int curW = gridX+1 == gridWidth ? (viewportWidth-curX) : cellWidth;
1647 const int curH = gridY+1 == gridHeight ? (viewportHeight-curY) : cellHeight;
1648 const int cellNdx = gridY*gridWidth + gridX;
1696 const bool isOk = numFailedPixels == 0;
1705 Texture3DMinLodTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1720 Texture3DMaxLodTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1735 Texture3DBaseLevelTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1742 const Texture3DMipmapTestCaseParameters m_testParam;
1744 int getBaseLevel (int cellNdx) const
1746 const int numLevels = deLog2Floor32(de::max(m_texWidth, de::max(m_texHeight, m_texDepth)))+1;
1747 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x7347e9) % numLevels;
1761 Texture3DMaxLevelTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1768 const Texture3DMipmapTestCaseParameters m_testParam;
1770 int getMaxLevel (int cellNdx) const
1772 const int numLevels = deLog2Floor32(de::max(m_texWidth, de::max(m_texHeight, m_texDepth)))+1;
1773 const int maxLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x9111e7) % numLevels;
1789 Texture2DImageViewMinLodTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1796 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1815 Texture2DImageViewMinLodBaseLevelTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1822 const Texture2DMipmapTestCaseParameters m_testParam;
1824 int getBaseLevel (int cellNdx) const
1826 const int numLevels = deLog2Floor32(de::max(m_texWidth, m_texHeight))+1;
1827 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0xac2f274a) % numLevels;
1832 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1851 Texture3DImageViewMinLodTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1857 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1876 Texture3DImageViewMinLodBaseLevelTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
1883 const Texture3DMipmapTestCaseParameters m_testParam;
1885 int getBaseLevel (int cellNdx) const
1887 const int numLevels = deLog2Floor32(de::max(m_texWidth, de::max(m_texHeight, m_texDepth)))+1;
1888 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x7347e9) % numLevels;
1893 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1913 TextureCubeImageViewMinLodTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1919 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1938 TextureCubeImageViewMinLodBaseLevelTestInstance (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
1945 const TextureCubeMipmapTestCaseParameters m_testParam;
1947 int getBaseLevel (int cellNdx) const
1949 const int numLevels = deLog2Floor32(m_texSize)+1;
1950 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x23fae13) % numLevels;
1955 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1974 Texture2DImageViewMinLodIntTexCoordTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
1981 const Texture2DMipmapTestCaseParameters m_testParam;
1983 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
1992 int getLodTexelFetch (int cellNdx, int baseLevel, int maxLevel) const
2009 Texture2DImageViewMinLodBaseLevelIntTexCoordTestInstance (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
2016 const Texture2DMipmapTestCaseParameters m_testParam;
2018 int getBaseLevel (int cellNdx) const
2020 const int numLevels = deLog2Floor32(de::max(m_texWidth, m_texHeight))+1;
2021 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0xac2f274a) % numLevels;
2026 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
2035 int getLodTexelFetch (int cellNdx, int baseLevel, int maxLevel) const
2054 const string& name,
2055 const Texture2DMipmapTestCaseParameters& params);
2057 void initPrograms (SourceCollections& sourceCollections) const;
2058 TestInstance* createInstance (Context& context) const;
2059 void checkSupport (Context& context) const;
2062 const Texture2DMipmapTestCaseParameters m_params;
2066 const string& name,
2067 const Texture2DMipmapTestCaseParameters& params)
2077 void Texture2DImageViewMinLodIntTexCoordTest::initPrograms(SourceCollections& sourceCollections) const
2079 static const char* vertShader =
2090 static const char* fragShader =
2111 void Texture2DImageViewMinLodIntTexCoordTest::checkSupport(Context& context) const
2138 TestInstance* Texture2DImageViewMinLodIntTexCoordTest::createInstance(Context& context) const
2149 Texture3DImageViewMinLodIntTexCoordTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
2156 const Texture3DMipmapTestCaseParameters m_testParam;
2158 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
2167 int getLodTexelFetch (int cellNdx, int baseLevel, int maxLevel) const
2184 Texture3DImageViewMinLodBaseLevelIntTexCoordTestInstance (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
2191 const Texture3DMipmapTestCaseParameters m_testParam;
2193 int getBaseLevel (int cellNdx) const
2195 const int numLevels = deLog2Floor32(de::max(m_texWidth, de::max(m_texHeight, m_texDepth)))+1;
2196 const int baseLevel = (deInt32Hash(cellNdx) ^ deStringHash(m_testParam.minFilterName) ^ 0x7347e9) % numLevels;
2201 float getImageViewMinLod (int cellNdx, int baseLevel, int maxLevel) const
2210 int getLodTexelFetch (int cellNdx, int baseLevel, int maxLevel) const
2229 const string& name,
2230 const Texture3DMipmapTestCaseParameters& params);
2232 void initPrograms (SourceCollections& sourceCollections) const;
2233 TestInstance* createInstance (Context& context) const;
2234 void checkSupport (Context& context) const;
2237 const Texture3DMipmapTestCaseParameters m_params;
2241 const string& name,
2242 const Texture3DMipmapTestCaseParameters& params)
2252 void Texture3DImageViewMinLodIntTexCoordTest::initPrograms(SourceCollections& sourceCollections) const
2254 static const char* vertShader =
2265 static const char* fragShader =
2286 void Texture3DImageViewMinLodIntTexCoordTest::checkSupport(Context& context) const
2313 TestInstance* Texture3DImageViewMinLodIntTexCoordTest::createInstance(Context& context) const
2334 float getNumericMinLod (void) const
2348 uint32_t getMinLodInteger (void) const
2362 bool needsRobustness2 (void) const
2371 TextureGatherMinLodTest (tcu::TestContext& testCtx, const std::string& name, const GatherParams& params)
2377 void initPrograms (vk::SourceCollections& programCollection) const override;
2378 TestInstance* createInstance (Context& context) const override;
2379 void checkSupport (Context& context) const override;
2388 TextureGatherMinLodInstance (Context& context, const GatherParams& params)
2405 void TextureGatherMinLodTest::initPrograms (vk::SourceCollections &programCollection) const
2434 << " const vec2 gatherCoords = vec2(0.5, 0.5);\n"
2435 << " const vec4 gatherRes = textureGather(u_sampler, gatherCoords, " << m_params.component << ");\n"
2442 void TextureGatherMinLodTest::checkSupport (Context& context) const
2461 TestInstance* TextureGatherMinLodTest::createInstance (Context& context) const
2471 virtual const DeviceInterface& getDeviceInterface (void) const = 0;
2472 virtual VkDevice getDevice (void) const = 0;
2473 virtual uint32_t getQueueFamilyIndex (void) const = 0;
2474 virtual VkQueue getQueue (void) const = 0;
2475 virtual Allocator& getAllocator (void) const = 0;
2492 const DeviceInterface& getDeviceInterface (void) const override { return m_deviceInterface; }
2493 VkDevice getDevice (void) const override { return m_device; }
2494 uint32_t getQueueFamilyIndex (void) const override { return m_queueFamilyIndex; }
2495 VkQueue getQueue (void) const override { return m_queue; }
2496 Allocator& getAllocator (void) const override { return m_allocator; }
2499 const DeviceInterface& m_deviceInterface;
2500 const VkDevice m_device;
2501 const uint32_t m_queueFamilyIndex;
2502 const VkQueue m_queue;
2512 const auto& vkp = context.getPlatformInterface();
2513 const auto& vki = context.getInstanceInterface();
2514 const auto instance = context.getInstance();
2515 const auto physicalDevice = context.getPhysicalDevice();
2516 const auto queuePriority = 1.0f;
2522 const VkDeviceQueueCreateInfo queueParams =
2525 DE_NULL, // const void* pNext;
2529 &queuePriority // const float* pQueuePriorities;
2532 const char* extensions[] =
2543 const VkDeviceCreateInfo deviceCreateInfo =
2553 extensions, // const char* const* ppEnabledExtensionNames;
2565 const DeviceInterface& getDeviceInterface (void) const override { return *m_vkd; }
2566 VkDevice getDevice (void) const override { return m_device.get(); }
2567 uint32_t getQueueFamilyIndex (void) const override { return m_queueFamilyIndex; }
2568 VkQueue getQueue (void) const override { return m_queue; }
2569 Allocator& getAllocator (void) const override { return *m_allocator; }
2605 const auto& deviceHelper = getDeviceHelper(m_context, m_params.needsRobustness2());
2606 const auto& vkd = deviceHelper.getDeviceInterface();
2607 const auto device = deviceHelper.getDevice();
2608 const auto queueIndex = deviceHelper.getQueueFamilyIndex();
2609 const auto queue = deviceHelper.getQueue();
2612 const auto imageFormat = VK_FORMAT_R8G8B8A8_UNORM;
2613 const auto tcuFormat = mapVkFormat(imageFormat);
2614 const auto colorExtent = makeExtent3D(1u, 1u, 1u);
2615 const tcu::IVec3 iColorExtent (static_cast<int>(colorExtent.width), static_cast<int>(colorExtent.height), static_cast<int>(colorExtent.depth));
2616 const auto texExtent = makeExtent3D(8u, 8u, 1u);
2617 const auto texMipLevels = 3u;
2618 const auto colorUsage = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
2619 const auto texUsage = (VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT);
2620 const auto minLodF = m_params.getNumericMinLod();
2621 const auto minLodU = m_params.getMinLodInteger();
2622 const tcu::Vec4 clearColor (0.0f, 0.0f, 0.0f, 1.0f);
2625 const VkImageCreateInfo colorCreateInfo =
2628 nullptr, // const void* pNext;
2640 nullptr, // const uint32_t* pQueueFamilyIndices;
2645 const auto colorSRR = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 1u, 0u, 1u);
2646 const auto colorSRL = makeImageSubresourceLayers(VK_IMAGE_ASPECT_COLOR_BIT, 0u, 0u, 1u);
2647 const auto colorBufferView = makeImageView(vkd, device, colorBuffer.get(), VK_IMAGE_VIEW_TYPE_2D, imageFormat, colorSRR);
2650 const VkImageCreateInfo texCreateInfo =
2653 nullptr, // const void* pNext;
2665 nullptr, // const uint32_t* pQueueFamilyIndices;
2670 const auto texSRR = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, 0u, texMipLevels, 0u, 1u);
2675 const VkImageViewMinLodCreateInfoEXT texMinLodInfo =
2678 nullptr, // const void* pNext;
2682 const VkImageViewCreateInfo texViewCreateInfo =
2685 &texMinLodInfo, // const void* pNext;
2694 const auto texView = createImageView(vkd, device, &texViewCreateInfo);
2697 const auto verifBufferSize = static_cast<VkDeviceSize>(iColorExtent.x() * iColorExtent.y() * iColorExtent.z() * tcu::getPixelSize(tcuFormat));
2698 const auto verifBufferCreateInfo = makeBufferCreateInfo(verifBufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT);
2706 const auto setLayout = setLayoutBuilder.build(vkd, device);
2709 const auto pipelineLayout = makePipelineLayout(vkd, device, setLayout.get());
2712 const VkSamplerCreateInfo samplerCreateInfo =
2715 nullptr, // const void* pNext;
2733 const auto sampler = createSampler(vkd, device, &samplerCreateInfo);
2738 const auto descriptorPool = poolBuilder.build(vkd, device, VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, 1u);
2739 const auto descriptorSet = makeDescriptorSet(vkd, device, descriptorPool.get(), setLayout.get());
2743 const auto combinedSamplerInfo = makeDescriptorImageInfo(sampler.get(), texView.get(), VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL);
2748 const auto renderPass = makeRenderPass(vkd, device, imageFormat);
2749 const auto framebuffer = makeFramebuffer(vkd, device, renderPass.get(), colorBufferView.get(), colorExtent.width, colorExtent.height);
2752 const auto& binaries = m_context.getBinaryCollection();
2753 const auto vertModule = createShaderModule(vkd, device, binaries.get("vert"));
2754 const auto fragModule = createShaderModule(vkd, device, binaries.get("frag"));
2761 const VkPipelineVertexInputStateCreateInfo vertexInputState = initVulkanStructure();
2763 const auto pipeline = makeGraphicsPipeline(vkd, device, pipelineLayout.get(),
2769 const auto cmdPool = makeCommandPool(vkd, device, queueIndex);
2770 const auto cmdBufferPtr = allocateCommandBuffer(vkd, device, cmdPool.get(), VK_COMMAND_BUFFER_LEVEL_PRIMARY);
2771 const auto cmdBuffer = cmdBufferPtr.get();
2776 const auto preClearBarrier = makeImageMemoryBarrier(0u, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, texture.get(), texSRR);
2785 const auto minColor = 0.004f; // Slightly above 1/255.
2786 const auto maxColor = 1.0f;
2790 const auto r = rnd.getFloat(minColor, maxColor);
2791 const auto g = rnd.getFloat(minColor, maxColor);
2792 const auto b = rnd.getFloat(minColor, maxColor);
2793 const auto a = rnd.getFloat(minColor, maxColor);
2794 const auto levelColor = makeClearValueColorF32(r, g, b, a).color;
2795 const auto levelRange = makeImageSubresourceRange(VK_IMAGE_ASPECT_COLOR_BIT, level, 1u, 0u, 1u);
2802 const auto postClearBarrier = makeImageMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_SHADER_READ_BIT, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, texture.get(), texSRR);
2812 const auto postColorBarier = makeImageMemoryBarrier(
2818 const auto copyRegion = makeBufferImageCopy(colorExtent, colorSRL);
2821 const auto preHostBarrier = makeMemoryBarrier(VK_ACCESS_TRANSFER_WRITE_BIT, VK_ACCESS_HOST_READ_BIT);
2831 const auto resultColor = resultAccess.getPixel(0, 0);
2832 const auto srcLevelColor = levelColors.at(minLodU);
2833 const auto compColor = srcLevelColor[m_params.component];
2834 const auto expectedColor = (m_params.needsRobustness2() // This has to match the fragment shader.
2837 const auto threshold = (m_params.needsRobustness2()
2841 const auto diff = abs(resultColor - expectedColor);
2842 const tcu::Vec4 thresholdVec (threshold, threshold, threshold, 0.0f);
2843 const auto thresholdMet = tcu::lessThanEqual(diff, thresholdVec);
2864 void checkTextureSupport (Context& context, const Texture2DMipmapTestCaseParameters& testParameters)
2886 void checkTextureSupport (Context& context, const TextureCubeMipmapTestCaseParameters& testParameters)
2908 void checkTextureSupport (Context& context, const Texture3DMipmapTestCaseParameters& testParameters)
2935 const struct
2938 const char* name;
2945 const struct
2948 const char* name;
2959 for (const auto& gatherMinLodCase : GatherMinLodCases)
2963 for (const auto& componentCase : ComponentCases)
2965 const uint32_t seed = (static_cast<uint32_t>(gatherMinLodCase.minLod) + 1000u) * 1000u
2986 static const struct
2988 const char* name;
2989 const Sampler::WrapMode mode;
2997 static const struct
2999 const char* name;
3000 const Sampler::FilterMode mode;
3009 static const struct
3011 const char* name;
3012 const Sampler::FilterMode mode;
3020 static const struct
3022 const CoordType type;
3023 const char* name;
3034 static const struct
3036 const char* name;
3037 const int width;
3038 const int height;
3046 static const struct
3048 const char* name;
3049 const int width;
3050 const int height;
3051 const int depth;
3058 const int cubeMapSize = 64;
3060 static const struct
3062 const CoordType type;
3063 const char* name;
3602 const auto minLodGatherGroup = createTestGroup(testCtx, "min_lod_gather", populateMinLodGatherGroup, destroyDeviceHelpers);