const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 10;
const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
const tcu::IVec4 formatBitDepth = getTextureFormatBitDepth(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
const tcu::PixelFormat pixelFormat (formatBitDepth[0], formatBitDepth[1], formatBitDepth[2], formatBitDepth[3]);
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
tcu::Surface referenceFrame (viewportWidth, viewportHeight);
tcu::Surface errorMask (viewportWidth, viewportHeight);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 0);
tcu::Surface errorMask (viewportWidth, viewportHeight);
int numFailedPixels = 0;
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
// Params for rendering reference
refParams.sampler = util::createSampler(m_testParameters.wrapS, m_testParameters.wrapT, m_testParameters.minFilter, m_testParameters.magFilter);
tcu::Surface referenceFrame (viewportWidth, viewportHeight);
tcu::Surface errorMask (viewportWidth, viewportHeight);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 20);
tcu::Surface referenceFrame (viewportWidth, viewportHeight);
tcu::Surface errorMask (viewportWidth, viewportHeight);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 0);
tcu::Surface errorMask (viewportWidth, viewportHeight);
int numFailedPixels = 0;
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
// Params for rendering reference
refParams.sampler = util::createSampler(wrapS, wrapT, m_testParameters.minFilter, magFilter);
tcu::Surface referenceFrame (viewportWidth, viewportHeight);
tcu::Surface errorMask (viewportWidth, viewportHeight);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 20);
{
const tcu::PixelFormat pixelFormat = getPixelFormat(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 18;
{
const tcu::PixelFormat pixelFormat = getPixelFormat(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 10;
{
const tcu::PixelFormat pixelFormat = getPixelFormat(vk::mapVkFormat(VK_FORMAT_R8G8B8A8_UNORM));
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_VULKAN);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 18;
return computeFloatingPointError(value, bits);
}
-Vec2 computeOpenGLLodBoundsFromDerivates (const float dudx, const float dvdx, const float dwdx, const float dudy, const float dvdy, const float dwdy, const LodPrecision& prec)
-{
- const float mu = de::max(deFloatAbs(dudx), deFloatAbs(dudy));
- const float mv = de::max(deFloatAbs(dvdx), deFloatAbs(dvdy));
- const float mw = de::max(deFloatAbs(dwdx), deFloatAbs(dwdy));
- const float minDBound = de::max(de::max(mu, mv), mw);
- const float maxDBound = mu + mv + mw;
- const float minDErr = computeFloatingPointError(minDBound, prec.derivateBits);
- const float maxDErr = computeFloatingPointError(maxDBound, prec.derivateBits);
- const float minLod = deFloatLog2(minDBound-minDErr);
- const float maxLod = deFloatLog2(maxDBound+maxDErr);
- const float lodErr = computeFixedPointError(prec.lodBits);
-
- DE_ASSERT(minLod <= maxLod);
- return Vec2(minLod-lodErr, maxLod+lodErr);
-}
-
-Vec2 computeVulkanLodBoundsFromDerivates (const float dudx, const float dvdx, const float dwdx, const float dudy, const float dvdy, const float dwdy, const LodPrecision& prec)
+Vec2 computeLodBoundsFromDerivates (const float dudx, const float dvdx, const float dwdx, const float dudy, const float dvdy, const float dwdy, const LodPrecision& prec)
{
const float mux = deFloatAbs(dudx);
const float mvx = deFloatAbs(dvdx);
return Vec2(minLod-lodErr, maxLod+lodErr);
}
-Vec2 computeLodBoundsFromDerivates (const float dudx, const float dvdx, const float dwdx, const float dudy, const float dvdy, const float dwdy, const LodPrecision& prec)
-{
- if (prec.rule == LodPrecision::RULE_VULKAN)
- return computeVulkanLodBoundsFromDerivates(dudx, dvdx, dwdx, dudy, dvdy, dwdy, prec);
- else
- return computeOpenGLLodBoundsFromDerivates(dudx, dvdx, dwdx, dudy, dvdy, dwdy, prec);
-}
-
Vec2 computeLodBoundsFromDerivates (const float dudx, const float dvdx, const float dudy, const float dvdy, const LodPrecision& prec)
{
return computeLodBoundsFromDerivates(dudx, dvdx, 0.0f, dudy, dvdy, 0.0f, prec);
*//*--------------------------------------------------------------------*/
struct LodPrecision
{
- enum Rule
- {
- RULE_OPENGL = 0, //!< OpenGL LOD
- RULE_VULKAN, //!< Vulkan LOD
-
- RULE_LAST
- };
-
- Rule rule; //!< LOD computation rule (Vulkan or OpenGL)
int derivateBits; //!< Number of bits in derivates. (Floating-point)
int lodBits; //!< Number of bits in final lod (accuracy of log2()). (Fixed-point)
- LodPrecision (Rule rule_)
- : rule (rule_)
- , derivateBits (22)
+ LodPrecision (void)
+ : derivateBits (22)
, lodBits (16)
{
}
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 7;
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 5;
tcu::Surface referenceFrame (viewport.width, viewport.height);
tcu::Surface errorMask (viewport.width, viewport.height);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 0);
int numFailedPixels = 0;
ReferenceParams params (TEXTURETYPE_CUBE);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
// Params for rendering reference
params.sampler = glu::mapGLSampler(m_wrapS, m_wrapT, m_minFilter, magFilter);
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 10;
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
const bool isNearestOnly = m_minFilter == GL_NEAREST && m_magFilter == GL_NEAREST;
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
tcu::Surface referenceFrame (viewport.width, viewport.height);
tcu::Surface errorMask (viewport.width, viewport.height);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 0);
int numFailedPixels = 0;
ReferenceParams params (TEXTURETYPE_CUBE);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
// Params for rendering reference
params.sampler = glu::mapGLSampler(m_wrapS, m_wrapT, m_minFilter, magFilter);
tcu::Surface referenceFrame (viewport.width, viewport.height);
tcu::Surface errorMask (viewport.width, viewport.height);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 20);
tcu::Surface referenceFrame (viewport.width, viewport.height);
tcu::Surface errorMask (viewport.width, viewport.height);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 0);
int numFailedPixels = 0;
ReferenceParams params (TEXTURETYPE_CUBE);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
// Params for rendering reference
params.sampler = glu::mapGLSampler(wrapS, wrapT, m_minFilter, magFilter);
tcu::Surface referenceFrame (viewport.width, viewport.height);
tcu::Surface errorMask (viewport.width, viewport.height);
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
int numFailedPixels = 0;
lookupPrec.coordBits = tcu::IVec3(20, 20, 20);
{
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 18;
{
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 10;
{
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::TexComparePrecision texComparePrecision;
lodPrecision.derivateBits = 18;
const bool isSRGB = tcu::isSRGB(texFormat);
const tcu::PixelFormat pixelFormat = m_renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 colorBits = tcu::max(getBitsVec(pixelFormat) - (isNearestOnly && !isSRGB ? 1 : 2), tcu::IVec4(0));
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 18;
tcu::Sampler::NEAREST,
tcu::Sampler::NEAREST));
tcu::LookupPrecision lookupPrec;
- tcu::LodPrecision lodPrec (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrec;
bool compareOk;
lookupPrec.colorMask = tcu::BVec4(true, true, true, true);
{
const tcu::PixelFormat pixelFormat = m_context.getRenderTarget().getPixelFormat();
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
std::vector<float> texCoord;
bool verificationOk;
const tcu::IVec4 colorBits = tcu::max(glu::TextureTestUtil::getBitsVec(pixelFormat) - tcu::IVec4(colorErrorBits), tcu::IVec4(0));
tcu::Surface reference (renderedFrame.getWidth(), renderedFrame.getHeight());
tcu::Surface errorMask (renderedFrame.getWidth(), renderedFrame.getHeight());
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
int numFailedPixels;
const tcu::PixelFormat pixelFormat = renderCtx.getRenderTarget().getPixelFormat();
const tcu::IVec4 coordBits = tcu::IVec4(10);
const tcu::IVec4 colorBits = max(getBitsVec(pixelFormat) - (isNearestOnly ? 1 : 2), tcu::IVec4(0)); // 1 inaccurate bit if nearest only, 2 otherwise
- tcu::LodPrecision lodPrecision (tcu::LodPrecision::RULE_OPENGL);
+ tcu::LodPrecision lodPrecision;
tcu::LookupPrecision lookupPrecision;
lodPrecision.derivateBits = 10;