Get abbreviations from common pipeline state (as they're API specific)

* Also the PipelineStateViewer will set its current 'sticky' API type
  to the common pipeline state, so that when a log isn't loaded we can
  still get API-specific properties that match the last API used.
This commit is contained in:
baldurk
2015-11-22 14:23:16 +01:00
parent ebb9f05c75
commit e51cf27321
3 changed files with 61 additions and 44 deletions
+58 -14
View File
@@ -49,6 +49,8 @@ namespace renderdocui.Code
m_Vulkan = vk;
}
public APIPipelineStateType DefaultType = APIPipelineStateType.D3D11;
private bool LogLoaded
{
get
@@ -103,6 +105,62 @@ namespace renderdocui.Code
}
}
public bool SupportsResourceArrays
{
get
{
if (LogLoaded)
{
if (IsLogVK)
return true;
}
return false;
}
}
public string Abbrev(ShaderStageType stage)
{
if (IsLogD3D11 || (!LogLoaded && DefaultType == APIPipelineStateType.D3D11))
{
switch (stage)
{
case ShaderStageType.Vertex: return "VS";
case ShaderStageType.Hull: return "HS";
case ShaderStageType.Domain: return "DS";
case ShaderStageType.Geometry: return "GS";
case ShaderStageType.Pixel: return "PS";
case ShaderStageType.Compute: return "CS";
}
}
else if (IsLogGL || (!LogLoaded && DefaultType == APIPipelineStateType.OpenGL) ||
IsLogVK || (!LogLoaded && DefaultType == APIPipelineStateType.Vulkan))
{
switch (stage)
{
case ShaderStageType.Vertex: return "VS";
case ShaderStageType.Tess_Control: return "TCS";
case ShaderStageType.Tess_Eval: return "TES";
case ShaderStageType.Geometry: return "GS";
case ShaderStageType.Fragment: return "FS";
case ShaderStageType.Compute: return "CS";
}
}
return "?S";
}
public string OutputAbbrev()
{
if (IsLogGL || (!LogLoaded && DefaultType == APIPipelineStateType.OpenGL) ||
IsLogVK || (!LogLoaded && DefaultType == APIPipelineStateType.Vulkan))
{
return "FB";
}
return "RT";
}
// there's a lot of redundancy in these functions
public ShaderBindpointMapping GetBindpointMapping(ShaderStageType stage)
@@ -604,20 +662,6 @@ namespace renderdocui.Code
return null;
}
public bool SupportsResourceArrays
{
get
{
if (LogLoaded)
{
if (IsLogVK)
return true;
}
return false;
}
}
public void GetConstantBuffer(ShaderStageType stage, uint BufIdx, uint ArrayIdx, out ResourceId buf, out ulong ByteOffset, out ulong ByteSize)
{
if (LogLoaded)
-30
View File
@@ -725,36 +725,6 @@ namespace renderdoc
return stage.ToString();
}
public static string Abbrev(this ShaderStageType stage, APIPipelineStateType apitype)
{
if (apitype == APIPipelineStateType.D3D11)
{
switch (stage)
{
case ShaderStageType.Vertex: return "VS";
case ShaderStageType.Hull: return "HS";
case ShaderStageType.Domain: return "DS";
case ShaderStageType.Geometry: return "GS";
case ShaderStageType.Pixel: return "PS";
case ShaderStageType.Compute: return "CS";
}
}
else if (apitype == APIPipelineStateType.OpenGL)
{
switch (stage)
{
case ShaderStageType.Vertex: return "VS";
case ShaderStageType.Tess_Control: return "TCS";
case ShaderStageType.Tess_Eval: return "TES";
case ShaderStageType.Geometry: return "GS";
case ShaderStageType.Fragment: return "FS";
case ShaderStageType.Compute: return "CS";
}
}
return "?S";
}
public static string Str(this SystemAttribute systemValue)
{
switch (systemValue)
@@ -101,6 +101,7 @@ namespace renderdocui.Windows.PipelineState
}
m_Current = m_D3D11;
m_Core.CurPipelineState.DefaultType = APIPipelineStateType.D3D11;
}
private void SetToGL()
@@ -117,6 +118,7 @@ namespace renderdocui.Windows.PipelineState
}
m_Current = m_GL;
m_Core.CurPipelineState.DefaultType = APIPipelineStateType.OpenGL;
}
private void SetToVulkan()
@@ -133,6 +135,7 @@ namespace renderdocui.Windows.PipelineState
}
m_Current = m_Vulkan;
m_Core.CurPipelineState.DefaultType = APIPipelineStateType.Vulkan;
}
public void OnLogfileLoaded()