Add D3D12 pipeline state (state and viewer duplicated from D3D11)

This commit is contained in:
baldurk
2016-09-22 12:05:47 +02:00
parent 946194ea20
commit af9017af0a
30 changed files with 10380 additions and 31 deletions
+333
View File
@@ -0,0 +1,333 @@
/******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2016 Baldur Karlsson
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
******************************************************************************/
#pragma once
#include "shader_types.h"
struct D3D12PipelineState
{
D3D12PipelineState() {}
struct InputAssembler
{
InputAssembler() : Bytecode(NULL), customName(false) {}
struct LayoutInput
{
LayoutInput()
: SemanticIndex(0), InputSlot(0), ByteOffset(0), PerInstance(false), InstanceDataStepRate(0)
{
}
rdctype::str SemanticName;
uint32_t SemanticIndex;
ResourceFormat Format;
uint32_t InputSlot;
uint32_t ByteOffset;
bool32 PerInstance;
uint32_t InstanceDataStepRate;
};
rdctype::array<LayoutInput> layouts;
ResourceId layout;
ShaderReflection *Bytecode;
bool32 customName;
rdctype::str LayoutName;
struct VertexBuffer
{
VertexBuffer() : Buffer(), Stride(0), Offset(0) {}
ResourceId Buffer;
uint32_t Stride;
uint32_t Offset;
};
rdctype::array<VertexBuffer> vbuffers;
struct IndexBuffer
{
IndexBuffer() : Buffer(), Offset(0) {}
ResourceId Buffer;
uint32_t Offset;
} ibuffer;
} m_IA;
struct ShaderStage
{
ShaderStage() : Shader(), customName(false), ShaderDetails(NULL), stage(eShaderStage_Vertex) {}
ResourceId Shader;
rdctype::str ShaderName;
bool32 customName;
ShaderReflection *ShaderDetails;
ShaderBindpointMapping BindpointMapping;
ShaderStageType stage;
struct ResourceView
{
ResourceView()
: View(),
Resource(),
Format(),
Structured(false),
BufferStructCount(0),
ElementSize(0),
ElementOffset(0),
ElementWidth(0),
FirstElement(0),
NumElements(1),
Flags(0),
HighestMip(0),
NumMipLevels(1),
ArraySize(1),
FirstArraySlice(0)
{
}
ResourceId View;
ResourceId Resource;
rdctype::str Type;
ResourceFormat Format;
bool32 Structured;
uint32_t BufferStructCount;
uint32_t ElementSize;
// Buffer (SRV)
uint32_t ElementOffset;
uint32_t ElementWidth;
// Buffer (UAV)
uint32_t FirstElement;
uint32_t NumElements;
// BufferEx
uint32_t Flags;
// Texture
uint32_t HighestMip;
uint32_t NumMipLevels;
// Texture Array
uint32_t ArraySize;
uint32_t FirstArraySlice;
};
rdctype::array<ResourceView> SRVs;
rdctype::array<ResourceView> UAVs;
struct Sampler
{
Sampler()
: Samp(),
customSamplerName(false),
UseBorder(false),
UseComparison(false),
MaxAniso(0),
MaxLOD(0.0f),
MinLOD(0.0f),
MipLODBias(0.0f)
{
BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 0.0f;
}
ResourceId Samp;
rdctype::str SamplerName;
bool32 customSamplerName;
rdctype::str AddressU, AddressV, AddressW;
float BorderColor[4];
rdctype::str Comparison;
rdctype::str Filter;
bool32 UseBorder;
bool32 UseComparison;
uint32_t MaxAniso;
float MaxLOD;
float MinLOD;
float MipLODBias;
};
rdctype::array<Sampler> Samplers;
struct CBuffer
{
CBuffer() : Buffer(), VecOffset(0), VecCount(0) {}
ResourceId Buffer;
uint32_t VecOffset;
uint32_t VecCount;
};
rdctype::array<CBuffer> ConstantBuffers;
rdctype::array<rdctype::str> ClassInstances;
} m_VS, m_HS, m_DS, m_GS, m_PS, m_CS;
struct Streamout
{
struct Output
{
Output() : Buffer(), Offset(0) {}
ResourceId Buffer;
uint32_t Offset;
};
rdctype::array<Output> Outputs;
} m_SO;
struct Rasterizer
{
struct Viewport
{
Viewport() : Width(0.0f), Height(0.0f), MinDepth(0.0f), MaxDepth(0.0f), Enabled(false)
{
TopLeft[0] = 0.0f;
TopLeft[1] = 0.0f;
}
Viewport(float TX, float TY, float W, float H, float MN, float MX, bool en)
: Width(W), Height(H), MinDepth(MN), MaxDepth(MX), Enabled(en)
{
TopLeft[0] = TX;
TopLeft[1] = TY;
}
float TopLeft[2];
float Width, Height;
float MinDepth, MaxDepth;
bool32 Enabled;
};
rdctype::array<Viewport> Viewports;
struct Scissor
{
Scissor() : left(0), top(0), right(0), bottom(0), Enabled(false) {}
Scissor(int l, int t, int r, int b, bool en)
: left(l), top(t), right(r), bottom(b), Enabled(en)
{
}
int32_t left, top, right, bottom;
bool32 Enabled;
};
rdctype::array<Scissor> Scissors;
struct RasterizerState
{
RasterizerState()
: State(),
FillMode(eFill_Solid),
CullMode(eCull_None),
FrontCCW(false),
DepthBias(0),
DepthBiasClamp(0.0f),
SlopeScaledDepthBias(0.0f),
DepthClip(false),
ScissorEnable(false),
MultisampleEnable(false),
AntialiasedLineEnable(false),
ForcedSampleCount(0),
ConservativeRasterization(false)
{
}
ResourceId State;
TriangleFillMode FillMode;
TriangleCullMode CullMode;
bool32 FrontCCW;
int32_t DepthBias;
float DepthBiasClamp;
float SlopeScaledDepthBias;
bool32 DepthClip;
bool32 ScissorEnable;
bool32 MultisampleEnable;
bool32 AntialiasedLineEnable;
uint32_t ForcedSampleCount;
bool32 ConservativeRasterization;
} m_State;
} m_RS;
struct OutputMerger
{
OutputMerger() : UAVStartSlot(0), DepthReadOnly(false), StencilReadOnly(false) {}
struct DepthStencilState
{
DepthStencilState()
: State(),
DepthEnable(false),
DepthWrites(false),
StencilEnable(false),
StencilReadMask(0),
StencilWriteMask(0),
StencilRef(0)
{
}
ResourceId State;
bool32 DepthEnable;
rdctype::str DepthFunc;
bool32 DepthWrites;
bool32 StencilEnable;
byte StencilReadMask;
byte StencilWriteMask;
struct StencilOp
{
rdctype::str FailOp;
rdctype::str DepthFailOp;
rdctype::str PassOp;
rdctype::str Func;
} m_FrontFace, m_BackFace;
uint32_t StencilRef;
} m_State;
struct BlendState
{
BlendState() : AlphaToCoverage(false), IndependentBlend(false), SampleMask(0)
{
BlendFactor[0] = BlendFactor[1] = BlendFactor[2] = BlendFactor[3] = 0.0f;
}
ResourceId State;
bool32 AlphaToCoverage;
bool32 IndependentBlend;
struct RTBlend
{
RTBlend() : Enabled(false), LogicEnabled(false), WriteMask(0) {}
struct BlendOp
{
rdctype::str Source;
rdctype::str Destination;
rdctype::str Operation;
} m_Blend, m_AlphaBlend;
rdctype::str LogicOp;
bool32 Enabled;
bool32 LogicEnabled;
byte WriteMask;
};
rdctype::array<RTBlend> Blends;
float BlendFactor[4];
uint32_t SampleMask;
} m_BlendState;
rdctype::array<ShaderStage::ResourceView> RenderTargets;
uint32_t UAVStartSlot;
rdctype::array<ShaderStage::ResourceView> UAVs;
ShaderStage::ResourceView DepthTarget;
bool32 DepthReadOnly;
bool32 StencilReadOnly;
} m_OM;
};
+4
View File
@@ -136,6 +136,7 @@ struct ResourceId
#include "capture_options.h"
#include "control_types.h"
#include "d3d11_pipestate.h"
#include "d3d12_pipestate.h"
#include "data_types.h"
#include "gl_pipestate.h"
#include "replay_enums.h"
@@ -231,6 +232,7 @@ struct IReplayRenderer
virtual bool SetFrameEvent(uint32_t eventID, bool force) = 0;
virtual bool GetD3D11PipelineState(D3D11PipelineState *state) = 0;
virtual bool GetD3D12PipelineState(D3D12PipelineState *state) = 0;
virtual bool GetGLPipelineState(GLPipelineState *state) = 0;
virtual bool GetVulkanPipelineState(VulkanPipelineState *state) = 0;
@@ -325,6 +327,8 @@ extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_SetFrameEvent(Replay
bool32 force);
extern "C" RENDERDOC_API bool32 RENDERDOC_CC
ReplayRenderer_GetD3D11PipelineState(ReplayRenderer *rend, D3D11PipelineState *state);
extern "C" RENDERDOC_API bool32 RENDERDOC_CC
ReplayRenderer_GetD3D12PipelineState(ReplayRenderer *rend, D3D12PipelineState *state);
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetGLPipelineState(ReplayRenderer *rend,
GLPipelineState *state);
extern "C" RENDERDOC_API bool32 RENDERDOC_CC
+1
View File
@@ -224,6 +224,7 @@ enum QualityHint
enum GraphicsAPI
{
eGraphicsAPI_D3D11,
eGraphicsAPI_D3D12,
eGraphicsAPI_OpenGL,
eGraphicsAPI_Vulkan,
};
+1
View File
@@ -164,6 +164,7 @@ public:
return ret;
}
void SavePipelineState() {}
D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); }
GLPipelineState GetGLPipelineState() { return GLPipelineState(); }
VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); }
void ReplayLog(uint32_t endEventID, ReplayLogType replayType) {}
+13
View File
@@ -492,6 +492,16 @@ void Serialiser::Serialise(const char *name, D3D11PipelineState &el)
#pragma endregion D3D11 pipeline state
#pragma region D3D12 pipeline state
template <>
void Serialiser::Serialise(const char *name, D3D12PipelineState &el)
{
RDCUNIMPLEMENTED("Serialiser::Serialise<D3D12PipelineState>()");
}
#pragma endregion D3D12 pipeline state
#pragma region OpenGL pipeline state
template <>
@@ -2008,6 +2018,7 @@ void ReplayProxy::SavePipelineState()
{
m_Remote->SavePipelineState();
m_D3D11PipelineState = m_Remote->GetD3D11PipelineState();
m_D3D12PipelineState = m_Remote->GetD3D12PipelineState();
m_GLPipelineState = m_Remote->GetGLPipelineState();
m_VulkanPipelineState = m_Remote->GetVulkanPipelineState();
}
@@ -2017,11 +2028,13 @@ void ReplayProxy::SavePipelineState()
return;
m_D3D11PipelineState = D3D11PipelineState();
m_D3D12PipelineState = D3D12PipelineState();
m_GLPipelineState = GLPipelineState();
m_VulkanPipelineState = VulkanPipelineState();
}
m_FromReplaySerialiser->Serialise("", m_D3D11PipelineState);
m_FromReplaySerialiser->Serialise("", m_D3D12PipelineState);
m_FromReplaySerialiser->Serialise("", m_GLPipelineState);
m_FromReplaySerialiser->Serialise("", m_VulkanPipelineState);
}
+2
View File
@@ -398,6 +398,7 @@ public:
void SavePipelineState();
D3D11PipelineState GetD3D11PipelineState() { return m_D3D11PipelineState; }
D3D12PipelineState GetD3D12PipelineState() { return m_D3D12PipelineState; }
GLPipelineState GetGLPipelineState() { return m_GLPipelineState; }
VulkanPipelineState GetVulkanPipelineState() { return m_VulkanPipelineState; }
void ReplayLog(uint32_t endEventID, ReplayLogType replayType);
@@ -539,6 +540,7 @@ private:
APIProperties m_APIProps;
D3D11PipelineState m_D3D11PipelineState;
D3D12PipelineState m_D3D12PipelineState;
GLPipelineState m_GLPipelineState;
VulkanPipelineState m_VulkanPipelineState;
};
+1
View File
@@ -64,6 +64,7 @@ public:
void SavePipelineState() { m_CurPipelineState = MakePipelineState(); }
D3D11PipelineState GetD3D11PipelineState() { return m_CurPipelineState; }
D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); }
GLPipelineState GetGLPipelineState() { return GLPipelineState(); }
VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); }
void FreeTargetResource(ResourceId id);
+1 -4
View File
@@ -350,11 +350,8 @@ vector<uint32_t> D3D12Replay::GetPassEvents(uint32_t eventID)
return passEvents;
}
D3D11PipelineState D3D12Replay::MakePipelineState()
void D3D12Replay::MakePipelineState()
{
D3D11PipelineState ret;
return ret;
}
void D3D12Replay::InitPostVSBuffers(uint32_t eventID)
+4 -1
View File
@@ -59,6 +59,7 @@ public:
void SavePipelineState() { MakePipelineState(); }
D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); }
D3D12PipelineState GetD3D12PipelineState() { return m_PipelineState; }
GLPipelineState GetGLPipelineState() { return GLPipelineState(); }
VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); }
void FreeTargetResource(ResourceId id);
@@ -160,11 +161,13 @@ public:
Callstack::StackResolver *GetCallstackResolver();
private:
D3D11PipelineState MakePipelineState();
void MakePipelineState();
bool m_Proxy;
vector<ID3D12Resource *> m_ProxyResources;
D3D12PipelineState m_PipelineState;
WrappedID3D12Device *m_pDevice;
};
+1
View File
@@ -105,6 +105,7 @@ public:
void SavePipelineState();
D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); }
D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); }
GLPipelineState GetGLPipelineState() { return m_CurPipelineState; }
VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); }
void FreeTargetResource(ResourceId id);
+1
View File
@@ -146,6 +146,7 @@ public:
void SavePipelineState();
D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); }
D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); }
GLPipelineState GetGLPipelineState() { return GLPipelineState(); }
VulkanPipelineState GetVulkanPipelineState() { return m_VulkanPipelineState; }
void FreeTargetResource(ResourceId id);
+1
View File
@@ -232,6 +232,7 @@
<ClInclude Include="api\replay\capture_options.h" />
<ClInclude Include="api\replay\control_types.h" />
<ClInclude Include="api\replay\d3d11_pipestate.h" />
<ClInclude Include="api\replay\d3d12_pipestate.h" />
<ClInclude Include="api\replay\data_types.h" />
<ClInclude Include="api\replay\gl_pipestate.h" />
<ClInclude Include="api\replay\renderdoc_replay.h" />
+3
View File
@@ -249,6 +249,9 @@
<ClInclude Include="data\glsl\vk_texsample.h">
<Filter>Resources\glsl</Filter>
</ClInclude>
<ClInclude Include="api\replay\d3d12_pipestate.h">
<Filter>API\Replay</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="maths\camera.cpp">
+1
View File
@@ -68,6 +68,7 @@ public:
virtual void SavePipelineState() = 0;
virtual D3D11PipelineState GetD3D11PipelineState() = 0;
virtual D3D12PipelineState GetD3D12PipelineState() = 0;
virtual GLPipelineState GetGLPipelineState() = 0;
virtual VulkanPipelineState GetVulkanPipelineState() = 0;
+28
View File
@@ -192,6 +192,17 @@ bool ReplayRenderer::GetD3D11PipelineState(D3D11PipelineState *state)
return false;
}
bool ReplayRenderer::GetD3D12PipelineState(D3D12PipelineState *state)
{
if(state)
{
*state = m_D3D12PipelineState;
return true;
}
return false;
}
bool ReplayRenderer::GetGLPipelineState(GLPipelineState *state)
{
if(state)
@@ -1611,6 +1622,7 @@ void ReplayRenderer::FetchPipelineState()
m_pDevice->SavePipelineState();
m_D3D11PipelineState = m_pDevice->GetD3D11PipelineState();
m_D3D12PipelineState = m_pDevice->GetD3D12PipelineState();
m_GLPipelineState = m_pDevice->GetGLPipelineState();
m_VulkanPipelineState = m_pDevice->GetVulkanPipelineState();
@@ -1625,6 +1637,17 @@ void ReplayRenderer::FetchPipelineState()
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Shader), "");
}
{
D3D12PipelineState::ShaderStage *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]->Shader != ResourceId())
stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Shader), "");
}
{
GLPipelineState::ShaderStage *stages[] = {
&m_GLPipelineState.m_VS, &m_GLPipelineState.m_TCS, &m_GLPipelineState.m_TES,
@@ -1702,6 +1725,11 @@ ReplayRenderer_GetD3D11PipelineState(ReplayRenderer *rend, D3D11PipelineState *s
{
return rend->GetD3D11PipelineState(state);
}
extern "C" RENDERDOC_API bool32 RENDERDOC_CC
ReplayRenderer_GetD3D12PipelineState(ReplayRenderer *rend, D3D12PipelineState *state)
{
return rend->GetD3D12PipelineState(state);
}
extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetGLPipelineState(ReplayRenderer *rend,
GLPipelineState *state)
{
+2
View File
@@ -136,6 +136,7 @@ public:
void FetchPipelineState();
bool GetD3D11PipelineState(D3D11PipelineState *state);
bool GetD3D12PipelineState(D3D12PipelineState *state);
bool GetGLPipelineState(GLPipelineState *state);
bool GetVulkanPipelineState(VulkanPipelineState *state);
@@ -213,6 +214,7 @@ private:
uint32_t m_EventID;
D3D11PipelineState m_D3D11PipelineState;
D3D12PipelineState m_D3D12PipelineState;
GLPipelineState m_GLPipelineState;
VulkanPipelineState m_VulkanPipelineState;
+12 -2
View File
@@ -71,6 +71,7 @@ namespace renderdocui.Code
public class CommonPipelineState
{
private D3D11PipelineState m_D3D11 = null;
private D3D12PipelineState m_D3D12 = null;
private GLPipelineState m_GL = null;
private VulkanPipelineState m_Vulkan = null;
private APIProperties m_APIProps = null;
@@ -79,10 +80,11 @@ namespace renderdocui.Code
{
}
public void SetStates(APIProperties props, D3D11PipelineState d3d11, GLPipelineState gl, VulkanPipelineState vk)
public void SetStates(APIProperties props, D3D11PipelineState d3d11, D3D12PipelineState d3d12, GLPipelineState gl, VulkanPipelineState vk)
{
m_APIProps = props;
m_D3D11 = d3d11;
m_D3D12 = d3d12;
m_GL = gl;
m_Vulkan = vk;
}
@@ -93,7 +95,7 @@ namespace renderdocui.Code
{
get
{
return m_D3D11 != null || m_GL != null || m_Vulkan != null;
return m_D3D11 != null || m_D3D12 != null || m_GL != null || m_Vulkan != null;
}
}
@@ -105,6 +107,14 @@ namespace renderdocui.Code
}
}
private bool IsLogD3D12
{
get
{
return LogLoaded && m_APIProps.pipelineType == GraphicsAPI.D3D12 && m_D3D12 != null;
}
}
private bool IsLogGL
{
get
+7 -3
View File
@@ -74,6 +74,7 @@ namespace renderdocui.Code
private FetchTexture[] m_Textures = null;
private D3D11PipelineState m_D3D11PipelineState = null;
private D3D12PipelineState m_D3D12PipelineState = null;
private GLPipelineState m_GLPipelineState = null;
private VulkanPipelineState m_VulkanPipelineState = null;
private CommonPipelineState m_PipelineState = new CommonPipelineState();
@@ -174,6 +175,7 @@ namespace renderdocui.Code
// direct access (note that only one of these will be valid for a log, check APIProps.pipelineType)
public D3D11PipelineState CurD3D11PipelineState { get { return m_D3D11PipelineState; } }
public D3D12PipelineState CurD3D12PipelineState { get { return m_D3D12PipelineState; } }
public GLPipelineState CurGLPipelineState { get { return m_GLPipelineState; } }
public VulkanPipelineState CurVulkanPipelineState { get { return m_VulkanPipelineState; } }
public CommonPipelineState CurPipelineState { get { return m_PipelineState; } }
@@ -565,9 +567,10 @@ namespace renderdocui.Code
postloadProgress = 0.9f;
m_D3D11PipelineState = r.GetD3D11PipelineState();
m_D3D12PipelineState = r.GetD3D12PipelineState();
m_GLPipelineState = r.GetGLPipelineState();
m_VulkanPipelineState = r.GetVulkanPipelineState();
m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_GLPipelineState, m_VulkanPipelineState);
m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_D3D12PipelineState, m_GLPipelineState, m_VulkanPipelineState);
UnreadMessageCount = 0;
AddMessages(m_FrameInfo.debugMessages);
@@ -669,7 +672,7 @@ namespace renderdocui.Code
m_D3D11PipelineState = null;
m_GLPipelineState = null;
m_VulkanPipelineState = null;
m_PipelineState.SetStates(null, null, null, null);
m_PipelineState.SetStates(null, null,null, null, null);
DebugMessages.Clear();
UnreadMessageCount = 0;
@@ -902,9 +905,10 @@ namespace renderdocui.Code
{
r.SetFrameEvent(m_EventID, force);
m_D3D11PipelineState = r.GetD3D11PipelineState();
m_D3D12PipelineState = r.GetD3D12PipelineState();
m_GLPipelineState = r.GetGLPipelineState();
m_VulkanPipelineState = r.GetVulkanPipelineState();
m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_GLPipelineState, m_VulkanPipelineState);
m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_D3D12PipelineState, m_GLPipelineState, m_VulkanPipelineState);
});
foreach (var logviewer in m_LogViewers)
+1 -1
View File
@@ -137,7 +137,7 @@ namespace renderdoc
public UInt32 NumElements;
// BufferEx
public D3D11BufferViewFlags Flags;
public D3DBufferViewFlags Flags;
// Texture
public UInt32 HighestMip;
+358
View File
@@ -0,0 +1,358 @@
/******************************************************************************
* The MIT License (MIT)
*
* Copyright (c) 2015-2016 Baldur Karlsson
* Copyright (c) 2014 Crytek
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
******************************************************************************/
using System;
using System.Runtime.InteropServices;
namespace renderdoc
{
[StructLayout(LayoutKind.Sequential)]
public class D3D12PipelineState
{
[StructLayout(LayoutKind.Sequential)]
public class InputAssembler
{
private void PostMarshal()
{
if (_ptr_Bytecode != IntPtr.Zero)
Bytecode = (ShaderReflection)CustomMarshal.PtrToStructure(_ptr_Bytecode, typeof(ShaderReflection), false);
else
Bytecode = null;
_ptr_Bytecode = IntPtr.Zero;
}
[StructLayout(LayoutKind.Sequential)]
public class LayoutInput
{
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string SemanticName;
public UInt32 SemanticIndex;
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public ResourceFormat Format;
public UInt32 InputSlot;
public UInt32 ByteOffset;
public bool PerInstance;
public UInt32 InstanceDataStepRate;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public LayoutInput[] layouts;
public ResourceId layout;
private IntPtr _ptr_Bytecode;
[CustomMarshalAs(CustomUnmanagedType.Skip)]
public ShaderReflection Bytecode;
public bool customName;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string LayoutName;
[StructLayout(LayoutKind.Sequential)]
public class VertexBuffer
{
public ResourceId Buffer;
public UInt32 Stride;
public UInt32 Offset;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public VertexBuffer[] vbuffers;
[StructLayout(LayoutKind.Sequential)]
public class IndexBuffer
{
public ResourceId Buffer;
public UInt32 Offset;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public IndexBuffer ibuffer;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public InputAssembler m_IA;
[StructLayout(LayoutKind.Sequential)]
public class ShaderStage
{
private void PostMarshal()
{
if (_ptr_ShaderDetails != IntPtr.Zero)
ShaderDetails = (ShaderReflection)CustomMarshal.PtrToStructure(_ptr_ShaderDetails, typeof(ShaderReflection), false);
else
ShaderDetails = null;
_ptr_ShaderDetails = IntPtr.Zero;
}
public ResourceId Shader;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string ShaderName;
public bool customName;
private IntPtr _ptr_ShaderDetails;
[CustomMarshalAs(CustomUnmanagedType.Skip)]
public ShaderReflection ShaderDetails;
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public ShaderBindpointMapping BindpointMapping;
public ShaderStageType stage;
[StructLayout(LayoutKind.Sequential)]
public class ResourceView
{
public ResourceId View;
public ResourceId Resource;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Type;
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public ResourceFormat Format;
public bool Structured;
public UInt32 BufferStructCount;
public UInt32 ElementSize;
// Buffer (SRV)
public UInt32 ElementOffset;
public UInt32 ElementWidth;
// Buffer (UAV)
public UInt32 FirstElement;
public UInt32 NumElements;
// BufferEx
public D3DBufferViewFlags Flags;
// Texture
public UInt32 HighestMip;
public UInt32 NumMipLevels;
// Texture Array
public UInt32 ArraySize;
public UInt32 FirstArraySlice;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public ResourceView[] SRVs;
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public ResourceView[] UAVs;
[StructLayout(LayoutKind.Sequential)]
public class Sampler
{
public ResourceId Samp;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string SamplerName;
public bool customSamplerName;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string AddressU, AddressV, AddressW;
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
public float[] BorderColor;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Comparison;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Filter;
public bool UseBorder;
public bool UseComparison;
public UInt32 MaxAniso;
public float MaxLOD;
public float MinLOD;
public float MipLODBias;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public Sampler[] Samplers;
[StructLayout(LayoutKind.Sequential)]
public class CBuffer
{
public ResourceId Buffer;
public UInt32 VecOffset;
public UInt32 VecCount;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public CBuffer[] ConstantBuffers;
[StructLayout(LayoutKind.Sequential)]
public class ClassInstance
{
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
string name;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public ClassInstance[] ClassInstances;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public ShaderStage m_VS, m_HS, m_DS, m_GS, m_PS, m_CS;
[StructLayout(LayoutKind.Sequential)]
public class Streamout
{
[StructLayout(LayoutKind.Sequential)]
public class Output
{
public ResourceId Buffer;
public UInt32 Offset;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public Output[] Outputs;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public Streamout m_SO;
[StructLayout(LayoutKind.Sequential)]
public class Rasterizer
{
[StructLayout(LayoutKind.Sequential)]
public class Viewport
{
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 2)]
public float[] TopLeft;
public float Width, Height;
public float MinDepth, MaxDepth;
public bool Enabled;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public Viewport[] Viewports;
[StructLayout(LayoutKind.Sequential)]
public class Scissor
{
public Int32 left, top, right, bottom;
public bool Enabled;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public Scissor[] Scissors;
[StructLayout(LayoutKind.Sequential)]
public class RasterizerState
{
public ResourceId State;
public TriangleFillMode FillMode;
public TriangleCullMode CullMode;
public bool FrontCCW;
public Int32 DepthBias;
public float DepthBiasClamp;
public float SlopeScaledDepthBias;
public bool DepthClip;
public bool ScissorEnable;
public bool MultisampleEnable;
public bool AntialiasedLineEnable;
public UInt32 ForcedSampleCount;
public bool ConservativeRasterization;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public RasterizerState m_State;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public Rasterizer m_RS;
[StructLayout(LayoutKind.Sequential)]
public class OutputMerger
{
[StructLayout(LayoutKind.Sequential)]
public class DepthStencilState
{
public ResourceId State;
public bool DepthEnable;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string DepthFunc;
public bool DepthWrites;
public bool StencilEnable;
public byte StencilReadMask;
public byte StencilWriteMask;
[StructLayout(LayoutKind.Sequential)]
public class StencilOp
{
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string FailOp;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string DepthFailOp;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string PassOp;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Func;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public StencilOp m_FrontFace, m_BackFace;
public UInt32 StencilRef;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public DepthStencilState m_State;
[StructLayout(LayoutKind.Sequential)]
public class BlendState
{
public ResourceId State;
public bool AlphaToCoverage;
public bool IndependentBlend;
[StructLayout(LayoutKind.Sequential)]
public class RTBlend
{
[StructLayout(LayoutKind.Sequential)]
public class BlendOp
{
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Source;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Destination;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string Operation;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public BlendOp m_Blend, m_AlphaBlend;
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
public string LogicOp;
public bool Enabled;
public bool LogicEnabled;
public byte WriteMask;
};
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public RTBlend[] Blends;
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
public float[] BlendFactor;
public UInt32 SampleMask;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public BlendState m_BlendState;
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public ShaderStage.ResourceView[] RenderTargets;
public UInt32 UAVStartSlot;
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
public ShaderStage.ResourceView[] UAVs;
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public ShaderStage.ResourceView DepthTarget;
public bool DepthReadOnly;
public bool StencilReadOnly;
};
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
public OutputMerger m_OM;
};
}
+2 -1
View File
@@ -227,6 +227,7 @@ namespace renderdoc
public enum GraphicsAPI
{
D3D11,
D3D12,
OpenGL,
Vulkan,
};
@@ -301,7 +302,7 @@ namespace renderdoc
};
[Flags]
public enum D3D11BufferViewFlags
public enum D3DBufferViewFlags
{
Raw = 0x1,
Append = 0x2,
+18
View File
@@ -253,6 +253,8 @@ namespace renderdoc
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_GetD3D11PipelineState(IntPtr real, IntPtr mem);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_GetD3D12PipelineState(IntPtr real, IntPtr mem);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_GetGLPipelineState(IntPtr real, IntPtr mem);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_GetVulkanPipelineState(IntPtr real, IntPtr mem);
@@ -405,6 +407,22 @@ namespace renderdoc
return ret;
}
public D3D12PipelineState GetD3D12PipelineState()
{
IntPtr mem = CustomMarshal.Alloc(typeof(D3D12PipelineState));
bool success = ReplayRenderer_GetD3D12PipelineState(m_Real, mem);
D3D12PipelineState ret = null;
if (success)
ret = (D3D12PipelineState)CustomMarshal.PtrToStructure(mem, typeof(D3D12PipelineState), true);
CustomMarshal.Free(mem);
return ret;
}
public VulkanPipelineState GetVulkanPipelineState()
{
IntPtr mem = CustomMarshal.Alloc(typeof(VulkanPipelineState));
+1 -1
View File
@@ -254,7 +254,7 @@ namespace renderdoc
}
}
public string D3D11SemanticString
public string D3DSemanticString
{
get
{
+7 -7
View File
@@ -84,7 +84,7 @@
this.pythonShellToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.eventViewerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.textureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.D3D11PipelineStateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.PipelineStateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aPIInspectorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.meshOutputToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.debugMessagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -280,7 +280,7 @@
this.pythonShellToolStripMenuItem,
this.eventViewerToolStripMenuItem,
this.textureToolStripMenuItem,
this.D3D11PipelineStateToolStripMenuItem,
this.PipelineStateToolStripMenuItem,
this.aPIInspectorToolStripMenuItem,
this.meshOutputToolStripMenuItem,
this.debugMessagesToolStripMenuItem,
@@ -470,10 +470,10 @@
//
// D3D11PipelineStateToolStripMenuItem
//
this.D3D11PipelineStateToolStripMenuItem.Name = "D3D11PipelineStateToolStripMenuItem";
this.D3D11PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.D3D11PipelineStateToolStripMenuItem.Text = "&Pipeline State";
this.D3D11PipelineStateToolStripMenuItem.Click += new System.EventHandler(this.PipelineStateToolStripMenuItem_Click);
this.PipelineStateToolStripMenuItem.Name = "D3D11PipelineStateToolStripMenuItem";
this.PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(192, 22);
this.PipelineStateToolStripMenuItem.Text = "&Pipeline State";
this.PipelineStateToolStripMenuItem.Click += new System.EventHandler(this.PipelineStateToolStripMenuItem_Click);
//
// aPIInspectorToolStripMenuItem
//
@@ -868,7 +868,7 @@
private System.Windows.Forms.ToolStripMenuItem layoutSave6;
private System.Windows.Forms.ToolStripMenuItem layoutLoadDefault;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripMenuItem D3D11PipelineStateToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem PipelineStateToolStripMenuItem;
private System.Windows.Forms.OpenFileDialog openDialog;
private System.Windows.Forms.ToolStripContainer toolStripContainer1;
private System.Windows.Forms.StatusStrip statusStrip;
@@ -418,7 +418,7 @@ namespace renderdocui.Windows.PipelineState
name = bufs[t].name;
typename = "Buffer";
if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
if (r.Flags.HasFlag(D3DBufferViewFlags.Raw))
{
typename = "ByteAddressBuffer";
}
@@ -428,7 +428,7 @@ namespace renderdocui.Windows.PipelineState
typename = "StructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]";
}
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter))
{
typename += " (Count: " + r.BufferStructCount + ")";
}
@@ -1144,7 +1144,7 @@ namespace renderdocui.Windows.PipelineState
name = bufs[t].name;
typename = "Buffer";
if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
if (r.Flags.HasFlag(D3DBufferViewFlags.Raw))
{
typename = "RWByteAddressBuffer";
}
@@ -1154,7 +1154,7 @@ namespace renderdocui.Windows.PipelineState
typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]";
}
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter))
{
typename += " (Count: " + r.BufferStructCount + ")";
}
@@ -1518,7 +1518,7 @@ namespace renderdocui.Windows.PipelineState
name = bufs[t].name;
typename = "Buffer";
if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
if (r.Flags.HasFlag(D3DBufferViewFlags.Raw))
{
typename = "RWByteAddressBuffer";
}
@@ -1528,7 +1528,7 @@ namespace renderdocui.Windows.PipelineState
typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]";
}
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter))
{
typename += " (Count: " + r.BufferStructCount + ")";
}
@@ -2053,7 +2053,7 @@ namespace renderdocui.Windows.PipelineState
}
}
if (view.Flags.HasFlag(D3D11BufferViewFlags.Raw))
if (view.Flags.HasFlag(D3DBufferViewFlags.Raw))
format = "xint";
format += view.Format.compCount;
@@ -2428,12 +2428,12 @@ namespace renderdocui.Windows.PipelineState
hlsl += String.Format("struct {0}Input{1}{{{1}", shType, nl);
foreach(var sig in shaderDetails.InputSig)
hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3D11SemanticString);
hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString);
hlsl += "};" + nl2;
hlsl += String.Format("struct {0}Output{1}{{{1}", shType, nl);
foreach (var sig in shaderDetails.OutputSig)
hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3D11SemanticString);
hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString);
hlsl += "};" + nl2;
hlsl += String.Format("{0}Output {1}(in {0}Input IN){2}{{{2}\t{0}Output OUT = ({0}Output)0;{2}{2}\t// ...{2}{2}\treturn OUT;{2}}}{2}", shType, entryFunc, nl);
@@ -3060,7 +3060,7 @@ namespace renderdocui.Windows.PipelineState
name = bufs[t].name;
typename = "Buffer";
if (view.Flags.HasFlag(D3D11BufferViewFlags.Raw))
if (view.Flags.HasFlag(D3DBufferViewFlags.Raw))
{
typename = rw ? "RWByteAddressBuffer" : "ByteAddressBuffer";
}
@@ -3070,7 +3070,7 @@ namespace renderdocui.Windows.PipelineState
typename = (rw ? "RWStructuredBuffer" : "StructuredBuffer") + "[" + (bufs[t].length / view.ElementSize) + "]";
}
if (view.Flags.HasFlag(D3D11BufferViewFlags.Append) || view.Flags.HasFlag(D3D11BufferViewFlags.Counter))
if (view.Flags.HasFlag(D3DBufferViewFlags.Append) || view.Flags.HasFlag(D3DBufferViewFlags.Counter))
{
typename += " (Count: " + view.BufferStructCount + ")";
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,476 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStripLabel1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolstripTable.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>140, 17</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>140, 17</value>
</metadata>
<metadata name="groupBox2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox39.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox44.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox39.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="flowLayoutPanel9.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="flowLayoutPanel9.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox44.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>239, 17</value>
</metadata>
<metadata name="label28.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label26.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label27.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label28.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label26.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label27.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label29.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label30.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label31.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label29.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label30.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label31.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label32.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label33.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label34.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label32.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label33.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label34.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox45.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox45.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label35.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label36.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label37.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label35.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label36.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label37.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="groupBox42.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label15.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label16.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label17.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label25.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="frontCCW.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label15.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label16.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label17.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<data name="depthClip.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="multisampleEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="scissorEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="lineAAEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<metadata name="label25.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<data name="conservativeRaster.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<metadata name="groupBox42.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label38.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label39.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label40.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label38.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label39.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label40.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<data name="independentBlend.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="alphaToCoverage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="depthEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="depthWrite.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<data name="stencilEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
vqKpPDRN9lYAAAAASUVORK5CYII=
</value>
</data>
<metadata name="label41.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label42.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label43.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label41.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label42.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="label43.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</metadata>
<metadata name="rightclickMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>239, 17</value>
</metadata>
<metadata name="pipeExportDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>324, 17</value>
</metadata>
<metadata name="shaderSaveDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>438, 17</value>
</metadata>
</root>
@@ -45,6 +45,7 @@ namespace renderdocui.Windows.PipelineState
{
private Core m_Core;
private D3D11PipelineStateViewer m_D3D11 = null;
private D3D12PipelineStateViewer m_D3D12 = null;
private GLPipelineStateViewer m_GL = null;
private VulkanPipelineStateViewer m_Vulkan = null;
private ILogViewerForm m_Current = null;
@@ -68,6 +69,8 @@ namespace renderdocui.Windows.PipelineState
{
if (m_Current == m_D3D11)
return GetType().ToString() + "D3D11";
else if (m_Current == m_D3D12)
return GetType().ToString() + "D3D12";
else if (m_Current == m_GL)
return GetType().ToString() + "GL";
else if (m_Current == m_Vulkan)
@@ -84,12 +87,15 @@ namespace renderdocui.Windows.PipelineState
SetToGL();
else if (type == "D3D11")
SetToD3D11();
else if (type == "D3D12")
SetToD3D12();
else if (type == "Vulkan")
SetToVulkan();
}
private void SetToD3D11()
{
m_D3D12 = null;
m_GL = null;
m_Vulkan = null;
@@ -105,9 +111,28 @@ namespace renderdocui.Windows.PipelineState
m_Core.CurPipelineState.DefaultType = GraphicsAPI.D3D11;
}
private void SetToD3D12()
{
m_D3D11 = null;
m_GL = null;
m_Vulkan = null;
if (m_D3D12 == null)
{
Controls.Clear();
m_D3D12 = new D3D12PipelineStateViewer(m_Core, this);
m_D3D12.Dock = DockStyle.Fill;
Controls.Add(m_D3D12);
}
m_Current = m_D3D12;
m_Core.CurPipelineState.DefaultType = GraphicsAPI.D3D12;
}
private void SetToGL()
{
m_D3D11 = null;
m_D3D12 = null;
m_Vulkan = null;
if (m_GL == null)
@@ -125,6 +150,7 @@ namespace renderdocui.Windows.PipelineState
private void SetToVulkan()
{
m_GL = null;
m_D3D12 = null;
m_D3D11 = null;
if (m_Vulkan == null)
@@ -143,6 +169,8 @@ namespace renderdocui.Windows.PipelineState
{
if (m_Core.APIProps.pipelineType == GraphicsAPI.D3D11)
SetToD3D11();
else if (m_Core.APIProps.pipelineType == GraphicsAPI.D3D12)
SetToD3D12();
else if (m_Core.APIProps.pipelineType == GraphicsAPI.OpenGL)
SetToGL();
else if (m_Core.APIProps.pipelineType == GraphicsAPI.Vulkan)
+11
View File
@@ -107,6 +107,7 @@
<Compile Include="Code\CommonPipelineState.cs" />
<Compile Include="Code\FormatElement.cs" />
<Compile Include="Interop\Camera.cs" />
<Compile Include="Interop\D3D12PipelineState.cs" />
<Compile Include="Interop\VulkanPipelineState.cs" />
<Compile Include="Interop\Formatter.cs" />
<Compile Include="Code\Helpers.cs" />
@@ -313,6 +314,12 @@
<Compile Include="Windows\Dialogs\LiveCapture.Designer.cs">
<DependentUpon>LiveCapture.cs</DependentUpon>
</Compile>
<Compile Include="Windows\PipelineState\D3D12PipelineStateViewer.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Windows\PipelineState\D3D12PipelineStateViewer.Designer.cs">
<DependentUpon>D3D12PipelineStateViewer.cs</DependentUpon>
</Compile>
<Compile Include="Windows\PipelineState\VulkanPipelineStateViewer.cs">
<SubType>UserControl</SubType>
</Compile>
@@ -457,6 +464,10 @@
<EmbeddedResource Include="Windows\Dialogs\LiveCapture.resx">
<DependentUpon>LiveCapture.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Windows\PipelineState\D3D12PipelineStateViewer.resx">
<DependentUpon>D3D12PipelineStateViewer.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Windows\PipelineState\VulkanPipelineStateViewer.resx">
<DependentUpon>VulkanPipelineStateViewer.cs</DependentUpon>
</EmbeddedResource>