From 82d262ad8b68bd72ced7fd2ffe29246849c040c8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sat, 17 Jan 2015 19:09:04 +0000 Subject: [PATCH] Pass through multisample state and point/line rast state values --- renderdoc/api/replay/gl_pipestate.h | 20 ++++++++++++++++++++ renderdoc/driver/gl/gl_replay.cpp | 19 +++++++++++++++++++ renderdocui/Interop/GLPipelineState.cs | 18 ++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/renderdoc/api/replay/gl_pipestate.h b/renderdoc/api/replay/gl_pipestate.h index 51a5a28d0..22765f049 100644 --- a/renderdoc/api/replay/gl_pipestate.h +++ b/renderdoc/api/replay/gl_pipestate.h @@ -177,7 +177,23 @@ struct GLPipelineState float SlopeScaledDepthBias; float OffsetClamp; bool32 DepthClamp; + bool32 MultisampleEnable; + bool32 SampleShading; + bool32 SampleMask; + uint32_t SampleMaskValue; + bool32 SampleCoverage; + bool32 SampleCoverageInvert; + float SampleCoverageValue; + bool32 SampleAlphaToCoverage; + bool32 SampleAlphaToOne; + float MinSampleShadingRate; + + bool32 ProgrammablePointSize; + float PointSize; + float LineWidth; + float PointFadeThreshold; + bool32 PointOriginUpperLeft; } m_State; } m_Rasterizer; @@ -265,11 +281,15 @@ struct GLPipelineState , LineSmooth(eQuality_DontCare) , PolySmooth(eQuality_DontCare) , TexCompression(eQuality_DontCare) + , LineSmoothEnabled(0) + , PolySmoothEnabled(0) {} QualityHint Derivatives; QualityHint LineSmooth; QualityHint PolySmooth; QualityHint TexCompression; + bool32 LineSmoothEnabled; + bool32 PolySmoothEnabled; } m_Hints; }; \ No newline at end of file diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 398a31738..e19f4cf83 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -1520,7 +1520,23 @@ void GLReplay::SavePipelineState() RDCASSERT(rs.FrontFace == eGL_CCW || rs.FrontFace == eGL_CW); pipe.m_Rasterizer.m_State.FrontCCW = rs.FrontFace == eGL_CCW; pipe.m_Rasterizer.m_State.DepthClamp = rs.Enabled[GLRenderState::eEnabled_DepthClamp]; + pipe.m_Rasterizer.m_State.MultisampleEnable = rs.Enabled[GLRenderState::eEnabled_Multisample]; + pipe.m_Rasterizer.m_State.SampleShading = rs.Enabled[GLRenderState::eEnabled_SampleShading]; + pipe.m_Rasterizer.m_State.SampleMask = rs.Enabled[GLRenderState::eEnabled_SampleMask]; + pipe.m_Rasterizer.m_State.SampleMaskValue = rs.SampleMask[0]; // assume number of samples is less than 32 + pipe.m_Rasterizer.m_State.SampleCoverage = rs.Enabled[GLRenderState::eEnabled_SampleCoverage]; + pipe.m_Rasterizer.m_State.SampleCoverageInvert = rs.SampleCoverageInvert; + pipe.m_Rasterizer.m_State.SampleCoverageValue = rs.SampleCoverage; + pipe.m_Rasterizer.m_State.SampleAlphaToCoverage = rs.Enabled[GLRenderState::eEnabled_SampleAlphaToCoverage]; + pipe.m_Rasterizer.m_State.SampleAlphaToOne = rs.Enabled[GLRenderState::eEnabled_SampleAlphaToOne]; + pipe.m_Rasterizer.m_State.MinSampleShadingRate = rs.MinSampleShading; + + pipe.m_Rasterizer.m_State.ProgrammablePointSize = rs.Enabled[rs.eEnabled_ProgramPointSize]; + pipe.m_Rasterizer.m_State.PointSize = rs.PointSize; + pipe.m_Rasterizer.m_State.LineWidth = rs.LineWidth; + pipe.m_Rasterizer.m_State.PointFadeThreshold = rs.PointFadeThresholdSize; + pipe.m_Rasterizer.m_State.PointOriginUpperLeft = (rs.PointSpriteOrigin != eGL_LOWER_LEFT); // depth and stencil states @@ -1705,6 +1721,9 @@ void GLReplay::SavePipelineState() case eGL_NICEST: pipe.m_Hints.TexCompression = eQuality_Nicest; break; case eGL_FASTEST: pipe.m_Hints.TexCompression = eQuality_Fastest; break; } + + pipe.m_Hints.LineSmoothEnabled = rs.Enabled[GLRenderState::eEnabled_LineSmooth]; + pipe.m_Hints.PolySmoothEnabled = rs.Enabled[GLRenderState::eEnabled_PolySmooth]; } void GLReplay::FillCBufferValue(WrappedOpenGL &gl, GLuint prog, bool bufferBacked, bool rowMajor, diff --git a/renderdocui/Interop/GLPipelineState.cs b/renderdocui/Interop/GLPipelineState.cs index daf5ec164..56ad3fb1a 100644 --- a/renderdocui/Interop/GLPipelineState.cs +++ b/renderdocui/Interop/GLPipelineState.cs @@ -191,7 +191,23 @@ namespace renderdoc public float SlopeScaledDepthBias; public float OffsetClamp; public bool DepthClamp; + public bool MultisampleEnable; + public bool SampleShading; + public bool SampleMask; + public UInt32 SampleMaskValue; + public bool SampleCoverage; + public bool SampleCoverageInvert; + public float SampleCoverageValue; + public bool SampleAlphaToCoverage; + public bool SampleAlphaToOne; + public float MinSampleShadingRate; + + public bool ProgrammablePointSize; + public float PointSize; + public float LineWidth; + public float PointFadeThreshold; + public bool PointOriginUpperLeft; }; [CustomMarshalAs(CustomUnmanagedType.CustomClass)] public RasterizerState m_State; @@ -305,6 +321,8 @@ namespace renderdoc public Int32 LineSmooth; public Int32 PolySmooth; public Int32 TexCompression; + public bool LineSmoothEnabled; + public bool PolySmoothEnabled; }; [CustomMarshalAs(CustomUnmanagedType.CustomClass)] public Hints m_Hints;