Commit d573e7e7 by Chris Forbes

Add support for sampling VK_FORMAT_A2B10G10R10_UNORM_PACK32

Bug: b/131246807 Test: dEQP-VK.*a2b10g10r10_unorm* Change-Id: If51d38ddc8cbb334970e2719cb0fd96a9b240b09 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/30388Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarChris Forbes <chrisforbes@google.com> Presubmit-Ready: Chris Forbes <chrisforbes@google.com>
parent 83a3eb49
...@@ -203,6 +203,8 @@ namespace sw ...@@ -203,6 +203,8 @@ namespace sw
c.w = Float4(1.0f); c.w = Float4(1.0f);
case VK_FORMAT_R32G32B32A32_SFLOAT: case VK_FORMAT_R32G32B32A32_SFLOAT:
case VK_FORMAT_R16G16B16A16_SFLOAT: case VK_FORMAT_R16G16B16A16_SFLOAT:
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
case VK_FORMAT_A2B10G10R10_UINT_PACK32:
break; break;
default: default:
ASSERT(false); ASSERT(false);
...@@ -1682,6 +1684,25 @@ namespace sw ...@@ -1682,6 +1684,25 @@ namespace sw
ASSERT(false); ASSERT(false);
} }
} }
else if(state.textureFormat == VK_FORMAT_A2B10G10R10_UNORM_PACK32)
{
Int4 cc;
cc = Insert(cc, Pointer<Int>(buffer[f0])[index[0]], 0);
cc = Insert(cc, Pointer<Int>(buffer[f1])[index[1]], 1);
cc = Insert(cc, Pointer<Int>(buffer[f2])[index[2]], 2);
cc = Insert(cc, Pointer<Int>(buffer[f3])[index[3]], 3);
// shift each 10 bit field left 6, and replicate 6 high bits into bottom 6
c.x = Short4(((cc << 6) & Int4(0xFFC0)) | ((cc >> 4) & Int4(0x3F)));
c.y = Short4(((cc >> 4) & Int4(0xFFC0)) | ((cc >> 14) & Int4(0x3F)));
c.z = Short4(((cc >> 14) & Int4(0xFFC0)) | ((cc >> 24) & Int4(0x3F)));
c.w = Short4(((cc >> 16) & Int4(0xC000)));
// replicate 2 bit alpha component all the way down
c.w |= (c.w >> 8) & Short4(0xc0);
c.w |= (c.w >> 4) & Short4(0x0c0c);
c.w |= (c.w >> 2) & Short4(0x3333);
}
else ASSERT(false); else ASSERT(false);
if (state.textureFormat.isSRGBformat()) if (state.textureFormat.isSRGBformat())
......
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