|
|
@@ -291,6 +291,8 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
// We normalize by dividing the coords by the texture size.
|
|
|
if (isRect && !intCoords)
|
|
|
{
|
|
|
+ config.SetUsedFeature(FeatureFlags.IntegerSampling);
|
|
|
+
|
|
|
for (int index = 0; index < coordsCount; index++)
|
|
|
{
|
|
|
Operand coordSize = Local();
|
|
|
@@ -311,11 +313,14 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
texOp.Type,
|
|
|
texOp.Format,
|
|
|
texOp.Flags,
|
|
|
+ texOp.CbufSlot,
|
|
|
texOp.Handle,
|
|
|
index,
|
|
|
coordSize,
|
|
|
texSizeSources));
|
|
|
|
|
|
+ config.SetUsedTexture(Instruction.TextureSize, texOp.Type, texOp.Format, texOp.Flags, texOp.CbufSlot, texOp.Handle);
|
|
|
+
|
|
|
Operand source = sources[coordsIndex + index];
|
|
|
|
|
|
Operand coordNormalized = Local();
|
|
|
@@ -352,6 +357,8 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ config.SetUsedFeature(FeatureFlags.IntegerSampling);
|
|
|
+
|
|
|
Operand lod = Local();
|
|
|
|
|
|
node.List.AddBefore(node, new TextureOperation(
|
|
|
@@ -359,6 +366,7 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
texOp.Type,
|
|
|
texOp.Format,
|
|
|
texOp.Flags,
|
|
|
+ texOp.CbufSlot,
|
|
|
texOp.Handle,
|
|
|
0,
|
|
|
lod,
|
|
|
@@ -384,11 +392,14 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
texOp.Type,
|
|
|
texOp.Format,
|
|
|
texOp.Flags,
|
|
|
+ texOp.CbufSlot,
|
|
|
texOp.Handle,
|
|
|
index,
|
|
|
coordSize,
|
|
|
texSizeSources));
|
|
|
|
|
|
+ config.SetUsedTexture(Instruction.TextureSize, texOp.Type, texOp.Format, texOp.Flags, texOp.CbufSlot, texOp.Handle);
|
|
|
+
|
|
|
Operand offset = Local();
|
|
|
|
|
|
Operand intOffset = offsets[index + (hasOffsets ? texOp.Index * coordsCount : 0)];
|
|
|
@@ -420,6 +431,7 @@ namespace Ryujinx.Graphics.Shader.Translation
|
|
|
texOp.Type,
|
|
|
texOp.Format,
|
|
|
texOp.Flags & ~(TextureFlags.Offset | TextureFlags.Offsets),
|
|
|
+ texOp.CbufSlot,
|
|
|
texOp.Handle,
|
|
|
componentIndex,
|
|
|
texOp.Dest,
|