fix: pass array index as an additional argument to sample

This commit is contained in:
Samuliak 2024-05-16 16:33:46 +02:00 committed by Isaac Marovitz
parent 73bb0712a8
commit fefdabf257

View file

@ -184,13 +184,6 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
int pCount = coordsCount; int pCount = coordsCount;
int arrayIndexElem = -1;
if (isArray)
{
arrayIndexElem = pCount++;
}
if (isShadow && !isGather) if (isShadow && !isGather)
{ {
pCount++; pCount++;
@ -210,21 +203,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
string[] elems = new string[count]; string[] elems = new string[count];
for (int index = 0; index < count; index++) for (int index = 0; index < count; index++)
{
if (arrayIndexElem == index)
{
elems[index] = Src(AggregateType.S32);
if (!intCoords)
{
elems[index] = "float(" + elems[index] + ")";
}
}
else
{ {
elems[index] = Src(coordType); elems[index] = Src(coordType);
} }
}
string prefix = intCoords ? "int" : "float"; string prefix = intCoords ? "int" : "float";
@ -238,6 +219,11 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
Append(AssemblePVector(pCount)); Append(AssemblePVector(pCount));
if (isArray)
{
texCall += ", " + Src(AggregateType.S32);
}
texCall += ")" + (colorIsVector ? GetMaskMultiDest(texOp.Index) : ""); texCall += ")" + (colorIsVector ? GetMaskMultiDest(texOp.Index) : "");
return texCall; return texCall;