|
@@ -582,7 +582,7 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|
|
|
|
|
|
|
if (oInfo.Compatibility <= TextureViewCompatibility.LayoutIncompatible)
|
|
if (oInfo.Compatibility <= TextureViewCompatibility.LayoutIncompatible)
|
|
|
{
|
|
{
|
|
|
- if (!overlap.IsView && texture.DataOverlaps(overlap))
|
|
|
|
|
|
|
+ if (!overlap.IsView && texture.DataOverlaps(overlap, oInfo.Compatibility))
|
|
|
{
|
|
{
|
|
|
texture.Group.RegisterIncompatibleOverlap(new TextureIncompatibleOverlap(overlap.Group, oInfo.Compatibility), true);
|
|
texture.Group.RegisterIncompatibleOverlap(new TextureIncompatibleOverlap(overlap.Group, oInfo.Compatibility), true);
|
|
|
}
|
|
}
|
|
@@ -657,7 +657,7 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- bool dataOverlaps = texture.DataOverlaps(overlap);
|
|
|
|
|
|
|
+ bool dataOverlaps = texture.DataOverlaps(overlap, compatibility);
|
|
|
|
|
|
|
|
if (!overlap.IsView && dataOverlaps && !incompatibleOverlaps.Exists(incompatible => incompatible.Group == overlap.Group))
|
|
if (!overlap.IsView && dataOverlaps && !incompatibleOverlaps.Exists(incompatible => incompatible.Group == overlap.Group))
|
|
|
{
|
|
{
|
|
@@ -676,12 +676,6 @@ namespace Ryujinx.Graphics.Gpu.Image
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (info.GobBlocksInZ > 1 && info.GobBlocksInZ == overlap.Info.GobBlocksInZ)
|
|
|
|
|
- {
|
|
|
|
|
- // Allow overlapping slices of 3D textures. Could be improved in future by making sure the textures don't overlap.
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
// The overlap texture is going to contain garbage data after we draw, or is generally incompatible.
|
|
// The overlap texture is going to contain garbage data after we draw, or is generally incompatible.
|
|
|
// The texture group will obtain copy dependencies for any subresources that are compatible between the two textures,
|
|
// The texture group will obtain copy dependencies for any subresources that are compatible between the two textures,
|
|
|
// but sometimes its data must be flushed regardless.
|
|
// but sometimes its data must be flushed regardless.
|