Color write mask refactor
This CL reorders all write masks so that they work with the RGBA
ordered channel mask.
Bug: b/204322086
Change-Id: I1adbf67f7f7be840647ebb51e06b57f6c78d547c
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/69910
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/Constants.cpp b/src/Pipeline/Constants.cpp
index 8db8562..0570609 100644
--- a/src/Pipeline/Constants.cpp
+++ b/src/Pipeline/Constants.cpp
@@ -235,19 +235,19 @@
for(int i = 0; i < 8; i++)
{
- mask565Q[i] = word4((i & 0x1 ? 0x001F : 0) | (i & 0x2 ? 0x07E0 : 0) | (i & 0x4 ? 0xF800 : 0));
+ mask565Q[i] = word4((i & 0x1 ? 0xF800 : 0) | (i & 0x2 ? 0x07E0 : 0) | (i & 0x4 ? 0x001F : 0));
mask11X[i] = dword4((i & 0x1 ? 0x000007FFu : 0) | (i & 0x2 ? 0x003FF800u : 0) | (i & 0x4 ? 0xFFC00000u : 0));
}
for(int i = 0; i < 16; i++)
{
- mask5551Q[i] = word4((i & 0x1 ? 0x001F : 0) | (i & 0x2 ? 0x03E0 : 0) | (i & 0x4 ? 0x7C00 : 0) | (i & 8 ? 0x8000 : 0));
- maskr5g5b5a1Q[i] = word4((i & 0x1 ? 0x003E : 0) | (i & 0x2 ? 0x07C0 : 0) | (i & 0x4 ? 0xF800 : 0) | (i & 8 ? 0x0001 : 0));
- maskb5g5r5a1Q[i] = word4((i & 0x1 ? 0xF800 : 0) | (i & 0x2 ? 0x07C0 : 0) | (i & 0x4 ? 0x003E : 0) | (i & 8 ? 0x0001 : 0));
- mask4rgbaQ[i] = word4((i & 0x1 ? 0x00F0 : 0) | (i & 0x2 ? 0x0F00 : 0) | (i & 0x4 ? 0xF000 : 0) | (i & 8 ? 0x000F : 0));
- mask4bgraQ[i] = word4((i & 0x1 ? 0xF000 : 0) | (i & 0x2 ? 0x0F00 : 0) | (i & 0x4 ? 0x00F0 : 0) | (i & 8 ? 0x000F : 0));
- mask4abgrQ[i] = word4((i & 0x1 ? 0x0F00 : 0) | (i & 0x2 ? 0x00F0 : 0) | (i & 0x4 ? 0x000F : 0) | (i & 8 ? 0xF000 : 0));
- mask4argbQ[i] = word4((i & 0x1 ? 0x000F : 0) | (i & 0x2 ? 0x00F0 : 0) | (i & 0x4 ? 0x0F00 : 0) | (i & 8 ? 0xF000 : 0));
+ mask5551Q[i] = word4((i & 0x1 ? 0x7C00 : 0) | (i & 0x2 ? 0x03E0 : 0) | (i & 0x4 ? 0x001F : 0) | (i & 8 ? 0x8000 : 0));
+ maskr5g5b5a1Q[i] = word4((i & 0x1 ? 0xF800 : 0) | (i & 0x2 ? 0x07C0 : 0) | (i & 0x4 ? 0x003E : 0) | (i & 8 ? 0x0001 : 0));
+ maskb5g5r5a1Q[i] = word4((i & 0x1 ? 0x003E : 0) | (i & 0x2 ? 0x07C0 : 0) | (i & 0x4 ? 0xF800 : 0) | (i & 8 ? 0x0001 : 0));
+ mask4rgbaQ[i] = word4((i & 0x1 ? 0xF000 : 0) | (i & 0x2 ? 0x0F00 : 0) | (i & 0x4 ? 0x00F0 : 0) | (i & 8 ? 0x000F : 0));
+ mask4bgraQ[i] = word4((i & 0x1 ? 0x00F0 : 0) | (i & 0x2 ? 0x0F00 : 0) | (i & 0x4 ? 0xF000 : 0) | (i & 8 ? 0x000F : 0));
+ mask4abgrQ[i] = word4((i & 0x1 ? 0x000F : 0) | (i & 0x2 ? 0x00F0 : 0) | (i & 0x4 ? 0x0F00 : 0) | (i & 8 ? 0xF000 : 0));
+ mask4argbQ[i] = word4((i & 0x1 ? 0x0F00 : 0) | (i & 0x2 ? 0x00F0 : 0) | (i & 0x4 ? 0x000F : 0) | (i & 8 ? 0xF000 : 0));
}
for(int i = 0; i < 4; i++)
diff --git a/src/Pipeline/PixelRoutine.cpp b/src/Pipeline/PixelRoutine.cpp
index 1f01e61..0abe2c1 100644
--- a/src/Pipeline/PixelRoutine.cpp
+++ b/src/Pipeline/PixelRoutine.cpp
@@ -1234,8 +1234,7 @@
break;
}
- int rgbaWriteMask = state.colorWriteActive(index);
- int bgraWriteMask = (rgbaWriteMask & 0x0000000A) | (rgbaWriteMask & 0x00000001) << 2 | (rgbaWriteMask & 0x00000004) >> 2;
+ int writeMask = state.colorWriteActive(index);
switch(state.colorFormat[index])
{
@@ -1329,7 +1328,7 @@
break;
case VK_FORMAT_B8G8R8A8_UNORM:
case VK_FORMAT_B8G8R8A8_SRGB:
- if(rgbaWriteMask == 0x7)
+ if(writeMask == 0x7)
{
current.x = As<Short4>(As<UShort4>(current.x) >> 8);
current.y = As<Short4>(As<UShort4>(current.y) >> 8);
@@ -1367,7 +1366,7 @@
case VK_FORMAT_R8G8B8A8_SRGB:
case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
- if(rgbaWriteMask == 0x7)
+ if(writeMask == 0x7)
{
current.x = As<Short4>(As<UShort4>(current.x) >> 8);
current.y = As<Short4>(As<UShort4>(current.y) >> 8);
@@ -1478,16 +1477,16 @@
switch(state.colorFormat[index])
{
case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
- channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4rgbaQ[bgraWriteMask & 0xF][0]));
+ channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4rgbaQ[writeMask][0]));
break;
case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
- channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4bgraQ[bgraWriteMask & 0xF][0]));
+ channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4bgraQ[writeMask][0]));
break;
case VK_FORMAT_A4R4G4B4_UNORM_PACK16:
- channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4argbQ[bgraWriteMask & 0xF][0]));
+ channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4argbQ[writeMask][0]));
break;
case VK_FORMAT_A4B4G4R4_UNORM_PACK16:
- channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4abgrQ[bgraWriteMask & 0xF][0]));
+ channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask4abgrQ[writeMask][0]));
break;
default:
UNREACHABLE("Format: %s", vk::Stringify(state.colorFormat[index]).c_str());
@@ -1495,7 +1494,7 @@
Int c01 = Extract(As<Int2>(current.x), 0);
Int mask01 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][0]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1506,7 +1505,7 @@
Int c23 = Extract(As<Int2>(current.x), 1);
Int mask23 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][2]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1518,11 +1517,11 @@
buffer += 2 * x;
Int value = *Pointer<Int>(buffer);
- Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, maskr5g5b5a1Q[bgraWriteMask & 0xF][0]));
+ Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, maskr5g5b5a1Q[writeMask][0]));
Int c01 = Extract(As<Int2>(current.x), 0);
Int mask01 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][0]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1533,7 +1532,7 @@
Int c23 = Extract(As<Int2>(current.x), 1);
Int mask23 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][2]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1545,11 +1544,11 @@
buffer += 2 * x;
Int value = *Pointer<Int>(buffer);
- Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, maskb5g5r5a1Q[bgraWriteMask & 0xF][0]));
+ Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, maskb5g5r5a1Q[writeMask][0]));
Int c01 = Extract(As<Int2>(current.x), 0);
Int mask01 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][0]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1560,7 +1559,7 @@
Int c23 = Extract(As<Int2>(current.x), 1);
Int mask23 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][2]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1572,11 +1571,11 @@
buffer += 2 * x;
Int value = *Pointer<Int>(buffer);
- Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask5551Q[bgraWriteMask & 0xF][0]));
+ Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask5551Q[writeMask][0]));
Int c01 = Extract(As<Int2>(current.x), 0);
Int mask01 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][0]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1587,7 +1586,7 @@
Int c23 = Extract(As<Int2>(current.x), 1);
Int mask23 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][2]) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1599,11 +1598,11 @@
buffer += 2 * x;
Int value = *Pointer<Int>(buffer);
- Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask565Q[bgraWriteMask & 0x7][0]));
+ Int channelMask = *Pointer<Int>(constants + OFFSET(Constants, mask565Q[writeMask & 0x7][0]));
Int c01 = Extract(As<Int2>(current.x), 0);
Int mask01 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][0]) + xMask * 8);
- if((bgraWriteMask & 0x00000007) != 0x00000007)
+ if((writeMask & 0x00000007) != 0x00000007)
{
mask01 &= channelMask;
}
@@ -1614,7 +1613,7 @@
Int c23 = Extract(As<Int2>(current.x), 1);
Int mask23 = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[0][2]) + xMask * 8);
- if((bgraWriteMask & 0x00000007) != 0x00000007)
+ if((writeMask & 0x00000007) != 0x00000007)
{
mask23 &= channelMask;
}
@@ -1624,12 +1623,14 @@
case VK_FORMAT_B8G8R8A8_UNORM:
case VK_FORMAT_B8G8R8A8_SRGB:
{
+ writeMask = (writeMask & 0x0000000A) | (writeMask & 0x00000001) << 2 | (writeMask & 0x00000004) >> 2;
+
buffer += x * 4;
Short4 value = *Pointer<Short4>(buffer);
- Short4 channelMask = *Pointer<Short4>(constants + OFFSET(Constants, maskB4Q[bgraWriteMask]));
+ Short4 channelMask = *Pointer<Short4>(constants + OFFSET(Constants, maskB4Q[writeMask]));
Short4 mask01 = *Pointer<Short4>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1639,7 +1640,7 @@
value = *Pointer<Short4>(buffer);
Short4 mask23 = *Pointer<Short4>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(bgraWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1653,10 +1654,10 @@
{
buffer += x * 4;
Short4 value = *Pointer<Short4>(buffer);
- Short4 channelMask = *Pointer<Short4>(constants + OFFSET(Constants, maskB4Q[rgbaWriteMask]));
+ Short4 channelMask = *Pointer<Short4>(constants + OFFSET(Constants, maskB4Q[writeMask]));
Short4 mask01 = *Pointer<Short4>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask01 &= channelMask;
}
@@ -1666,7 +1667,7 @@
value = *Pointer<Short4>(buffer);
Short4 mask23 = *Pointer<Short4>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
mask23 &= channelMask;
}
@@ -1674,7 +1675,7 @@
}
break;
case VK_FORMAT_R8G8_UNORM:
- if((rgbaWriteMask & 0x00000003) != 0x0)
+ if((writeMask & 0x00000003) != 0x0)
{
buffer += 2 * x;
Int2 value;
@@ -1684,9 +1685,9 @@
Int2 packedCol = As<Int2>(current.x);
UInt2 mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
- Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskB4Q[5 * (rgbaWriteMask & 0x3)]));
+ Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskB4Q[5 * (writeMask & 0x3)]));
UInt2 rgbaMask = As<UInt2>(Int2(tmpMask, tmpMask));
mergedMask &= rgbaMask;
}
@@ -1698,7 +1699,7 @@
}
break;
case VK_FORMAT_R8_UNORM:
- if(rgbaWriteMask & 0x00000001)
+ if(writeMask & 0x00000001)
{
buffer += 1 * x;
Short4 value;
@@ -1714,7 +1715,7 @@
}
break;
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
- rgbaWriteMask = bgraWriteMask;
+ writeMask = (writeMask & 0x0000000A) | (writeMask & 0x00000001) << 2 | (writeMask & 0x00000004) >> 2;
// [[fallthrough]]
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
{
@@ -1722,9 +1723,9 @@
Int2 value = *Pointer<Int2>(buffer, 16);
Int2 mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[rgbaWriteMask][0]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask][0]));
}
*Pointer<Int2>(buffer) = (As<Int2>(current.x) & mergedMask) | (value & ~mergedMask);
@@ -1732,9 +1733,9 @@
value = *Pointer<Int2>(buffer, 16);
mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[rgbaWriteMask][0]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask][0]));
}
*Pointer<Int2>(buffer) = (As<Int2>(current.y) & mergedMask) | (value & ~mergedMask);
}
@@ -2580,8 +2581,7 @@
UNSUPPORTED("VkFormat: %d", int(format));
}
- int rgbaWriteMask = state.colorWriteActive(index);
- int bgraWriteMask = (rgbaWriteMask & 0x0000000A) | (rgbaWriteMask & 0x00000001) << 2 | (rgbaWriteMask & 0x00000004) >> 2;
+ int writeMask = state.colorWriteActive(index);
Int xMask; // Combination of all masks
@@ -2608,7 +2608,7 @@
case VK_FORMAT_R32_SFLOAT:
case VK_FORMAT_R32_SINT:
case VK_FORMAT_R32_UINT:
- if(rgbaWriteMask & 0x00000001)
+ if(writeMask & 0x00000001)
{
buffer += 4 * x;
@@ -2638,7 +2638,7 @@
}
break;
case VK_FORMAT_R16_SFLOAT:
- if(rgbaWriteMask & 0x00000001)
+ if(writeMask & 0x00000001)
{
buffer += 2 * x;
@@ -2666,7 +2666,7 @@
case VK_FORMAT_R16_UNORM:
case VK_FORMAT_R16_SINT:
case VK_FORMAT_R16_UINT:
- if(rgbaWriteMask & 0x00000001)
+ if(writeMask & 0x00000001)
{
buffer += 2 * x;
@@ -2697,7 +2697,7 @@
break;
case VK_FORMAT_R8_SINT:
case VK_FORMAT_R8_UINT:
- if(rgbaWriteMask & 0x00000001)
+ if(writeMask & 0x00000001)
{
buffer += x;
@@ -2733,11 +2733,11 @@
value = *Pointer<Float4>(buffer);
- if((rgbaWriteMask & 0x00000003) != 0x00000003)
+ if((writeMask & 0x00000003) != 0x00000003)
{
Float4 masked = value;
- color.x = As<Float4>(As<Int4>(color.x) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[rgbaWriteMask & 0x3][0])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[~rgbaWriteMask & 0x3][0])));
+ color.x = As<Float4>(As<Int4>(color.x) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[writeMask & 0x3][0])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[~writeMask & 0x3][0])));
color.x = As<Float4>(As<Int4>(color.x) | As<Int4>(masked));
}
@@ -2750,13 +2750,13 @@
value = *Pointer<Float4>(buffer);
- if((rgbaWriteMask & 0x00000003) != 0x00000003)
+ if((writeMask & 0x00000003) != 0x00000003)
{
Float4 masked;
masked = value;
- color.y = As<Float4>(As<Int4>(color.y) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[rgbaWriteMask & 0x3][0])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[~rgbaWriteMask & 0x3][0])));
+ color.y = As<Float4>(As<Int4>(color.y) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[writeMask & 0x3][0])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, maskD01X[~writeMask & 0x3][0])));
color.y = As<Float4>(As<Int4>(color.y) | As<Int4>(masked));
}
@@ -2766,7 +2766,7 @@
*Pointer<Float4>(buffer) = color.y;
break;
case VK_FORMAT_R16G16_SFLOAT:
- if((rgbaWriteMask & 0x00000003) != 0x0)
+ if((writeMask & 0x00000003) != 0x0)
{
buffer += 4 * x;
@@ -2777,9 +2777,9 @@
UShort4 value = *Pointer<UShort4>(buffer);
UInt2 mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
- Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[rgbaWriteMask & 0x3]));
+ Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[writeMask & 0x3]));
rgbaMask = As<UInt2>(Int2(tmpMask, tmpMask));
mergedMask &= rgbaMask;
}
@@ -2791,7 +2791,7 @@
packedCol = Insert(packedCol, (UInt(As<UShort>(Half(color.y.w))) << 16) | UInt(As<UShort>(Half(color.y.z))), 1);
value = *Pointer<UShort4>(buffer);
mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
mergedMask &= rgbaMask;
}
@@ -2801,7 +2801,7 @@
case VK_FORMAT_R16G16_UNORM:
case VK_FORMAT_R16G16_SINT:
case VK_FORMAT_R16G16_UINT:
- if((rgbaWriteMask & 0x00000003) != 0x0)
+ if((writeMask & 0x00000003) != 0x0)
{
buffer += 4 * x;
@@ -2809,9 +2809,9 @@
UShort4 packedCol = UShort4(As<Int4>(color.x));
UShort4 value = *Pointer<UShort4>(buffer);
UInt2 mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
- Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[rgbaWriteMask & 0x3]));
+ Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskW4Q[writeMask & 0x3]));
rgbaMask = As<UInt2>(Int2(tmpMask, tmpMask));
mergedMask &= rgbaMask;
}
@@ -2822,7 +2822,7 @@
packedCol = UShort4(As<Int4>(color.y));
value = *Pointer<UShort4>(buffer);
mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
mergedMask &= rgbaMask;
}
@@ -2831,7 +2831,7 @@
break;
case VK_FORMAT_R8G8_SINT:
case VK_FORMAT_R8G8_UINT:
- if((rgbaWriteMask & 0x00000003) != 0x0)
+ if((writeMask & 0x00000003) != 0x0)
{
buffer += 2 * x;
@@ -2851,9 +2851,9 @@
}
UInt2 mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q) + xMask * 8);
- if((rgbaWriteMask & 0x3) != 0x3)
+ if((writeMask & 0x3) != 0x3)
{
- Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskB4Q[5 * (rgbaWriteMask & 0x3)]));
+ Int tmpMask = *Pointer<Int>(constants + OFFSET(Constants, maskB4Q[5 * (writeMask & 0x3)]));
UInt2 rgbaMask = As<UInt2>(Int2(tmpMask, tmpMask));
mergedMask &= rgbaMask;
}
@@ -2873,11 +2873,11 @@
{
value = *Pointer<Float4>(buffer, 16);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
Float4 masked = value;
- color.x = As<Float4>(As<Int4>(color.x) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[rgbaWriteMask])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[rgbaWriteMask])));
+ color.x = As<Float4>(As<Int4>(color.x) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[writeMask])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[writeMask])));
color.x = As<Float4>(As<Int4>(color.x) | As<Int4>(masked));
}
@@ -2890,11 +2890,11 @@
{
value = *Pointer<Float4>(buffer + 16, 16);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
Float4 masked = value;
- color.y = As<Float4>(As<Int4>(color.y) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[rgbaWriteMask])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[rgbaWriteMask])));
+ color.y = As<Float4>(As<Int4>(color.y) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[writeMask])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[writeMask])));
color.y = As<Float4>(As<Int4>(color.y) | As<Int4>(masked));
}
@@ -2909,11 +2909,11 @@
{
value = *Pointer<Float4>(buffer, 16);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
Float4 masked = value;
- color.z = As<Float4>(As<Int4>(color.z) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[rgbaWriteMask])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[rgbaWriteMask])));
+ color.z = As<Float4>(As<Int4>(color.z) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[writeMask])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[writeMask])));
color.z = As<Float4>(As<Int4>(color.z) | As<Int4>(masked));
}
@@ -2926,11 +2926,11 @@
{
value = *Pointer<Float4>(buffer + 16, 16);
- if(rgbaWriteMask != 0x0000000F)
+ if(writeMask != 0x0000000F)
{
Float4 masked = value;
- color.w = As<Float4>(As<Int4>(color.w) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[rgbaWriteMask])));
- masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[rgbaWriteMask])));
+ color.w = As<Float4>(As<Int4>(color.w) & *Pointer<Int4>(constants + OFFSET(Constants, maskD4X[writeMask])));
+ masked = As<Float4>(As<Int4>(masked) & *Pointer<Int4>(constants + OFFSET(Constants, invMaskD4X[writeMask])));
color.w = As<Float4>(As<Int4>(color.w) | As<Int4>(masked));
}
@@ -2941,7 +2941,7 @@
}
break;
case VK_FORMAT_R16G16B16A16_SFLOAT:
- if((rgbaWriteMask & 0x0000000F) != 0x0)
+ if((writeMask & 0x0000000F) != 0x0)
{
buffer += 8 * x;
@@ -2953,9 +2953,9 @@
packedCol = Insert(packedCol, (UInt(As<UShort>(Half(color.y.y))) << 16) | UInt(As<UShort>(Half(color.y.x))), 2);
packedCol = Insert(packedCol, (UInt(As<UShort>(Half(color.y.w))) << 16) | UInt(As<UShort>(Half(color.y.z))), 3);
UInt4 mergedMask = *Pointer<UInt4>(constants + OFFSET(Constants, maskQ01X) + xMask * 16);
- if((rgbaWriteMask & 0xF) != 0xF)
+ if((writeMask & 0xF) != 0xF)
{
- UInt2 tmpMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q[rgbaWriteMask]));
+ UInt2 tmpMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q[writeMask]));
rgbaMask = UInt4(tmpMask, tmpMask);
mergedMask &= rgbaMask;
}
@@ -2969,7 +2969,7 @@
packedCol = Insert(packedCol, (UInt(As<UShort>(Half(color.w.y))) << 16) | UInt(As<UShort>(Half(color.w.x))), 2);
packedCol = Insert(packedCol, (UInt(As<UShort>(Half(color.w.w))) << 16) | UInt(As<UShort>(Half(color.w.z))), 3);
mergedMask = *Pointer<UInt4>(constants + OFFSET(Constants, maskQ23X) + xMask * 16);
- if((rgbaWriteMask & 0xF) != 0xF)
+ if((writeMask & 0xF) != 0xF)
{
mergedMask &= rgbaMask;
}
@@ -2977,7 +2977,7 @@
}
break;
case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
- if((rgbaWriteMask & 0x7) != 0x0)
+ if((writeMask & 0x7) != 0x0)
{
buffer += 4 * x;
@@ -2995,9 +2995,9 @@
value = Insert(value, *Pointer<UInt>(buffer + 4), 3);
UInt4 mask = *Pointer<UInt4>(constants + OFFSET(Constants, maskD4X[0]) + xMask * 16, 16);
- if((rgbaWriteMask & 0x7) != 0x7)
+ if((writeMask & 0x7) != 0x7)
{
- mask &= *Pointer<UInt4>(constants + OFFSET(Constants, mask11X[rgbaWriteMask & 0x7]), 16);
+ mask &= *Pointer<UInt4>(constants + OFFSET(Constants, mask11X[writeMask & 0x7]), 16);
}
value = (packedCol & mask) | (value & ~mask);
@@ -3011,7 +3011,7 @@
case VK_FORMAT_R16G16B16A16_UNORM:
case VK_FORMAT_R16G16B16A16_SINT:
case VK_FORMAT_R16G16B16A16_UINT:
- if((rgbaWriteMask & 0x0000000F) != 0x0)
+ if((writeMask & 0x0000000F) != 0x0)
{
buffer += 8 * x;
@@ -3019,9 +3019,9 @@
UShort8 value = *Pointer<UShort8>(buffer);
UShort8 packedCol = UShort8(UShort4(As<Int4>(color.x)), UShort4(As<Int4>(color.y)));
UInt4 mergedMask = *Pointer<UInt4>(constants + OFFSET(Constants, maskQ01X) + xMask * 16);
- if((rgbaWriteMask & 0xF) != 0xF)
+ if((writeMask & 0xF) != 0xF)
{
- UInt2 tmpMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q[rgbaWriteMask]));
+ UInt2 tmpMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskW4Q[writeMask]));
rgbaMask = UInt4(tmpMask, tmpMask);
mergedMask &= rgbaMask;
}
@@ -3032,7 +3032,7 @@
value = *Pointer<UShort8>(buffer);
packedCol = UShort8(UShort4(As<Int4>(color.z)), UShort4(As<Int4>(color.w)));
mergedMask = *Pointer<UInt4>(constants + OFFSET(Constants, maskQ23X) + xMask * 16);
- if((rgbaWriteMask & 0xF) != 0xF)
+ if((writeMask & 0xF) != 0xF)
{
mergedMask &= rgbaMask;
}
@@ -3043,7 +3043,7 @@
case VK_FORMAT_R8G8B8A8_UINT:
case VK_FORMAT_A8B8G8R8_UINT_PACK32:
case VK_FORMAT_A8B8G8R8_SINT_PACK32:
- if((rgbaWriteMask & 0x0000000F) != 0x0)
+ if((writeMask & 0x0000000F) != 0x0)
{
UInt2 value, packedCol, mergedMask;
@@ -3061,9 +3061,9 @@
}
value = *Pointer<UInt2>(buffer, 16);
mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<UInt2>(constants + OFFSET(Constants, maskB4Q[rgbaWriteMask]));
+ mergedMask &= *Pointer<UInt2>(constants + OFFSET(Constants, maskB4Q[writeMask]));
}
*Pointer<UInt2>(buffer) = (packedCol & mergedMask) | (value & ~mergedMask);
@@ -3079,15 +3079,15 @@
}
value = *Pointer<UInt2>(buffer, 16);
mergedMask = *Pointer<UInt2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<UInt2>(constants + OFFSET(Constants, maskB4Q[rgbaWriteMask]));
+ mergedMask &= *Pointer<UInt2>(constants + OFFSET(Constants, maskB4Q[writeMask]));
}
*Pointer<UInt2>(buffer) = (packedCol & mergedMask) | (value & ~mergedMask);
}
break;
case VK_FORMAT_A2B10G10R10_UINT_PACK32:
- if((rgbaWriteMask & 0x0000000F) != 0x0)
+ if((writeMask & 0x0000000F) != 0x0)
{
Int2 mergedMask, packedCol, value;
Int4 packed = ((As<Int4>(color.w) & Int4(0x3)) << 30) |
@@ -3098,9 +3098,9 @@
buffer += 4 * x;
value = *Pointer<Int2>(buffer, 16);
mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[rgbaWriteMask]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask]));
}
*Pointer<Int2>(buffer) = (As<Int2>(packed) & mergedMask) | (value & ~mergedMask);
@@ -3108,15 +3108,15 @@
value = *Pointer<Int2>(buffer, 16);
mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(rgbaWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[rgbaWriteMask]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask]));
}
*Pointer<Int2>(buffer) = (As<Int2>(Int4(packed.zwww)) & mergedMask) | (value & ~mergedMask);
}
break;
case VK_FORMAT_A2R10G10B10_UINT_PACK32:
- if((bgraWriteMask & 0x0000000F) != 0x0)
+ if((writeMask & 0x0000000F) != 0x0)
{
Int2 mergedMask, packedCol, value;
Int4 packed = ((As<Int4>(color.w) & Int4(0x3)) << 30) |
@@ -3127,9 +3127,9 @@
buffer += 4 * x;
value = *Pointer<Int2>(buffer, 16);
mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD01Q) + xMask * 8);
- if(bgraWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[bgraWriteMask]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask]));
}
*Pointer<Int2>(buffer) = (As<Int2>(packed) & mergedMask) | (value & ~mergedMask);
@@ -3137,9 +3137,9 @@
value = *Pointer<Int2>(buffer, 16);
mergedMask = *Pointer<Int2>(constants + OFFSET(Constants, maskD23Q) + xMask * 8);
- if(bgraWriteMask != 0xF)
+ if(writeMask != 0xF)
{
- mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[bgraWriteMask]));
+ mergedMask &= *Pointer<Int2>(constants + OFFSET(Constants, mask10Q[writeMask]));
}
*Pointer<Int2>(buffer) = (As<Int2>(Int4(packed.zwww)) & mergedMask) | (value & ~mergedMask);
}