Commit 0cff3cbe by Alexis Hetu Committed by Alexis Hétu

R8 fragment output format

Related tests pass, modulo the current masking issue. Change-Id: Iac1103e74a9cf18c480289210dd2bd957cc41069 Reviewed-on: https://swiftshader-review.googlesource.com/5300Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 2fce5821
...@@ -604,6 +604,7 @@ namespace sw ...@@ -604,6 +604,7 @@ namespace sw
case FORMAT_A8B8G8R8: case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_X8: case FORMAT_SRGB8_X8:
case FORMAT_SRGB8_A8: case FORMAT_SRGB8_A8:
case FORMAT_R8:
case FORMAT_A8: case FORMAT_A8:
case FORMAT_G16R16: case FORMAT_G16R16:
case FORMAT_A16B16G16R16: case FORMAT_A16B16G16R16:
...@@ -754,6 +755,7 @@ namespace sw ...@@ -754,6 +755,7 @@ namespace sw
case FORMAT_X8B8G8R8: case FORMAT_X8B8G8R8:
case FORMAT_SRGB8_X8: case FORMAT_SRGB8_X8:
case FORMAT_SRGB8_A8: case FORMAT_SRGB8_A8:
case FORMAT_R8:
case FORMAT_A8: case FORMAT_A8:
case FORMAT_G16R16: case FORMAT_G16R16:
case FORMAT_A16B16G16R16: case FORMAT_A16B16G16R16:
......
...@@ -1395,6 +1395,7 @@ namespace sw ...@@ -1395,6 +1395,7 @@ namespace sw
case FORMAT_A8B8G8R8: case FORMAT_A8B8G8R8:
case FORMAT_SRGB8_X8: case FORMAT_SRGB8_X8:
case FORMAT_SRGB8_A8: case FORMAT_SRGB8_A8:
case FORMAT_R8:
current.x = current.x - As<Short4>(As<UShort4>(current.x) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080); current.x = current.x - As<Short4>(As<UShort4>(current.x) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080);
current.y = current.y - As<Short4>(As<UShort4>(current.y) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080); current.y = current.y - As<Short4>(As<UShort4>(current.y) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080);
current.z = current.z - As<Short4>(As<UShort4>(current.z) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080); current.z = current.z - As<Short4>(As<UShort4>(current.z) >> 8) + Short4(0x0080, 0x0080, 0x0080, 0x0080);
...@@ -1512,6 +1513,10 @@ namespace sw ...@@ -1512,6 +1513,10 @@ namespace sw
current.y = As<Short4>(UnpackHigh(current.y, current.x)); current.y = As<Short4>(UnpackHigh(current.y, current.x));
} }
break; break;
case FORMAT_R8:
current.x = As<Short4>(As<UShort4>(current.x) >> 8);
current.x = As<Short4>(Pack(As<UShort4>(current.x), As<UShort4>(current.x)));
break;
case FORMAT_A8: case FORMAT_A8:
current.w = As<Short4>(As<UShort4>(current.w) >> 8); current.w = As<Short4>(As<UShort4>(current.w) >> 8);
current.w = As<Short4>(Pack(As<UShort4>(current.w), As<UShort4>(current.w))); current.w = As<Short4>(Pack(As<UShort4>(current.w), As<UShort4>(current.w)));
...@@ -1708,6 +1713,24 @@ namespace sw ...@@ -1708,6 +1713,24 @@ namespace sw
*Pointer<Short4>(buffer) = c23; *Pointer<Short4>(buffer) = c23;
} }
break; break;
case FORMAT_R8:
if(rgbaWriteMask & 0x00000001)
{
Pointer<Byte> buffer = cBuffer + 1 * x;
Short4 value;
Insert(value, *Pointer<Short>(buffer), 0);
Int pitch = *Pointer<Int>(data + OFFSET(DrawData, colorPitchB[index]));
Insert(value, *Pointer<Short>(buffer + pitch), 1);
value = UnpackLow(As<Byte8>(value), As<Byte8>(value));
current.x &= *Pointer<Short4>(constants + OFFSET(Constants, maskB4Q) + 8 * xMask);
value &= *Pointer<Short4>(constants + OFFSET(Constants, invMaskB4Q) + 8 * xMask);
current.x |= value;
*Pointer<Short>(buffer) = Extract(current.x, 0);
*Pointer<Short>(buffer + pitch) = Extract(current.x, 1);
}
break;
case FORMAT_A8: case FORMAT_A8:
if(rgbaWriteMask & 0x00000008) if(rgbaWriteMask & 0x00000008)
{ {
......
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