Support copy of slices to 3D textures, remove old 3D render target layered render support, do not delete textures with existing views created from them
This commit is contained in:
parent
3bcc395253
commit
d786d8d2b9
9 changed files with 131 additions and 160 deletions
|
@ -29,16 +29,6 @@ namespace Ryujinx.Graphics.OpenGL
|
|||
0);
|
||||
}
|
||||
|
||||
public void AttachColor(int index, TextureView color, int layer)
|
||||
{
|
||||
GL.FramebufferTextureLayer(
|
||||
FramebufferTarget.Framebuffer,
|
||||
FramebufferAttachment.ColorAttachment0 + index,
|
||||
color?.Handle ?? 0,
|
||||
0,
|
||||
layer);
|
||||
}
|
||||
|
||||
public void AttachDepthStencil(TextureView depthStencil)
|
||||
{
|
||||
// Detach the last depth/stencil buffer if there is any.
|
||||
|
|
|
@ -697,28 +697,6 @@ namespace Ryujinx.Graphics.OpenGL
|
|||
}
|
||||
}
|
||||
|
||||
public void SetRenderTargets(ITexture color3D, ITexture depthStencil)
|
||||
{
|
||||
EnsureFramebuffer();
|
||||
|
||||
TextureView color = (TextureView)color3D;
|
||||
|
||||
for (int index = 0; index < color.DepthOrLayers; index++)
|
||||
{
|
||||
_framebuffer.AttachColor(index, color, index);
|
||||
}
|
||||
|
||||
TextureView depthStencilView = (TextureView)depthStencil;
|
||||
|
||||
_framebuffer.AttachDepthStencil(depthStencilView);
|
||||
|
||||
_framebuffer.SetDrawBuffers(color.DepthOrLayers);
|
||||
|
||||
_hasDepthBuffer = depthStencil != null && depthStencilView.Format != Format.S8Uint;
|
||||
|
||||
UpdateDepthTest();
|
||||
}
|
||||
|
||||
public void SetRenderTargets(ITexture[] colors, ITexture depthStencil)
|
||||
{
|
||||
EnsureFramebuffer();
|
||||
|
|
|
@ -137,11 +137,11 @@ namespace Ryujinx.Graphics.OpenGL
|
|||
return _parent.GetHashCode();
|
||||
}
|
||||
|
||||
public void CopyTo(ITexture destination)
|
||||
public void CopyTo(ITexture destination, int firstLayer, int firstLevel)
|
||||
{
|
||||
TextureView destinationView = (TextureView)destination;
|
||||
|
||||
TextureCopyUnscaled.Copy(this, destinationView, 0, 0);
|
||||
TextureCopyUnscaled.Copy(this, destinationView, firstLayer, firstLevel);
|
||||
|
||||
int width = Math.Min(Width, destinationView.Width);
|
||||
int height = Math.Min(Height, destinationView.Height);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue