mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 01:20:42 +00:00
Fetch layer and mip level for FBO attachments
This commit is contained in:
@@ -282,6 +282,8 @@ struct GLPipelineState
|
||||
FBO() : Obj(), Depth(), Stencil() {}
|
||||
ResourceId Obj;
|
||||
rdctype::array<ResourceId> Color;
|
||||
rdctype::array<uint32_t> Layer;
|
||||
rdctype::array<uint32_t> Mip;
|
||||
ResourceId Depth;
|
||||
ResourceId Stencil;
|
||||
|
||||
|
||||
@@ -550,7 +550,7 @@ void Serialiser::Serialise(const char *name, GLPipelineState::Rasterizer &el)
|
||||
Serialise("", el.Scissors);
|
||||
Serialise("", el.m_State);
|
||||
|
||||
SIZE_CHECK(GLPipelineState::FrameBuffer, 128);
|
||||
SIZE_CHECK(GLPipelineState::Rasterizer, 104);
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -625,6 +625,8 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
|
||||
Serialise("", el.m_DrawFBO.Obj);
|
||||
Serialise("", el.m_DrawFBO.Color);
|
||||
Serialise("", el.m_ReadFBO.Layer);
|
||||
Serialise("", el.m_ReadFBO.Mip);
|
||||
Serialise("", el.m_DrawFBO.Depth);
|
||||
Serialise("", el.m_DrawFBO.Stencil);
|
||||
Serialise("", el.m_DrawFBO.DrawBuffers);
|
||||
@@ -632,6 +634,8 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
|
||||
Serialise("", el.m_ReadFBO.Obj);
|
||||
Serialise("", el.m_ReadFBO.Color);
|
||||
Serialise("", el.m_ReadFBO.Layer);
|
||||
Serialise("", el.m_ReadFBO.Mip);
|
||||
Serialise("", el.m_ReadFBO.Depth);
|
||||
Serialise("", el.m_ReadFBO.Stencil);
|
||||
Serialise("", el.m_ReadFBO.DrawBuffers);
|
||||
@@ -639,7 +643,7 @@ void Serialiser::Serialise(const char *name, GLPipelineState::FrameBuffer &el)
|
||||
|
||||
Serialise("", el.m_Blending);
|
||||
|
||||
SIZE_CHECK(GLPipelineState::FrameBuffer, 128);
|
||||
SIZE_CHECK(GLPipelineState::FrameBuffer, 160);
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -673,7 +677,7 @@ void Serialiser::Serialise(const char *name, GLPipelineState &el)
|
||||
|
||||
Serialise("", el.m_Hints);
|
||||
|
||||
SIZE_CHECK(GLPipelineState, 952);
|
||||
SIZE_CHECK(GLPipelineState, 984);
|
||||
}
|
||||
|
||||
#pragma endregion OpenGL pipeline state
|
||||
|
||||
@@ -1662,9 +1662,18 @@ void GLReplay::SavePipelineState()
|
||||
|
||||
pipe.m_FB.m_DrawFBO.Obj = rm->GetOriginalID(rm->GetID(FramebufferRes(ctx, curDrawFBO)));
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Color, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Layer, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_DrawFBO.Mip, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
{
|
||||
pipe.m_FB.m_DrawFBO.Color[i] = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_DrawFBO.Mip[i]);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_DrawFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_DrawFBO.Layer[i] == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_DrawFBO.Layer[i]);
|
||||
}
|
||||
|
||||
pipe.m_FB.m_DrawFBO.Depth = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_DrawFBO.Stencil = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
|
||||
@@ -1700,9 +1709,18 @@ void GLReplay::SavePipelineState()
|
||||
|
||||
pipe.m_FB.m_ReadFBO.Obj = rm->GetOriginalID(rm->GetID(FramebufferRes(ctx, curReadFBO)));
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Color, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Layer, numCols);
|
||||
create_array_uninit(pipe.m_FB.m_ReadFBO.Mip, numCols);
|
||||
for(GLint i=0; i < numCols; i++)
|
||||
{
|
||||
pipe.m_FB.m_ReadFBO.Color[i] = rm->GetOriginalID(rm->GetID(rbCol[i] ? RenderbufferRes(ctx, curCol[i]) : TextureRes(ctx, curCol[i])));
|
||||
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, (GLint*)&pipe.m_FB.m_ReadFBO.Mip[i]);
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, (GLint*)&pipe.m_FB.m_ReadFBO.Layer[i]);
|
||||
if(pipe.m_FB.m_ReadFBO.Layer[i] == 0)
|
||||
gl.glGetFramebufferAttachmentParameteriv(eGL_DRAW_FRAMEBUFFER, eGL_DEPTH_ATTACHMENT, eGL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER, (GLint*)&pipe.m_FB.m_ReadFBO.Layer[i]);
|
||||
}
|
||||
|
||||
pipe.m_FB.m_ReadFBO.Depth = rm->GetOriginalID(rm->GetID(rbDepth ? RenderbufferRes(ctx, curDepth) : TextureRes(ctx, curDepth)));
|
||||
pipe.m_FB.m_ReadFBO.Stencil = rm->GetOriginalID(rm->GetID(rbStencil ? RenderbufferRes(ctx, curStencil) : TextureRes(ctx, curStencil)));
|
||||
|
||||
|
||||
@@ -320,6 +320,10 @@ namespace renderdoc
|
||||
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public ResourceId[] Color;
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public UInt32[] Layer;
|
||||
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
||||
public UInt32[] Mip;
|
||||
public ResourceId Depth;
|
||||
public ResourceId Stencil;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user