Commit 3c203531 by Chris Forbes

Wire up texture swizzles

Test: dEQP-VK.texture.swizzle.component_mapping.* Bug: b/129523279 Change-Id: Ib081a299d77e9e165fa3dbb7764c5ead8e507406 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/29948Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 2527b4d2
...@@ -61,10 +61,7 @@ namespace sw ...@@ -61,10 +61,7 @@ namespace sw
highPrecisionFiltering = false; highPrecisionFiltering = false;
border = 0; border = 0;
swizzleR = SWIZZLE_RED; swizzle = { VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A };
swizzleG = SWIZZLE_GREEN;
swizzleB = SWIZZLE_BLUE;
swizzleA = SWIZZLE_ALPHA;
compare = COMPARE_BYPASS; compare = COMPARE_BYPASS;
...@@ -92,10 +89,7 @@ namespace sw ...@@ -92,10 +89,7 @@ namespace sw
state.addressingModeW = getAddressingModeW(); state.addressingModeW = getAddressingModeW();
state.mipmapFilter = mipmapFilter(); state.mipmapFilter = mipmapFilter();
state.sRGB = (sRGB && textureFormat.isSRGBreadable()) || textureFormat.isSRGBformat(); state.sRGB = (sRGB && textureFormat.isSRGBreadable()) || textureFormat.isSRGBformat();
state.swizzleR = swizzleR; state.swizzle = swizzle;
state.swizzleG = swizzleG;
state.swizzleB = swizzleB;
state.swizzleA = swizzleA;
state.highPrecisionFiltering = highPrecisionFiltering; state.highPrecisionFiltering = highPrecisionFiltering;
state.compare = getCompareFunc(); state.compare = getCompareFunc();
...@@ -318,26 +312,6 @@ namespace sw ...@@ -318,26 +312,6 @@ namespace sw
this->highPrecisionFiltering = highPrecisionFiltering; this->highPrecisionFiltering = highPrecisionFiltering;
} }
void Sampler::setSwizzleR(SwizzleType swizzleR)
{
this->swizzleR = swizzleR;
}
void Sampler::setSwizzleG(SwizzleType swizzleG)
{
this->swizzleG = swizzleG;
}
void Sampler::setSwizzleB(SwizzleType swizzleB)
{
this->swizzleB = swizzleB;
}
void Sampler::setSwizzleA(SwizzleType swizzleA)
{
this->swizzleA = swizzleA;
}
void Sampler::setCompareFunc(CompareFunc compare) void Sampler::setCompareFunc(CompareFunc compare)
{ {
this->compare = compare; this->compare = compare;
......
...@@ -160,10 +160,7 @@ namespace sw ...@@ -160,10 +160,7 @@ namespace sw
AddressingMode addressingModeW; AddressingMode addressingModeW;
MipmapType mipmapFilter; MipmapType mipmapFilter;
bool sRGB; bool sRGB;
SwizzleType swizzleR; VkComponentMapping swizzle;
SwizzleType swizzleG;
SwizzleType swizzleB;
SwizzleType swizzleA;
bool highPrecisionFiltering; bool highPrecisionFiltering;
CompareFunc compare; CompareFunc compare;
...@@ -190,10 +187,6 @@ namespace sw ...@@ -190,10 +187,6 @@ namespace sw
void setBorderColor(const Color<float> &borderColor); void setBorderColor(const Color<float> &borderColor);
void setMaxAnisotropy(float maxAnisotropy); void setMaxAnisotropy(float maxAnisotropy);
void setHighPrecisionFiltering(bool highPrecisionFiltering); void setHighPrecisionFiltering(bool highPrecisionFiltering);
void setSwizzleR(SwizzleType swizzleR);
void setSwizzleG(SwizzleType swizzleG);
void setSwizzleB(SwizzleType swizzleB);
void setSwizzleA(SwizzleType swizzleA);
void setCompareFunc(CompareFunc compare); void setCompareFunc(CompareFunc compare);
void setMinLod(float minLod); void setMinLod(float minLod);
void setMaxLod(float maxLod); void setMaxLod(float maxLod);
...@@ -231,10 +224,7 @@ namespace sw ...@@ -231,10 +224,7 @@ namespace sw
bool highPrecisionFiltering; bool highPrecisionFiltering;
int border; int border;
SwizzleType swizzleR; VkComponentMapping swizzle;
SwizzleType swizzleG;
SwizzleType swizzleB;
SwizzleType swizzleA;
CompareFunc compare; CompareFunc compare;
Texture texture; Texture texture;
......
...@@ -20,16 +20,16 @@ ...@@ -20,16 +20,16 @@
namespace namespace
{ {
void applySwizzle(sw::SwizzleType swizzle, sw::Float4& f, const sw::Vector4f& c) void applySwizzle(VkComponentSwizzle swizzle, sw::Float4& f, const sw::Vector4f& c)
{ {
switch(swizzle) switch(swizzle)
{ {
case sw::SWIZZLE_RED: f = c.x; break; case VK_COMPONENT_SWIZZLE_R: f = c.x; break;
case sw::SWIZZLE_GREEN: f = c.y; break; case VK_COMPONENT_SWIZZLE_G: f = c.y; break;
case sw::SWIZZLE_BLUE: f = c.z; break; case VK_COMPONENT_SWIZZLE_B: f = c.z; break;
case sw::SWIZZLE_ALPHA: f = c.w; break; case VK_COMPONENT_SWIZZLE_A: f = c.w; break;
case sw::SWIZZLE_ZERO: f = sw::Float4(0.0f, 0.0f, 0.0f, 0.0f); break; case VK_COMPONENT_SWIZZLE_ZERO: f = sw::Float4(0.0f, 0.0f, 0.0f, 0.0f); break;
case sw::SWIZZLE_ONE: f = sw::Float4(1.0f, 1.0f, 1.0f, 1.0f); break; case VK_COMPONENT_SWIZZLE_ONE: f = sw::Float4(1.0f, 1.0f, 1.0f, 1.0f); break;
default: ASSERT(false); default: ASSERT(false);
} }
} }
...@@ -196,16 +196,16 @@ namespace sw ...@@ -196,16 +196,16 @@ namespace sw
} }
} }
if((state.swizzleR != SWIZZLE_RED) || if((state.swizzle.r != VK_COMPONENT_SWIZZLE_R) ||
(state.swizzleG != SWIZZLE_GREEN) || (state.swizzle.g != VK_COMPONENT_SWIZZLE_G) ||
(state.swizzleB != SWIZZLE_BLUE) || (state.swizzle.b != VK_COMPONENT_SWIZZLE_B) ||
(state.swizzleA != SWIZZLE_ALPHA)) (state.swizzle.a != VK_COMPONENT_SWIZZLE_A))
{ {
const Vector4f col(c); const Vector4f col(c);
applySwizzle(state.swizzleR, c.x, col); applySwizzle(state.swizzle.r, c.x, col);
applySwizzle(state.swizzleG, c.y, col); applySwizzle(state.swizzle.g, c.y, col);
applySwizzle(state.swizzleB, c.z, col); applySwizzle(state.swizzle.b, c.z, col);
applySwizzle(state.swizzleA, c.w, col); applySwizzle(state.swizzle.a, c.w, col);
} }
return c; return c;
......
...@@ -90,10 +90,7 @@ void SpirvShader::emitSamplerFunction( ...@@ -90,10 +90,7 @@ void SpirvShader::emitSamplerFunction(
samplerState.addressingModeW = convertAddressingMode(sampler->addressModeW); samplerState.addressingModeW = convertAddressingMode(sampler->addressModeW);
samplerState.mipmapFilter = convertMipmapMode(sampler); samplerState.mipmapFilter = convertMipmapMode(sampler);
samplerState.sRGB = false; ASSERT(imageView->getFormat().isSRGBformat() == false); // TODO(b/129523279) samplerState.sRGB = false; ASSERT(imageView->getFormat().isSRGBformat() == false); // TODO(b/129523279)
samplerState.swizzleR = SWIZZLE_RED; ASSERT(imageView->getComponentMapping().r == VK_COMPONENT_SWIZZLE_R); // TODO(b/129523279) samplerState.swizzle = imageView->getComponentMapping();
samplerState.swizzleG = SWIZZLE_GREEN; ASSERT(imageView->getComponentMapping().g == VK_COMPONENT_SWIZZLE_G); // TODO(b/129523279)
samplerState.swizzleB = SWIZZLE_BLUE; ASSERT(imageView->getComponentMapping().b == VK_COMPONENT_SWIZZLE_B); // TODO(b/129523279)
samplerState.swizzleA = SWIZZLE_ALPHA; ASSERT(imageView->getComponentMapping().a == VK_COMPONENT_SWIZZLE_A); // TODO(b/129523279)
samplerState.highPrecisionFiltering = false; samplerState.highPrecisionFiltering = false;
samplerState.compare = COMPARE_BYPASS; ASSERT(sampler->compareEnable == VK_FALSE); // TODO(b/129523279) samplerState.compare = COMPARE_BYPASS; ASSERT(sampler->compareEnable == VK_FALSE); // TODO(b/129523279)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment