mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-13 13:30:44 +00:00
Pass pipeline state around by reference instead of copying by value
This commit is contained in:
@@ -263,12 +263,12 @@ void CaptureContext::LoadLogfileThreaded(const QString &logFile, const QString &
|
||||
|
||||
m_PostloadProgress = 0.9f;
|
||||
|
||||
m_CurD3D11PipelineState = r->GetD3D11PipelineState();
|
||||
m_CurD3D12PipelineState = r->GetD3D12PipelineState();
|
||||
m_CurGLPipelineState = r->GetGLPipelineState();
|
||||
m_CurVulkanPipelineState = r->GetVulkanPipelineState();
|
||||
m_CurPipelineState.SetStates(m_APIProps, &m_CurD3D11PipelineState, &m_CurD3D12PipelineState,
|
||||
&m_CurGLPipelineState, &m_CurVulkanPipelineState);
|
||||
m_CurD3D11PipelineState = &r->GetD3D11PipelineState();
|
||||
m_CurD3D12PipelineState = &r->GetD3D12PipelineState();
|
||||
m_CurGLPipelineState = &r->GetGLPipelineState();
|
||||
m_CurVulkanPipelineState = &r->GetVulkanPipelineState();
|
||||
m_CurPipelineState.SetStates(m_APIProps, m_CurD3D11PipelineState, m_CurD3D12PipelineState,
|
||||
m_CurGLPipelineState, m_CurVulkanPipelineState);
|
||||
|
||||
m_UnreadMessageCount = 0;
|
||||
AddMessages(m_FrameInfo.debugMessages);
|
||||
@@ -534,11 +534,12 @@ void CaptureContext::CloseLogfile()
|
||||
m_Drawcalls.clear();
|
||||
m_FirstDrawcall = m_LastDrawcall = NULL;
|
||||
|
||||
m_CurD3D11PipelineState = D3D11Pipe::State();
|
||||
m_CurD3D12PipelineState = D3D12Pipe::State();
|
||||
m_CurGLPipelineState = GLPipe::State();
|
||||
m_CurVulkanPipelineState = VKPipe::State();
|
||||
m_CurPipelineState.SetStates(m_APIProps, NULL, NULL, NULL, NULL);
|
||||
m_CurD3D11PipelineState = NULL;
|
||||
m_CurD3D12PipelineState = NULL;
|
||||
m_CurGLPipelineState = NULL;
|
||||
m_CurVulkanPipelineState = NULL;
|
||||
m_CurPipelineState.SetStates(m_APIProps, m_CurD3D11PipelineState, m_CurD3D12PipelineState,
|
||||
m_CurGLPipelineState, m_CurVulkanPipelineState);
|
||||
|
||||
m_DebugMessages.clear();
|
||||
m_UnreadMessageCount = 0;
|
||||
@@ -564,12 +565,12 @@ void CaptureContext::SetEventID(const QVector<ILogViewer *> &exclude, uint32_t s
|
||||
|
||||
m_Renderer.BlockInvoke([this, eventID, force](IReplayController *r) {
|
||||
r->SetFrameEvent(eventID, force);
|
||||
m_CurD3D11PipelineState = r->GetD3D11PipelineState();
|
||||
m_CurD3D12PipelineState = r->GetD3D12PipelineState();
|
||||
m_CurGLPipelineState = r->GetGLPipelineState();
|
||||
m_CurVulkanPipelineState = r->GetVulkanPipelineState();
|
||||
m_CurPipelineState.SetStates(m_APIProps, &m_CurD3D11PipelineState, &m_CurD3D12PipelineState,
|
||||
&m_CurGLPipelineState, &m_CurVulkanPipelineState);
|
||||
m_CurD3D11PipelineState = &r->GetD3D11PipelineState();
|
||||
m_CurD3D12PipelineState = &r->GetD3D12PipelineState();
|
||||
m_CurGLPipelineState = &r->GetGLPipelineState();
|
||||
m_CurVulkanPipelineState = &r->GetVulkanPipelineState();
|
||||
m_CurPipelineState.SetStates(m_APIProps, m_CurD3D11PipelineState, m_CurD3D12PipelineState,
|
||||
m_CurGLPipelineState, m_CurVulkanPipelineState);
|
||||
});
|
||||
|
||||
for(ILogViewer *logviewer : m_LogViewers)
|
||||
|
||||
@@ -186,19 +186,19 @@ public:
|
||||
void AddDockWindow(QWidget *newWindow, DockReference ref, QWidget *refWindow,
|
||||
float percentage = 0.5f) override;
|
||||
|
||||
D3D11Pipe::State &CurD3D11PipelineState() override { return m_CurD3D11PipelineState; }
|
||||
D3D12Pipe::State &CurD3D12PipelineState() override { return m_CurD3D12PipelineState; }
|
||||
GLPipe::State &CurGLPipelineState() override { return m_CurGLPipelineState; }
|
||||
VKPipe::State &CurVulkanPipelineState() override { return m_CurVulkanPipelineState; }
|
||||
const D3D11Pipe::State &CurD3D11PipelineState() override { return *m_CurD3D11PipelineState; }
|
||||
const D3D12Pipe::State &CurD3D12PipelineState() override { return *m_CurD3D12PipelineState; }
|
||||
const GLPipe::State &CurGLPipelineState() override { return *m_CurGLPipelineState; }
|
||||
const VKPipe::State &CurVulkanPipelineState() override { return *m_CurVulkanPipelineState; }
|
||||
CommonPipelineState &CurPipelineState() override { return m_CurPipelineState; }
|
||||
PersistantConfig &Config() override { return m_Config; }
|
||||
private:
|
||||
ReplayManager m_Renderer;
|
||||
|
||||
D3D11Pipe::State m_CurD3D11PipelineState;
|
||||
D3D12Pipe::State m_CurD3D12PipelineState;
|
||||
GLPipe::State m_CurGLPipelineState;
|
||||
VKPipe::State m_CurVulkanPipelineState;
|
||||
const D3D11Pipe::State *m_CurD3D11PipelineState;
|
||||
const D3D12Pipe::State *m_CurD3D12PipelineState;
|
||||
const GLPipe::State *m_CurGLPipelineState;
|
||||
const VKPipe::State *m_CurVulkanPipelineState;
|
||||
CommonPipelineState m_CurPipelineState;
|
||||
|
||||
PersistantConfig &m_Config;
|
||||
|
||||
@@ -928,7 +928,7 @@ BoundCBuffer CommonPipelineState::GetConstantBuffer(ShaderStage stage, uint32_t
|
||||
s.BindpointMapping.ConstantBlocks[s.ShaderDetails->ConstantBlocks[BufIdx].bindPoint].bind;
|
||||
if(uboIdx >= 0 && uboIdx < m_GL->UniformBuffers.count)
|
||||
{
|
||||
GLPipe::Buffer &b = m_GL->UniformBuffers[uboIdx];
|
||||
const GLPipe::Buffer &b = m_GL->UniformBuffers[uboIdx];
|
||||
|
||||
buf = b.Resource;
|
||||
ByteOffset = b.Offset;
|
||||
@@ -939,7 +939,8 @@ BoundCBuffer CommonPipelineState::GetConstantBuffer(ShaderStage stage, uint32_t
|
||||
}
|
||||
else if(IsLogVK())
|
||||
{
|
||||
VKPipe::Pipeline &pipe = stage == ShaderStage::Compute ? m_Vulkan->compute : m_Vulkan->graphics;
|
||||
const VKPipe::Pipeline &pipe =
|
||||
stage == ShaderStage::Compute ? m_Vulkan->compute : m_Vulkan->graphics;
|
||||
const VKPipe::Shader &s = GetVulkanStage(stage);
|
||||
|
||||
if(s.ShaderDetails != NULL && BufIdx < (uint32_t)s.ShaderDetails->ConstantBlocks.count)
|
||||
|
||||
@@ -145,8 +145,8 @@ public:
|
||||
:param ~renderdoc.GL_State gl: The OpenGL state.
|
||||
:param ~renderdoc.VK_State vk: The Vulkan state.
|
||||
)");
|
||||
void SetStates(APIProperties props, D3D11Pipe::State *d3d11, D3D12Pipe::State *d3d12,
|
||||
GLPipe::State *gl, VKPipe::State *vk)
|
||||
void SetStates(APIProperties props, const D3D11Pipe::State *d3d11, const D3D12Pipe::State *d3d12,
|
||||
const GLPipe::State *gl, const VKPipe::State *vk)
|
||||
{
|
||||
m_APIProps = props;
|
||||
m_D3D11 = d3d11;
|
||||
@@ -422,10 +422,10 @@ Typically this is ``glsl`` or ``hlsl``.
|
||||
QVector<BoundResource> GetOutputTargets();
|
||||
|
||||
private:
|
||||
D3D11Pipe::State *m_D3D11 = NULL;
|
||||
D3D12Pipe::State *m_D3D12 = NULL;
|
||||
GLPipe::State *m_GL = NULL;
|
||||
VKPipe::State *m_Vulkan = NULL;
|
||||
const D3D11Pipe::State *m_D3D11 = NULL;
|
||||
const D3D12Pipe::State *m_D3D12 = NULL;
|
||||
const GLPipe::State *m_GL = NULL;
|
||||
const VKPipe::State *m_Vulkan = NULL;
|
||||
APIProperties m_APIProps;
|
||||
|
||||
const D3D11Pipe::Shader &GetD3D11Stage(ShaderStage stage);
|
||||
|
||||
@@ -1386,28 +1386,28 @@ currently docked.
|
||||
:return: The current D3D11 pipeline state.
|
||||
:rtype: ~renderdoc.D3D11_State
|
||||
)");
|
||||
virtual D3D11Pipe::State &CurD3D11PipelineState() = 0;
|
||||
virtual const D3D11Pipe::State &CurD3D11PipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`~renderdoc.D3D12_State` pipeline state.
|
||||
|
||||
:return: The current D3D12 pipeline state.
|
||||
:rtype: ~renderdoc.D3D12_State
|
||||
)");
|
||||
virtual D3D12Pipe::State &CurD3D12PipelineState() = 0;
|
||||
virtual const D3D12Pipe::State &CurD3D12PipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`~renderdoc.GL_State` pipeline state.
|
||||
|
||||
:return: The current OpenGL pipeline state.
|
||||
:rtype: ~renderdoc.GL_State
|
||||
)");
|
||||
virtual GLPipe::State &CurGLPipelineState() = 0;
|
||||
virtual const GLPipe::State &CurGLPipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`~renderdoc.VK_State` pipeline state.
|
||||
|
||||
:return: The current Vulkan pipeline state.
|
||||
:rtype: ~renderdoc.VK_State
|
||||
)");
|
||||
virtual VKPipe::State &CurVulkanPipelineState() = 0;
|
||||
virtual const VKPipe::State &CurVulkanPipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`CommonPipelineState` abstracted pipeline state.
|
||||
|
||||
|
||||
@@ -2261,7 +2261,7 @@ void D3D11PipelineStateViewer::shaderSave_clicked()
|
||||
m_Common.SaveShaderFile(shaderDetails);
|
||||
}
|
||||
|
||||
QVariantList D3D11PipelineStateViewer::exportViewHTML(D3D11Pipe::View &view, int i,
|
||||
QVariantList D3D11PipelineStateViewer::exportViewHTML(const D3D11Pipe::View &view, int i,
|
||||
ShaderReflection *refl,
|
||||
const QString &extraParams)
|
||||
{
|
||||
@@ -2385,7 +2385,7 @@ QVariantList D3D11PipelineStateViewer::exportViewHTML(D3D11Pipe::View &view, int
|
||||
d, a, viewFormat, format, viewParams};
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::IA &ia)
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::IA &ia)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2483,7 +2483,7 @@ void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::IA &
|
||||
m_Common.exportHTMLTable(xml, {tr("Primitive Topology")}, {ToQStr(m_Ctx.CurDrawcall()->topology)});
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Shader &sh)
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::Shader &sh)
|
||||
{
|
||||
ShaderReflection *shaderDetails = sh.ShaderDetails;
|
||||
|
||||
@@ -2697,7 +2697,7 @@ void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Shad
|
||||
}
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::SO &so)
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::SO &so)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2735,7 +2735,7 @@ void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::SO &
|
||||
}
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Rasterizer &rs)
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::Rasterizer &rs)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2812,7 +2812,7 @@ void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Rast
|
||||
}
|
||||
}
|
||||
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D11Pipe::OM &om)
|
||||
void D3D11PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::OM &om)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
|
||||
@@ -93,13 +93,13 @@ private:
|
||||
void setState();
|
||||
void clearState();
|
||||
|
||||
QVariantList exportViewHTML(D3D11Pipe::View &view, int i, ShaderReflection *refl,
|
||||
QVariantList exportViewHTML(const D3D11Pipe::View &view, int i, ShaderReflection *refl,
|
||||
const QString &extraParams);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D11Pipe::IA &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D11Pipe::SO &so);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D11Pipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D11Pipe::OM &om);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::IA &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::SO &so);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D11Pipe::OM &om);
|
||||
|
||||
void setInactiveRow(RDTreeWidgetItem *node);
|
||||
void setEmptyRow(RDTreeWidgetItem *node);
|
||||
|
||||
@@ -2254,7 +2254,7 @@ QVariantList D3D12PipelineStateViewer::exportViewHTML(const D3D12Pipe::View &vie
|
||||
a, viewFormat, format, viewParams};
|
||||
}
|
||||
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::IA &ia)
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::IA &ia)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2356,7 +2356,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::IA &
|
||||
m_Common.exportHTMLTable(xml, {tr("Primitive Topology")}, {ToQStr(m_Ctx.CurDrawcall()->topology)});
|
||||
}
|
||||
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Shader &sh)
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Shader &sh)
|
||||
{
|
||||
ShaderReflection *shaderDetails = sh.ShaderDetails;
|
||||
|
||||
@@ -2716,7 +2716,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Shad
|
||||
}
|
||||
}
|
||||
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Streamout &so)
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Streamout &so)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2776,7 +2776,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Stre
|
||||
}
|
||||
}
|
||||
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Rasterizer &rs)
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Rasterizer &rs)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2853,7 +2853,7 @@ void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Rast
|
||||
}
|
||||
}
|
||||
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, D3D12Pipe::OM &om)
|
||||
void D3D12PipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::OM &om)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
|
||||
@@ -109,11 +109,11 @@ private:
|
||||
|
||||
QVariantList exportViewHTML(const D3D12Pipe::View &view, bool rw,
|
||||
const ShaderResource *shaderInput, const QString &extraParams);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D12Pipe::IA &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Streamout &so);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D12Pipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, D3D12Pipe::OM &om);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::IA &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Streamout &so);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, const D3D12Pipe::OM &om);
|
||||
|
||||
// keep track of the VB nodes (we want to be able to highlight them easily on hover)
|
||||
QList<RDTreeWidgetItem *> m_VBNodes;
|
||||
|
||||
@@ -2264,7 +2264,7 @@ void GLPipelineStateViewer::shaderSave_clicked()
|
||||
m_Common.SaveShaderFile(shaderDetails);
|
||||
}
|
||||
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::VertexInput &vtx)
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const GLPipe::VertexInput &vtx)
|
||||
{
|
||||
const GLPipe::State &pipe = m_Ctx.CurGLPipelineState();
|
||||
{
|
||||
@@ -2419,7 +2419,7 @@ void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::VertexInpu
|
||||
}
|
||||
}
|
||||
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Shader &sh)
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const GLPipe::Shader &sh)
|
||||
{
|
||||
const GLPipe::State &pipe = m_Ctx.CurGLPipelineState();
|
||||
ShaderReflection *shaderDetails = sh.ShaderDetails;
|
||||
@@ -2870,7 +2870,7 @@ void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Shader &sh
|
||||
}
|
||||
}
|
||||
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Feedback &xfb)
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const GLPipe::Feedback &xfb)
|
||||
{
|
||||
const GLPipe::State &pipe = m_Ctx.CurGLPipelineState();
|
||||
{
|
||||
@@ -2919,7 +2919,7 @@ void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Feedback &
|
||||
}
|
||||
}
|
||||
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Rasterizer &rs)
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const GLPipe::Rasterizer &rs)
|
||||
{
|
||||
const GLPipe::State &pipe = m_Ctx.CurGLPipelineState();
|
||||
xml.writeStartElement(tr("h3"));
|
||||
@@ -3037,7 +3037,7 @@ void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::Rasterizer
|
||||
}
|
||||
}
|
||||
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, GLPipe::FrameBuffer &fb)
|
||||
void GLPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const GLPipe::FrameBuffer &fb)
|
||||
{
|
||||
const GLPipe::State &pipe = m_Ctx.CurGLPipelineState();
|
||||
{
|
||||
|
||||
@@ -107,11 +107,11 @@ private:
|
||||
|
||||
bool showNode(bool usedSlot, bool filledSlot);
|
||||
|
||||
void exportHTML(QXmlStreamWriter &xml, GLPipe::VertexInput &vtx);
|
||||
void exportHTML(QXmlStreamWriter &xml, GLPipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, GLPipe::Feedback &xfb);
|
||||
void exportHTML(QXmlStreamWriter &xml, GLPipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, GLPipe::FrameBuffer &fb);
|
||||
void exportHTML(QXmlStreamWriter &xml, const GLPipe::VertexInput &vtx);
|
||||
void exportHTML(QXmlStreamWriter &xml, const GLPipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, const GLPipe::Feedback &xfb);
|
||||
void exportHTML(QXmlStreamWriter &xml, const GLPipe::Rasterizer &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, const GLPipe::FrameBuffer &fb);
|
||||
|
||||
// keep track of the VB nodes (we want to be able to highlight them easily on hover)
|
||||
QList<RDTreeWidgetItem *> m_VBNodes;
|
||||
|
||||
@@ -2403,7 +2403,7 @@ void VulkanPipelineStateViewer::shaderSave_clicked()
|
||||
m_Common.SaveShaderFile(shaderDetails);
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::VertexInput &vi)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::VertexInput &vi)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2469,7 +2469,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Vertex
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::InputAssembly &ia)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::InputAssembly &ia)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2507,7 +2507,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::InputA
|
||||
{ToQStr(m_Ctx.CurDrawcall()->topology), m_Ctx.CurVulkanPipelineState().Tess.numControlPoints});
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Shader &sh)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::Shader &sh)
|
||||
{
|
||||
ShaderReflection *shaderDetails = sh.ShaderDetails;
|
||||
|
||||
@@ -2862,7 +2862,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Shader
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Raster &rs)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::Raster &rs)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2889,7 +2889,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Raster
|
||||
Formatter::Format(rs.slopeScaledDepthBias), Formatter::Format(rs.lineWidth)});
|
||||
}
|
||||
|
||||
VKPipe::MultiSample &msaa = m_Ctx.CurVulkanPipelineState().MSAA;
|
||||
const VKPipe::MultiSample &msaa = m_Ctx.CurVulkanPipelineState().MSAA;
|
||||
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2903,7 +2903,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Raster
|
||||
Formatter::Format(msaa.minSampleShading), Formatter::Format(msaa.sampleMask, true)});
|
||||
}
|
||||
|
||||
VKPipe::ViewState &vp = m_Ctx.CurVulkanPipelineState().VP;
|
||||
const VKPipe::ViewState &vp = m_Ctx.CurVulkanPipelineState().VP;
|
||||
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -2948,7 +2948,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::Raster
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::ColorBlend &cb)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::ColorBlend &cb)
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
xml.writeCharacters(tr("Color Blend State"));
|
||||
@@ -2998,7 +2998,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::ColorB
|
||||
rows);
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::DepthStencil &ds)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::DepthStencil &ds)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
@@ -3055,7 +3055,7 @@ void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::DepthS
|
||||
}
|
||||
}
|
||||
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, VKPipe::CurrentPass &pass)
|
||||
void VulkanPipelineStateViewer::exportHTML(QXmlStreamWriter &xml, const VKPipe::CurrentPass &pass)
|
||||
{
|
||||
{
|
||||
xml.writeStartElement(lit("h3"));
|
||||
|
||||
@@ -118,13 +118,13 @@ private:
|
||||
|
||||
bool showNode(bool usedSlot, bool filledSlot);
|
||||
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::VertexInput &vi);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::InputAssembly &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::Raster &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::ColorBlend &cb);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::DepthStencil &ds);
|
||||
void exportHTML(QXmlStreamWriter &xml, VKPipe::CurrentPass &pass);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::VertexInput &vi);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::InputAssembly &ia);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::Shader &sh);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::Raster &rs);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::ColorBlend &cb);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::DepthStencil &ds);
|
||||
void exportHTML(QXmlStreamWriter &xml, const VKPipe::CurrentPass &pass);
|
||||
|
||||
// keep track of the VB nodes (we want to be able to highlight them easily on hover)
|
||||
QList<RDTreeWidgetItem *> m_VBNodes;
|
||||
|
||||
@@ -99,16 +99,16 @@ struct CaptureContextInvoker : ICaptureContext
|
||||
virtual const QVector<DebugMessage> &DebugMessages() override { return m_Ctx.DebugMessages(); }
|
||||
virtual int UnreadMessageCount() override { return m_Ctx.UnreadMessageCount(); }
|
||||
virtual void MarkMessagesRead() override { return m_Ctx.MarkMessagesRead(); }
|
||||
virtual D3D11Pipe::State &CurD3D11PipelineState() override
|
||||
virtual const D3D11Pipe::State &CurD3D11PipelineState() override
|
||||
{
|
||||
return m_Ctx.CurD3D11PipelineState();
|
||||
}
|
||||
virtual D3D12Pipe::State &CurD3D12PipelineState() override
|
||||
virtual const D3D12Pipe::State &CurD3D12PipelineState() override
|
||||
{
|
||||
return m_Ctx.CurD3D12PipelineState();
|
||||
}
|
||||
virtual GLPipe::State &CurGLPipelineState() override { return m_Ctx.CurGLPipelineState(); }
|
||||
virtual VKPipe::State &CurVulkanPipelineState() override
|
||||
virtual const GLPipe::State &CurGLPipelineState() override { return m_Ctx.CurGLPipelineState(); }
|
||||
virtual const VKPipe::State &CurVulkanPipelineState() override
|
||||
{
|
||||
return m_Ctx.CurVulkanPipelineState();
|
||||
}
|
||||
|
||||
@@ -515,7 +515,7 @@ You should use :meth:`GetAPIProperties` to determine the API of the capture.
|
||||
:return: The current D3D11 pipeline state.
|
||||
:rtype: D3D11_State
|
||||
)");
|
||||
virtual D3D11Pipe::State GetD3D11PipelineState() = 0;
|
||||
virtual const D3D11Pipe::State &GetD3D11PipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`D3D12_State` pipeline state.
|
||||
|
||||
@@ -525,7 +525,7 @@ You should use :meth:`GetAPIProperties` to determine the API of the capture.
|
||||
:return: The current D3D12 pipeline state.
|
||||
:rtype: D3D12_State
|
||||
)");
|
||||
virtual D3D12Pipe::State GetD3D12PipelineState() = 0;
|
||||
virtual const D3D12Pipe::State &GetD3D12PipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`GL_State` pipeline state.
|
||||
|
||||
@@ -535,7 +535,7 @@ You should use :meth:`GetAPIProperties` to determine the API of the capture.
|
||||
:return: The current OpenGL pipeline state.
|
||||
:rtype: GL_State
|
||||
)");
|
||||
virtual GLPipe::State GetGLPipelineState() = 0;
|
||||
virtual const GLPipe::State &GetGLPipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the current :class:`VK_State` pipeline state.
|
||||
|
||||
@@ -545,7 +545,7 @@ You should use :meth:`GetAPIProperties` to determine the API of the capture.
|
||||
:return: The current Vulkan pipeline state.
|
||||
:rtype: VK_State
|
||||
)");
|
||||
virtual VKPipe::State GetVulkanPipelineState() = 0;
|
||||
virtual const VKPipe::State &GetVulkanPipelineState() = 0;
|
||||
|
||||
DOCUMENT(R"(Retrieve the list of possible disassembly targets for :meth:`DisassembleShader`. The
|
||||
values are implementation dependent but will always include a default target first which is the
|
||||
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
// handle a couple of operations ourselves to return a simple fake log
|
||||
APIProperties GetAPIProperties() { return m_Props; }
|
||||
FrameRecord GetFrameRecord() { return m_FrameRecord; }
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return m_PipelineState; }
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_PipelineState; }
|
||||
// other operations are dropped/ignored, to avoid confusion
|
||||
void ReadLogInitialisation() {}
|
||||
void RenderMesh(uint32_t eventID, const vector<MeshFormat> &secondaryDraws, const MeshDisplay &cfg)
|
||||
@@ -161,9 +161,9 @@ public:
|
||||
return ret;
|
||||
}
|
||||
void SavePipelineState() {}
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return D3D12Pipe::State(); }
|
||||
GLPipe::State GetGLPipelineState() { return GLPipe::State(); }
|
||||
VKPipe::State GetVulkanPipelineState() { return VKPipe::State(); }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_D3D12State; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_GLState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VKState; }
|
||||
void ReplayLog(uint32_t endEventID, ReplayLogType replayType) {}
|
||||
vector<uint32_t> GetPassEvents(uint32_t eventID) { return vector<uint32_t>(); }
|
||||
vector<EventUsage> GetUsage(ResourceId id) { return vector<EventUsage>(); }
|
||||
@@ -269,6 +269,9 @@ private:
|
||||
APIProperties m_Props;
|
||||
FrameRecord m_FrameRecord;
|
||||
D3D11Pipe::State m_PipelineState;
|
||||
D3D12Pipe::State m_D3D12State;
|
||||
VKPipe::State m_VKState;
|
||||
GLPipe::State m_GLState;
|
||||
IReplayDriver *m_Proxy;
|
||||
string m_Filename;
|
||||
ResourceId m_TextureID;
|
||||
|
||||
@@ -2443,6 +2443,51 @@ void ReplayProxy::SavePipelineState()
|
||||
m_FromReplaySerialiser->Serialise("", m_D3D12PipelineState);
|
||||
m_FromReplaySerialiser->Serialise("", m_GLPipelineState);
|
||||
m_FromReplaySerialiser->Serialise("", m_VulkanPipelineState);
|
||||
|
||||
{
|
||||
D3D11Pipe::Shader *stages[] = {
|
||||
&m_D3D11PipelineState.m_VS, &m_D3D11PipelineState.m_HS, &m_D3D11PipelineState.m_DS,
|
||||
&m_D3D11PipelineState.m_GS, &m_D3D11PipelineState.m_PS, &m_D3D11PipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = GetShader(GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
D3D12Pipe::Shader *stages[] = {
|
||||
&m_D3D12PipelineState.m_VS, &m_D3D12PipelineState.m_HS, &m_D3D12PipelineState.m_DS,
|
||||
&m_D3D12PipelineState.m_GS, &m_D3D12PipelineState.m_PS, &m_D3D12PipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = GetShader(GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
GLPipe::Shader *stages[] = {
|
||||
&m_GLPipelineState.m_VS, &m_GLPipelineState.m_TCS, &m_GLPipelineState.m_TES,
|
||||
&m_GLPipelineState.m_GS, &m_GLPipelineState.m_FS, &m_GLPipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = GetShader(GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
VKPipe::Shader *stages[] = {
|
||||
&m_VulkanPipelineState.m_VS, &m_VulkanPipelineState.m_TCS, &m_VulkanPipelineState.m_TES,
|
||||
&m_VulkanPipelineState.m_GS, &m_VulkanPipelineState.m_FS, &m_VulkanPipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails =
|
||||
GetShader(GetLiveID(stages[i]->Object), stages[i]->entryPoint.elems);
|
||||
}
|
||||
}
|
||||
|
||||
void ReplayProxy::ReplayLog(uint32_t endEventID, ReplayLogType replayType)
|
||||
|
||||
@@ -401,10 +401,10 @@ public:
|
||||
vector<DebugMessage> GetDebugMessages();
|
||||
|
||||
void SavePipelineState();
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return m_D3D11PipelineState; }
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return m_D3D12PipelineState; }
|
||||
GLPipe::State GetGLPipelineState() { return m_GLPipelineState; }
|
||||
VKPipe::State GetVulkanPipelineState() { return m_VulkanPipelineState; }
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_D3D11PipelineState; }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_D3D12PipelineState; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_GLPipelineState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VulkanPipelineState; }
|
||||
void ReplayLog(uint32_t endEventID, ReplayLogType replayType);
|
||||
|
||||
vector<uint32_t> GetPassEvents(uint32_t eventID);
|
||||
|
||||
@@ -491,11 +491,11 @@ vector<ResourceId> D3D11Replay::GetTextures()
|
||||
return ret;
|
||||
}
|
||||
|
||||
D3D11Pipe::State D3D11Replay::MakePipelineState()
|
||||
void D3D11Replay::SavePipelineState()
|
||||
{
|
||||
D3D11RenderState *rs = m_pDevice->GetImmediateContext()->GetCurrentPipelineState();
|
||||
|
||||
D3D11Pipe::State ret;
|
||||
D3D11Pipe::State &ret = m_CurPipelineState;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
// Input Assembler
|
||||
@@ -584,7 +584,7 @@ D3D11Pipe::State D3D11Replay::MakePipelineState()
|
||||
refl = shad->GetDetails();
|
||||
|
||||
dst.Object = rm->GetOriginalID(id);
|
||||
dst.ShaderDetails = NULL;
|
||||
dst.ShaderDetails = refl;
|
||||
|
||||
string str = GetDebugName(src.Shader);
|
||||
dst.customName = true;
|
||||
@@ -1340,8 +1340,6 @@ D3D11Pipe::State D3D11Replay::MakePipelineState()
|
||||
ret.m_OM.m_State.m_BackFace.FailOp = StencilOp::Keep;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void D3D11Replay::ReadLogInitialisation()
|
||||
|
||||
@@ -65,11 +65,11 @@ public:
|
||||
|
||||
FrameRecord GetFrameRecord();
|
||||
|
||||
void SavePipelineState() { m_CurPipelineState = MakePipelineState(); }
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return m_CurPipelineState; }
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return D3D12Pipe::State(); }
|
||||
GLPipe::State GetGLPipelineState() { return GLPipe::State(); }
|
||||
VKPipe::State GetVulkanPipelineState() { return VKPipe::State(); }
|
||||
void SavePipelineState();
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_CurPipelineState; }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_D3D12State; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_GLState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VKState; }
|
||||
void FreeTargetResource(ResourceId id);
|
||||
void FreeCustomShader(ResourceId id);
|
||||
|
||||
@@ -170,8 +170,6 @@ public:
|
||||
Callstack::StackResolver *GetCallstackResolver();
|
||||
|
||||
private:
|
||||
D3D11Pipe::State MakePipelineState();
|
||||
|
||||
bool m_WARP;
|
||||
bool m_Proxy;
|
||||
|
||||
@@ -180,4 +178,7 @@ private:
|
||||
WrappedID3D11Device *m_pDevice;
|
||||
|
||||
D3D11Pipe::State m_CurPipelineState;
|
||||
D3D12Pipe::State m_D3D12State;
|
||||
VKPipe::State m_VKState;
|
||||
GLPipe::State m_GLState;
|
||||
};
|
||||
|
||||
@@ -889,7 +889,7 @@ void D3D12Replay::FillRegisterSpaces(const D3D12RenderState::RootSignature &root
|
||||
SAFE_DELETE_ARRAY(spaces);
|
||||
}
|
||||
|
||||
void D3D12Replay::MakePipelineState()
|
||||
void D3D12Replay::SavePipelineState()
|
||||
{
|
||||
const D3D12RenderState &rs = m_pDevice->GetQueue()->GetCommandData()->m_RenderState;
|
||||
|
||||
@@ -979,6 +979,7 @@ void D3D12Replay::MakePipelineState()
|
||||
|
||||
state.m_CS.Object = sh->GetResourceID();
|
||||
state.m_CS.stage = ShaderStage::Compute;
|
||||
state.m_CS.ShaderDetails = &sh->GetDetails();
|
||||
state.m_CS.BindpointMapping = sh->GetMapping();
|
||||
|
||||
state.rootSig = rm->GetOriginalID(rs.compute.rootsig);
|
||||
@@ -1010,6 +1011,7 @@ void D3D12Replay::MakePipelineState()
|
||||
{
|
||||
dst.Object = sh->GetResourceID();
|
||||
dst.BindpointMapping = sh->GetMapping();
|
||||
dst.ShaderDetails = &sh->GetDetails();
|
||||
}
|
||||
|
||||
if(rs.graphics.rootsig != ResourceId())
|
||||
|
||||
@@ -63,11 +63,11 @@ public:
|
||||
|
||||
FrameRecord GetFrameRecord();
|
||||
|
||||
void SavePipelineState() { MakePipelineState(); }
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return D3D11Pipe::State(); }
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return m_PipelineState; }
|
||||
GLPipe::State GetGLPipelineState() { return GLPipe::State(); }
|
||||
VKPipe::State GetVulkanPipelineState() { return VKPipe::State(); }
|
||||
void SavePipelineState();
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_D3D11State; }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_PipelineState; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_GLState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VKState; }
|
||||
void FreeTargetResource(ResourceId id);
|
||||
void FreeCustomShader(ResourceId id);
|
||||
|
||||
@@ -178,8 +178,6 @@ public:
|
||||
void PreDeviceShutdownCounters();
|
||||
|
||||
private:
|
||||
void MakePipelineState();
|
||||
|
||||
void FillRegisterSpaces(const D3D12RenderState::RootSignature &rootSig,
|
||||
rdctype::array<D3D12Pipe::RegisterSpace> &spaces,
|
||||
D3D12_SHADER_VISIBILITY visibility);
|
||||
@@ -190,6 +188,9 @@ private:
|
||||
vector<ID3D12Resource *> m_ProxyResources;
|
||||
|
||||
D3D12Pipe::State m_PipelineState;
|
||||
D3D11Pipe::State m_D3D11State;
|
||||
VKPipe::State m_VKState;
|
||||
GLPipe::State m_GLState;
|
||||
|
||||
WrappedID3D12Device *m_pDevice;
|
||||
};
|
||||
|
||||
@@ -1105,7 +1105,7 @@ void GLReplay::SavePipelineState()
|
||||
{
|
||||
curProg = rm->GetCurrentResource(pipeDetails.stagePrograms[i]).name;
|
||||
stages[i]->Object = rm->GetOriginalID(pipeDetails.stageShaders[i]);
|
||||
refls[i] = GetShader(pipeDetails.stageShaders[i], "");
|
||||
stages[i]->ShaderDetails = refls[i] = GetShader(pipeDetails.stageShaders[i], "");
|
||||
GetBindpointMapping(gl.GetHookset(), curProg, (int)i, refls[i],
|
||||
stages[i]->BindpointMapping);
|
||||
mappings[i] = &stages[i]->BindpointMapping;
|
||||
@@ -1138,7 +1138,7 @@ void GLReplay::SavePipelineState()
|
||||
stages[i]->customProgramName = (programName != "");
|
||||
|
||||
stages[i]->Object = rm->GetOriginalID(progDetails.stageShaders[i]);
|
||||
refls[i] = GetShader(progDetails.stageShaders[i], "");
|
||||
stages[i]->ShaderDetails = refls[i] = GetShader(progDetails.stageShaders[i], "");
|
||||
GetBindpointMapping(gl.GetHookset(), curProg, (int)i, refls[i], stages[i]->BindpointMapping);
|
||||
mappings[i] = &stages[i]->BindpointMapping;
|
||||
|
||||
|
||||
@@ -111,10 +111,10 @@ public:
|
||||
FrameRecord GetFrameRecord();
|
||||
|
||||
void SavePipelineState();
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return D3D11Pipe::State(); }
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return D3D12Pipe::State(); }
|
||||
GLPipe::State GetGLPipelineState() { return m_CurPipelineState; }
|
||||
VKPipe::State GetVulkanPipelineState() { return VKPipe::State(); }
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_D3D11State; }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_D3D12State; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_CurPipelineState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VKState; }
|
||||
void FreeTargetResource(ResourceId id);
|
||||
|
||||
void ReadLogInitialisation();
|
||||
@@ -415,6 +415,9 @@ private:
|
||||
WrappedOpenGL *m_pDriver;
|
||||
|
||||
GLPipe::State m_CurPipelineState;
|
||||
D3D11Pipe::State m_D3D11State;
|
||||
D3D12Pipe::State m_D3D12State;
|
||||
VKPipe::State m_VKState;
|
||||
};
|
||||
|
||||
const GLHookSet &GetRealGLFunctions();
|
||||
|
||||
@@ -2870,7 +2870,6 @@ void VulkanReplay::SavePipelineState()
|
||||
{
|
||||
stage.Object = rm->GetOriginalID(p.shaders[i].module);
|
||||
stage.entryPoint = p.shaders[i].entryPoint;
|
||||
stage.ShaderDetails = NULL;
|
||||
|
||||
stage.customName = true;
|
||||
stage.name = m_pDriver->m_CreationInfo.m_Names[p.shaders[i].module];
|
||||
@@ -2883,6 +2882,8 @@ void VulkanReplay::SavePipelineState()
|
||||
stage.stage = ShaderStage::Compute;
|
||||
if(p.shaders[i].mapping)
|
||||
stage.BindpointMapping = *p.shaders[i].mapping;
|
||||
if(p.shaders[i].refl)
|
||||
stage.ShaderDetails = p.shaders[i].refl;
|
||||
|
||||
create_array_uninit(stage.specialization, p.shaders[i].specialization.size());
|
||||
for(size_t s = 0; s < p.shaders[i].specialization.size(); s++)
|
||||
@@ -2940,7 +2941,6 @@ void VulkanReplay::SavePipelineState()
|
||||
{
|
||||
stages[i]->Object = rm->GetOriginalID(p.shaders[i].module);
|
||||
stages[i]->entryPoint = p.shaders[i].entryPoint;
|
||||
stages[i]->ShaderDetails = NULL;
|
||||
|
||||
stages[i]->customName = true;
|
||||
stages[i]->name = m_pDriver->m_CreationInfo.m_Names[p.shaders[i].module];
|
||||
@@ -2953,6 +2953,8 @@ void VulkanReplay::SavePipelineState()
|
||||
stages[i]->stage = StageFromIndex(i);
|
||||
if(p.shaders[i].mapping)
|
||||
stages[i]->BindpointMapping = *p.shaders[i].mapping;
|
||||
if(p.shaders[i].refl)
|
||||
stages[i]->ShaderDetails = p.shaders[i].refl;
|
||||
|
||||
create_array_uninit(stages[i]->specialization, p.shaders[i].specialization.size());
|
||||
for(size_t s = 0; s < p.shaders[i].specialization.size(); s++)
|
||||
|
||||
@@ -153,10 +153,10 @@ public:
|
||||
vector<DebugMessage> GetDebugMessages();
|
||||
|
||||
void SavePipelineState();
|
||||
D3D11Pipe::State GetD3D11PipelineState() { return D3D11Pipe::State(); }
|
||||
D3D12Pipe::State GetD3D12PipelineState() { return D3D12Pipe::State(); }
|
||||
GLPipe::State GetGLPipelineState() { return GLPipe::State(); }
|
||||
VKPipe::State GetVulkanPipelineState() { return m_VulkanPipelineState; }
|
||||
const D3D11Pipe::State &GetD3D11PipelineState() { return m_D3D11State; }
|
||||
const D3D12Pipe::State &GetD3D12PipelineState() { return m_D3D12State; }
|
||||
const GLPipe::State &GetGLPipelineState() { return m_GLState; }
|
||||
const VKPipe::State &GetVulkanPipelineState() { return m_VulkanPipelineState; }
|
||||
void FreeTargetResource(ResourceId id);
|
||||
|
||||
void ReadLogInitialisation();
|
||||
@@ -321,6 +321,9 @@ private:
|
||||
};
|
||||
|
||||
VKPipe::State m_VulkanPipelineState;
|
||||
D3D11Pipe::State m_D3D11State;
|
||||
D3D12Pipe::State m_D3D12State;
|
||||
GLPipe::State m_GLState;
|
||||
|
||||
map<uint64_t, OutputWindow> m_OutputWindows;
|
||||
uint64_t m_OutputWinID;
|
||||
|
||||
@@ -213,24 +213,24 @@ void ReplayController::SetFrameEvent(uint32_t eventID, bool force)
|
||||
}
|
||||
}
|
||||
|
||||
D3D11Pipe::State ReplayController::GetD3D11PipelineState()
|
||||
const D3D11Pipe::State &ReplayController::GetD3D11PipelineState()
|
||||
{
|
||||
return m_D3D11PipelineState;
|
||||
return *m_D3D11PipelineState;
|
||||
}
|
||||
|
||||
D3D12Pipe::State ReplayController::GetD3D12PipelineState()
|
||||
const D3D12Pipe::State &ReplayController::GetD3D12PipelineState()
|
||||
{
|
||||
return m_D3D12PipelineState;
|
||||
return *m_D3D12PipelineState;
|
||||
}
|
||||
|
||||
GLPipe::State ReplayController::GetGLPipelineState()
|
||||
const GLPipe::State &ReplayController::GetGLPipelineState()
|
||||
{
|
||||
return m_GLPipelineState;
|
||||
return *m_GLPipelineState;
|
||||
}
|
||||
|
||||
VKPipe::State ReplayController::GetVulkanPipelineState()
|
||||
const VKPipe::State &ReplayController::GetVulkanPipelineState()
|
||||
{
|
||||
return m_VulkanPipelineState;
|
||||
return *m_VulkanPipelineState;
|
||||
}
|
||||
|
||||
rdctype::array<rdctype::str> ReplayController::GetDisassemblyTargets()
|
||||
@@ -1645,53 +1645,8 @@ void ReplayController::FetchPipelineState()
|
||||
{
|
||||
m_pDevice->SavePipelineState();
|
||||
|
||||
m_D3D11PipelineState = m_pDevice->GetD3D11PipelineState();
|
||||
m_D3D12PipelineState = m_pDevice->GetD3D12PipelineState();
|
||||
m_GLPipelineState = m_pDevice->GetGLPipelineState();
|
||||
m_VulkanPipelineState = m_pDevice->GetVulkanPipelineState();
|
||||
|
||||
{
|
||||
D3D11Pipe::Shader *stages[] = {
|
||||
&m_D3D11PipelineState.m_VS, &m_D3D11PipelineState.m_HS, &m_D3D11PipelineState.m_DS,
|
||||
&m_D3D11PipelineState.m_GS, &m_D3D11PipelineState.m_PS, &m_D3D11PipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
D3D12Pipe::Shader *stages[] = {
|
||||
&m_D3D12PipelineState.m_VS, &m_D3D12PipelineState.m_HS, &m_D3D12PipelineState.m_DS,
|
||||
&m_D3D12PipelineState.m_GS, &m_D3D12PipelineState.m_PS, &m_D3D12PipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
GLPipe::Shader *stages[] = {
|
||||
&m_GLPipelineState.m_VS, &m_GLPipelineState.m_TCS, &m_GLPipelineState.m_TES,
|
||||
&m_GLPipelineState.m_GS, &m_GLPipelineState.m_FS, &m_GLPipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Object), "");
|
||||
}
|
||||
|
||||
{
|
||||
VKPipe::Shader *stages[] = {
|
||||
&m_VulkanPipelineState.m_VS, &m_VulkanPipelineState.m_TCS, &m_VulkanPipelineState.m_TES,
|
||||
&m_VulkanPipelineState.m_GS, &m_VulkanPipelineState.m_FS, &m_VulkanPipelineState.m_CS,
|
||||
};
|
||||
|
||||
for(int i = 0; i < 6; i++)
|
||||
if(stages[i]->Object != ResourceId())
|
||||
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Object),
|
||||
stages[i]->entryPoint.elems);
|
||||
}
|
||||
m_D3D11PipelineState = &m_pDevice->GetD3D11PipelineState();
|
||||
m_D3D12PipelineState = &m_pDevice->GetD3D12PipelineState();
|
||||
m_GLPipelineState = &m_pDevice->GetGLPipelineState();
|
||||
m_VulkanPipelineState = &m_pDevice->GetVulkanPipelineState();
|
||||
}
|
||||
|
||||
@@ -137,10 +137,10 @@ public:
|
||||
|
||||
void FetchPipelineState();
|
||||
|
||||
D3D11Pipe::State GetD3D11PipelineState();
|
||||
D3D12Pipe::State GetD3D12PipelineState();
|
||||
GLPipe::State GetGLPipelineState();
|
||||
VKPipe::State GetVulkanPipelineState();
|
||||
const D3D11Pipe::State &GetD3D11PipelineState();
|
||||
const D3D12Pipe::State &GetD3D12PipelineState();
|
||||
const GLPipe::State &GetGLPipelineState();
|
||||
const VKPipe::State &GetVulkanPipelineState();
|
||||
|
||||
rdctype::array<rdctype::str> GetDisassemblyTargets();
|
||||
rdctype::str DisassembleShader(const ShaderReflection *refl, const char *target);
|
||||
@@ -213,10 +213,10 @@ private:
|
||||
|
||||
uint32_t m_EventID;
|
||||
|
||||
D3D11Pipe::State m_D3D11PipelineState;
|
||||
D3D12Pipe::State m_D3D12PipelineState;
|
||||
GLPipe::State m_GLPipelineState;
|
||||
VKPipe::State m_VulkanPipelineState;
|
||||
const D3D11Pipe::State *m_D3D11PipelineState;
|
||||
const D3D12Pipe::State *m_D3D12PipelineState;
|
||||
const GLPipe::State *m_GLPipelineState;
|
||||
const VKPipe::State *m_VulkanPipelineState;
|
||||
|
||||
std::vector<ReplayOutput *> m_Outputs;
|
||||
|
||||
|
||||
@@ -98,10 +98,10 @@ public:
|
||||
virtual vector<EventUsage> GetUsage(ResourceId id) = 0;
|
||||
|
||||
virtual void SavePipelineState() = 0;
|
||||
virtual D3D11Pipe::State GetD3D11PipelineState() = 0;
|
||||
virtual D3D12Pipe::State GetD3D12PipelineState() = 0;
|
||||
virtual GLPipe::State GetGLPipelineState() = 0;
|
||||
virtual VKPipe::State GetVulkanPipelineState() = 0;
|
||||
virtual const D3D11Pipe::State &GetD3D11PipelineState() = 0;
|
||||
virtual const D3D12Pipe::State &GetD3D12PipelineState() = 0;
|
||||
virtual const GLPipe::State &GetGLPipelineState() = 0;
|
||||
virtual const VKPipe::State &GetVulkanPipelineState() = 0;
|
||||
|
||||
virtual FrameRecord GetFrameRecord() = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user