Handle float3 packing and arrays in D3D11/12 shader debug input fetcher

Packing float with a float3

float TEXCOORD0
int   TEXCOORD1
float3 COLOR

Packing float with a float3[1]

float TEXCOORD0
int   TEXCOORD1
float3[1] COLOR

Not packing float with a float3[2]

float TEXCOORD0
int   TEXCOORD1
float3[2] COLOR
This commit is contained in:
Jake Turner
2025-11-12 04:10:09 +13:00
parent a9edce59ea
commit 0e84176738
+2 -2
View File
@@ -218,7 +218,7 @@ void GatherInputDataForInitialValues(const DXBC::DXBCContainer *dxbc, InputFetch
int arrayLength = 0;
if(included && numCols <= 2 && (sig.regChannelMask & 0x1))
if(included && numCols <= 3 && (sig.regChannelMask & 0x1))
{
uint32_t nextIdx = sig.semanticIndex + 1;
@@ -288,7 +288,7 @@ void GatherInputDataForInitialValues(const DXBC::DXBCContainer *dxbc, InputFetch
// To prevent this, we look forward and backward to check that we aren't expecting to pack
// with anything, and if not then we just make it a 1-length array to ensure no packing.
// Note the regChannelMask & 0x1 means it is using .x, so it's not the tail-end of a pack
if(included && arrayLength == 0 && numCols <= 2 && (sig.regChannelMask & 0x1))
if(included && arrayLength == 0 && numCols <= 3 && (sig.regChannelMask & 0x1))
{
if(i == numInputs - 1)
{