mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
In D3D11 support setting friendly names on shaders
This commit is contained in:
@@ -474,6 +474,8 @@ D3D11PipelineState D3D11Replay::MakePipelineState()
|
||||
D3D11PipelineState::ShaderStage *dstArr = &ret.m_VS;
|
||||
const D3D11RenderState::shader *srcArr = &rs->VS;
|
||||
|
||||
const char *stageNames[] = { "Vertex", "Hull", "Domain", "Geometry", "Pixel", "Compute" };
|
||||
|
||||
for(size_t i=0; i < 6; i++)
|
||||
{
|
||||
D3D11PipelineState::ShaderStage &dst = dstArr[i];
|
||||
@@ -486,6 +488,17 @@ D3D11PipelineState D3D11Replay::MakePipelineState()
|
||||
dst.Shader = rm->GetOriginalID(id);
|
||||
dst.ShaderDetails = NULL;
|
||||
|
||||
string str = GetDebugName(src.Shader);
|
||||
dst.customName = true;
|
||||
|
||||
if(str == "" && dst.Shader != ResourceId())
|
||||
{
|
||||
dst.customName = false;
|
||||
str = StringFormat::Fmt("%hs Shader %llu", stageNames[i], dst.Shader);
|
||||
}
|
||||
|
||||
dst.ShaderName = widen(str);
|
||||
|
||||
// create identity bindpoint mapping
|
||||
create_array_uninit(dst.BindpointMapping.ConstantBlocks, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT);
|
||||
for(int s=0; s < D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT; s++)
|
||||
|
||||
@@ -71,6 +71,8 @@ struct D3D11PipelineState
|
||||
{
|
||||
ShaderStage() : Shader(), ShaderDetails(NULL) {}
|
||||
ResourceId Shader;
|
||||
rdctype::wstr ShaderName;
|
||||
bool32 customName;
|
||||
ShaderReflection *ShaderDetails;
|
||||
ShaderBindpointMapping BindpointMapping;
|
||||
|
||||
|
||||
@@ -208,6 +208,39 @@ namespace renderdocui.Code
|
||||
return ResourceId.Null;
|
||||
}
|
||||
|
||||
public string GetShaderName(ShaderStageType stage)
|
||||
{
|
||||
if (LogLoaded)
|
||||
{
|
||||
if (IsLogD3D11)
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return m_D3D11.m_VS.ShaderName;
|
||||
case ShaderStageType.Domain: return m_D3D11.m_DS.ShaderName;
|
||||
case ShaderStageType.Hull: return m_D3D11.m_HS.ShaderName;
|
||||
case ShaderStageType.Geometry: return m_D3D11.m_GS.ShaderName;
|
||||
case ShaderStageType.Pixel: return m_D3D11.m_PS.ShaderName;
|
||||
case ShaderStageType.Compute: return m_D3D11.m_CS.ShaderName;
|
||||
}
|
||||
}
|
||||
else if (IsLogGL)
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return String.Format("Shader {0}", m_GL.m_VS.Shader);
|
||||
case ShaderStageType.Tess_Control: return String.Format("Shader {0}", m_GL.m_TCS.Shader);
|
||||
case ShaderStageType.Tess_Eval: return String.Format("Shader {0}", m_GL.m_TES.Shader);
|
||||
case ShaderStageType.Geometry: return String.Format("Shader {0}", m_GL.m_GS.Shader);
|
||||
case ShaderStageType.Fragment: return String.Format("Shader {0}", m_GL.m_FS.Shader);
|
||||
case ShaderStageType.Compute: return String.Format("Shader {0}", m_GL.m_CS.Shader);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
public void GetIBuffer(out ResourceId buf, out uint ByteOffset, out ResourceFormat IndexFormat)
|
||||
{
|
||||
if (LogLoaded)
|
||||
|
||||
@@ -103,6 +103,9 @@ namespace renderdoc
|
||||
}
|
||||
|
||||
public ResourceId Shader;
|
||||
[CustomMarshalAs(CustomUnmanagedType.WideTemplatedString)]
|
||||
public string ShaderName;
|
||||
public bool customName;
|
||||
private IntPtr _ptr_ShaderDetails;
|
||||
[CustomMarshalAs(CustomUnmanagedType.Skip)]
|
||||
public ShaderReflection ShaderDetails;
|
||||
|
||||
@@ -192,7 +192,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (stage.Shader == ResourceId.Null)
|
||||
shader.Text = "Unbound";
|
||||
else
|
||||
shader.Text = "Shader " + stage.Shader.ToString();
|
||||
shader.Text = stage.ShaderName;
|
||||
|
||||
if (shaderDetails != null && shaderDetails.DebugInfo.entryFunc != "" && shaderDetails.DebugInfo.files.Length > 0)
|
||||
shader.Text = shaderDetails.DebugInfo.entryFunc + "()" + " - " +
|
||||
|
||||
@@ -308,9 +308,9 @@ namespace renderdocui.Windows
|
||||
}
|
||||
|
||||
if (trace != null)
|
||||
Text = String.Format("Debug Shader {0} - {1}", m_Core.CurPipelineState.GetShader(stage), debugContext);
|
||||
Text = String.Format("Debugging {0} - {1}", m_Core.CurPipelineState.GetShaderName(stage), debugContext);
|
||||
else
|
||||
Text = String.Format("Shader {0}", m_Core.CurPipelineState.GetShader(stage));
|
||||
Text = m_Core.CurPipelineState.GetShaderName(stage);
|
||||
|
||||
var disasm = shader.Disassembly;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user