Mark dispatches as drawcalls and fixes for CS pipeline state

This commit is contained in:
baldurk committed 2016-02-07 18:50:08 +01:00
1 parent f93f5c8d89
commit 8e089a8768
3 files changed
+55 -4

No files matched your search

+33 -2
View File
@@ -2720,7 +2720,39 @@ void VulkanReplay::SavePipelineState()
m_VulkanPipelineState.graphics.obj = rm->GetOriginalID(state.graphics.pipeline);
if(state.compute.pipeline != ResourceId())
m_VulkanPipelineState.compute.flags = c.m_Pipeline[state.compute.pipeline].flags;
{
const VulkanCreationInfo::Pipeline &p = c.m_Pipeline[state.compute.pipeline];
m_VulkanPipelineState.compute.flags = p.flags;
VulkanPipelineState::ShaderStage &stage = m_VulkanPipelineState.CS;
int i=5; // 5 is the CS idx (VS, TCS, TES, GS, FS, CS)
{
stage.Shader = rm->GetOriginalID(p.shaders[i].module);
stage.entryPoint = p.shaders[i].entryPoint;
stage.ShaderDetails = NULL;
stage.customName = true;
stage.ShaderName = m_pDriver->m_CreationInfo.m_Names[p.shaders[i].module];
if(stage.ShaderName.count == 0)
{
stage.customName = false;
stage.ShaderName = StringFormat::Fmt("Shader %llu", stage.Shader);
}
stage.stage = eShaderStage_Compute;
if(p.shaders[i].mapping)
stage.BindpointMapping = *p.shaders[i].mapping;
create_array_uninit(stage.specialization, p.shaders[i].specialization.size());
for(size_t s=0; s < p.shaders[i].specialization.size(); s++)
{
stage.specialization[s].specID = p.shaders[i].specialization[s].specID;
create_array_init(stage.specialization[s].data, p.shaders[i].specialization[s].size, p.shaders[i].specialization[s].data);
}
}
}
if(state.graphics.pipeline != ResourceId())
{
@@ -2765,7 +2797,6 @@ void VulkanReplay::SavePipelineState()
&m_VulkanPipelineState.TES,
&m_VulkanPipelineState.GS,
&m_VulkanPipelineState.FS,
&m_VulkanPipelineState.CS,
};
for(size_t i=0; i < ARRAY_COUNT(stages); i++)
@@ -1201,6 +1201,26 @@ bool WrappedVulkan::Serialise_vkCmdDispatch(
commandBuffer = GetResourceManager()->GetLiveHandle<VkCommandBuffer>(cmdid);
ObjDisp(commandBuffer)->CmdDispatch(Unwrap(commandBuffer), X, Y, Z);
const string desc = localSerialiser->GetDebugStr();
{
AddEvent(DISPATCH, desc);
string name = "vkCmdDispatch(" +
ToStr::Get(X) + "," +
ToStr::Get(Y) + "," +
ToStr::Get(Z) + ")";
FetchDrawcall draw;
draw.name = name;
draw.dispatchDimension[0] = X;
draw.dispatchDimension[1] = Y;
draw.dispatchDimension[2] = Z;
draw.flags |= eDraw_Dispatch;
AddDrawcall(draw, true);
}
}
return true;
@@ -3265,7 +3265,7 @@
this.csResources.Size = new System.Drawing.Size(1070, 195);
this.csResources.TabIndex = 1;
this.csResources.Text = "Outputs";
this.csResources.TreeColumn = 7;
this.csResources.TreeColumn = 8;
this.csResources.ViewOptions.Indent = 0;
this.csResources.ViewOptions.ShowLine = false;
this.csResources.ViewOptions.PadForPlusMinus = false;
@@ -3325,7 +3325,7 @@
this.csCBuffers.Size = new System.Drawing.Size(1070, 195);
this.csCBuffers.TabIndex = 11;
this.csCBuffers.Text = "Constant Buffers";
this.csCBuffers.TreeColumn = 5;
this.csCBuffers.TreeColumn = 6;
this.csCBuffers.ViewOptions.Indent = 0;
this.csCBuffers.ViewOptions.PadForPlusMinus = false;
this.csCBuffers.ViewOptions.ShowLine = false;