From: Jarkko Pöyry Date: Fri, 24 Apr 2015 01:18:30 +0000 (-0700) Subject: Move getEffectiveTextureView() to tcuTextureUtil. X-Git-Tag: upstream/0.1.0~1723^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0d61ad28c122cede72a061c4b8346a176b245b69;p=platform%2Fupstream%2FVK-GL-CTS.git Move getEffectiveTextureView() to tcuTextureUtil. Change-Id: Ia3a1ff2da118c99b2c83d4ccf77eb325d03a85ca --- diff --git a/framework/common/tcuTextureUtil.cpp b/framework/common/tcuTextureUtil.cpp index 36f96e6..58e2809 100644 --- a/framework/common/tcuTextureUtil.cpp +++ b/framework/common/tcuTextureUtil.cpp @@ -1078,4 +1078,75 @@ TextureFormat getEffectiveDepthStencilTextureFormat (const TextureFormat& baseFo return toSamplerAccess(ConstPixelBufferAccess(baseFormat, IVec3(0, 0, 0), DE_NULL), mode).getFormat(); } +template +ViewType getEffectiveTView (const ViewType& src, std::vector& storage, const tcu::Sampler& sampler) +{ + storage.resize(src.getNumLevels()); + + ViewType view = ViewType(src.getNumLevels(), &storage[0]); + + for (int levelNdx = 0; levelNdx < src.getNumLevels(); ++levelNdx) + storage[levelNdx] = tcu::getEffectiveDepthStencilAccess(src.getLevel(levelNdx), sampler.depthStencilMode); + + return view; +} + +tcu::TextureCubeView getEffectiveTView (const tcu::TextureCubeView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + storage.resize(tcu::CUBEFACE_LAST * src.getNumLevels()); + + const tcu::ConstPixelBufferAccess* storagePtrs[tcu::CUBEFACE_LAST] = + { + &storage[0 * src.getNumLevels()], + &storage[1 * src.getNumLevels()], + &storage[2 * src.getNumLevels()], + &storage[3 * src.getNumLevels()], + &storage[4 * src.getNumLevels()], + &storage[5 * src.getNumLevels()], + }; + + tcu::TextureCubeView view = tcu::TextureCubeView(src.getNumLevels(), storagePtrs); + + for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; ++faceNdx) + for (int levelNdx = 0; levelNdx < src.getNumLevels(); ++levelNdx) + storage[faceNdx * src.getNumLevels() + levelNdx] = tcu::getEffectiveDepthStencilAccess(src.getLevelFace(levelNdx, (tcu::CubeFace)faceNdx), sampler.depthStencilMode); + + return view; +} + +tcu::Texture1DView getEffectiveTextureView (const tcu::Texture1DView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::Texture2DView getEffectiveTextureView (const tcu::Texture2DView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::Texture3DView getEffectiveTextureView (const tcu::Texture3DView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::Texture1DArrayView getEffectiveTextureView (const tcu::Texture1DArrayView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::Texture2DArrayView getEffectiveTextureView (const tcu::Texture2DArrayView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::TextureCubeView getEffectiveTextureView (const tcu::TextureCubeView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + +tcu::TextureCubeArrayView getEffectiveTextureView (const tcu::TextureCubeArrayView& src, std::vector& storage, const tcu::Sampler& sampler) +{ + return getEffectiveTView(src, storage, sampler); +} + } // tcu diff --git a/framework/common/tcuTextureUtil.hpp b/framework/common/tcuTextureUtil.hpp index b5989d0..f958e66 100644 --- a/framework/common/tcuTextureUtil.hpp +++ b/framework/common/tcuTextureUtil.hpp @@ -141,6 +141,17 @@ TextureFormat getEffectiveDepthStencilTextureFormat (const TextureFormat& bas PixelBufferAccess getEffectiveDepthStencilAccess (const PixelBufferAccess& baseAccess, Sampler::DepthStencilMode mode); ConstPixelBufferAccess getEffectiveDepthStencilAccess (const ConstPixelBufferAccess& baseAccess, Sampler::DepthStencilMode mode); +//! returns the currently effective view to an texture with a given sampler mode. Uses +//! storage for access storage storage + +tcu::Texture1DView getEffectiveTextureView (const tcu::Texture1DView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::Texture2DView getEffectiveTextureView (const tcu::Texture2DView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::Texture3DView getEffectiveTextureView (const tcu::Texture3DView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::Texture1DArrayView getEffectiveTextureView (const tcu::Texture1DArrayView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::Texture2DArrayView getEffectiveTextureView (const tcu::Texture2DArrayView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::TextureCubeView getEffectiveTextureView (const tcu::TextureCubeView& src, std::vector& storage, const tcu::Sampler& sampler); +tcu::TextureCubeArrayView getEffectiveTextureView (const tcu::TextureCubeArrayView& src, std::vector& storage, const tcu::Sampler& sampler); + } // tcu #endif // _TCUTEXTUREUTIL_HPP diff --git a/modules/glshared/glsTextureTestUtil.cpp b/modules/glshared/glsTextureTestUtil.cpp index 0e285d3..5966e22 100644 --- a/modules/glshared/glsTextureTestUtil.cpp +++ b/modules/glshared/glsTextureTestUtil.cpp @@ -152,43 +152,6 @@ static tcu::TextureCubeArrayView getSubView (const tcu::TextureCubeArrayView& vi return tcu::TextureCubeArrayView(numLevels, view.getLevels()+clampedBase); } -template -ViewType getEffectiveView (const ViewType& src, std::vector& storage, const tcu::Sampler& sampler) -{ - storage.resize(src.getNumLevels()); - - ViewType view = ViewType(src.getNumLevels(), &storage[0]); - - for (int levelNdx = 0; levelNdx < src.getNumLevels(); ++levelNdx) - storage[levelNdx] = tcu::getEffectiveDepthStencilAccess(src.getLevel(levelNdx), sampler.depthStencilMode); - - return view; -} - -template <> -tcu::TextureCubeView getEffectiveView (const tcu::TextureCubeView& src, std::vector& storage, const tcu::Sampler& sampler) -{ - storage.resize(tcu::CUBEFACE_LAST * src.getNumLevels()); - - const tcu::ConstPixelBufferAccess* storagePtrs[tcu::CUBEFACE_LAST] = - { - &storage[0 * src.getNumLevels()], - &storage[1 * src.getNumLevels()], - &storage[2 * src.getNumLevels()], - &storage[3 * src.getNumLevels()], - &storage[4 * src.getNumLevels()], - &storage[5 * src.getNumLevels()], - }; - - tcu::TextureCubeView view = tcu::TextureCubeView(src.getNumLevels(), storagePtrs); - - for (int faceNdx = 0; faceNdx < tcu::CUBEFACE_LAST; ++faceNdx) - for (int levelNdx = 0; levelNdx < src.getNumLevels(); ++levelNdx) - storage[faceNdx * src.getNumLevels() + levelNdx] = tcu::getEffectiveDepthStencilAccess(src.getLevelFace(levelNdx, (tcu::CubeFace)faceNdx), sampler.depthStencilMode); - - return view; -} - inline float linearInterpolate (float t, float minVal, float maxVal) { return minVal + (maxVal - minVal) * t; @@ -467,7 +430,7 @@ static void sampleTextureNonProjected (const SurfaceAccess& dst, const tcu::Text { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture1DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture1DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; @@ -502,7 +465,7 @@ static void sampleTextureNonProjected (const SurfaceAccess& dst, const tcu::Text { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture2DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture2DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; @@ -539,7 +502,7 @@ static void sampleTextureProjected (const SurfaceAccess& dst, const tcu::Texture { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture1DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture1DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; float dstW = (float)dst.getWidth(); @@ -579,7 +542,7 @@ static void sampleTextureProjected (const SurfaceAccess& dst, const tcu::Texture { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture2DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture2DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; float dstW = (float)dst.getWidth(); @@ -685,7 +648,7 @@ static void sampleTextureCube (const SurfaceAccess& dst, const tcu::TextureCubeV { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::TextureCubeView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::TextureCubeView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); const tcu::IVec2 dstSize = tcu::IVec2(dst.getWidth(), dst.getHeight()); const float dstW = float(dstSize.x()); @@ -744,7 +707,7 @@ static void sampleTextureNonProjected (const SurfaceAccess& dst, const tcu::Text { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture2DArrayView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture2DArrayView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; @@ -793,7 +756,7 @@ static void sampleTextureNonProjected (const SurfaceAccess& dst, const tcu::Text { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture1DArrayView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture1DArrayView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; @@ -839,7 +802,7 @@ static void sampleTextureNonProjected (const SurfaceAccess& dst, const tcu::Text { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture3DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture3DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; @@ -878,7 +841,7 @@ static void sampleTextureProjected (const SurfaceAccess& dst, const tcu::Texture { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::Texture3DView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::Texture3DView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); float lodBias = (params.flags & ReferenceParams::USE_BIAS) ? params.bias : 0.0f; float dstW = (float)dst.getWidth(); @@ -939,7 +902,7 @@ static void sampleTextureCubeArray (const SurfaceAccess& dst, const tcu::Texture { // Separate combined DS formats std::vector srcLevelStorage; - const tcu::TextureCubeArrayView src = getEffectiveView(rawSrc, srcLevelStorage, params.sampler); + const tcu::TextureCubeArrayView src = getEffectiveTextureView(rawSrc, srcLevelStorage, params.sampler); const float dstW = (float)dst.getWidth(); const float dstH = (float)dst.getHeight(); @@ -1744,7 +1707,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::Texture1DView src = getEffectiveView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); + const tcu::Texture1DView src = getEffectiveTextureView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0], texCoord[1], texCoord[2], texCoord[3]); @@ -1847,7 +1810,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::Texture2DView src = getEffectiveView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); + const tcu::Texture2DView src = getEffectiveTextureView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[2+0], texCoord[4+0], texCoord[6+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[2+1], texCoord[4+1], texCoord[6+1]); @@ -2030,7 +1993,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::TextureCubeView src = getEffectiveView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); + const tcu::TextureCubeView src = getEffectiveTextureView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[3+0], texCoord[6+0], texCoord[9+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[3+1], texCoord[6+1], texCoord[9+1]); @@ -2210,7 +2173,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::Texture3DView src = getEffectiveView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); + const tcu::Texture3DView src = getEffectiveTextureView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[3+0], texCoord[6+0], texCoord[9+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[3+1], texCoord[6+1], texCoord[9+1]); @@ -2381,7 +2344,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::Texture1DArrayView src = getEffectiveView(baseView, srcLevelStorage, sampleParams.sampler); + const tcu::Texture1DArrayView src = getEffectiveTextureView(baseView, srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[2+0], texCoord[4+0], texCoord[6+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[2+1], texCoord[4+1], texCoord[6+1]); @@ -2488,7 +2451,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::Texture2DArrayView src = getEffectiveView(baseView, srcLevelStorage, sampleParams.sampler); + const tcu::Texture2DArrayView src = getEffectiveTextureView(baseView, srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[3+0], texCoord[6+0], texCoord[9+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[3+1], texCoord[6+1], texCoord[9+1]); @@ -2675,7 +2638,7 @@ int computeTextureLookupDiff (const tcu::ConstPixelBufferAccess& result, DE_ASSERT(result.getWidth() == errorMask.getWidth() && result.getHeight() == errorMask.getHeight()); std::vector srcLevelStorage; - const tcu::TextureCubeArrayView src = getEffectiveView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); + const tcu::TextureCubeArrayView src = getEffectiveTextureView(getSubView(baseView, sampleParams.baseLevel, sampleParams.maxLevel), srcLevelStorage, sampleParams.sampler); const tcu::Vec4 sq = tcu::Vec4(texCoord[0+0], texCoord[4+0], texCoord[8+0], texCoord[12+0]); const tcu::Vec4 tq = tcu::Vec4(texCoord[0+1], texCoord[4+1], texCoord[8+1], texCoord[12+1]);