From 8193c806974d63f20b6fc4e6755f59296f8a31e8 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 31 Oct 2014 18:41:10 +0000 Subject: [PATCH] Ditch position buffer for all but fonts. Closes #102 --- renderdoc/data/hlsl/debugcommon.hlsl | 5 ----- renderdoc/data/hlsl/debugdisplay.hlsl | 16 +++++++++++++--- renderdoc/driver/d3d11/d3d11_debug.cpp | 9 ++------- renderdoc/driver/d3d11/d3d11_debug.h | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/renderdoc/data/hlsl/debugcommon.hlsl b/renderdoc/data/hlsl/debugcommon.hlsl index 5e76e2d9c..6f775766e 100644 --- a/renderdoc/data/hlsl/debugcommon.hlsl +++ b/renderdoc/data/hlsl/debugcommon.hlsl @@ -25,11 +25,6 @@ // this file provides a couple of functions that, given the basic type, will go and // figure out which resource to sample from and load from it then return the value -struct a2v -{ - float3 pos : POSITION; -}; - struct v2f { float4 pos : SV_Position; diff --git a/renderdoc/data/hlsl/debugdisplay.hlsl b/renderdoc/data/hlsl/debugdisplay.hlsl index 6fffcb229..e60fa9dcc 100644 --- a/renderdoc/data/hlsl/debugdisplay.hlsl +++ b/renderdoc/data/hlsl/debugdisplay.hlsl @@ -24,11 +24,21 @@ -v2f RENDERDOC_DebugVS(a2v IN) +v2f RENDERDOC_DebugVS(uint vertID : SV_VertexID) { v2f OUT = (v2f)0; - OUT.pos = float4(Position.xy + (float2(IN.pos.z,0) + IN.pos.xy*TextureResolution.xy)*Scale*ScreenAspect.xy, 0, 1)-float4(1.0,-1.0,0,0); - OUT.tex.xy = float2(IN.pos.x, -IN.pos.y); + + float2 positions[] = { + float2(0.0f, 0.0f), + float2(0.0f, -1.0f), + float2(1.0f, 0.0f), + float2(1.0f, -1.0f), + }; + + float2 pos = positions[vertID]; + + OUT.pos = float4(Position.xy + pos.xy*TextureResolution.xy*Scale*ScreenAspect.xy, 0, 1)-float4(1.0,-1.0,0,0); + OUT.tex.xy = float2(pos.x, -pos.y); return OUT; } diff --git a/renderdoc/driver/d3d11/d3d11_debug.cpp b/renderdoc/driver/d3d11/d3d11_debug.cpp index 6e820d63e..d1e034e32 100644 --- a/renderdoc/driver/d3d11/d3d11_debug.cpp +++ b/renderdoc/driver/d3d11/d3d11_debug.cpp @@ -1493,7 +1493,7 @@ bool D3D11DebugManager::InitFontRendering() bufDesc.CPUAccessFlags = 0; bufDesc.MiscFlags = 0; - hr = m_pDevice->CreateBuffer(&bufDesc, &initialPos, &m_DebugRender.PosBuffer); + hr = m_pDevice->CreateBuffer(&bufDesc, &initialPos, &m_Font.PosBuffer); if(FAILED(hr)) { @@ -3241,7 +3241,7 @@ void D3D11DebugManager::RenderTextInternal(float x, float y, const char *text) } m_pImmediateContext->Unmap(m_Font.CharBuffer, 0); - ID3D11Buffer *bufs[2] = { m_DebugRender.PosBuffer, m_Font.CharBuffer }; + ID3D11Buffer *bufs[2] = { m_Font.PosBuffer, m_Font.CharBuffer }; UINT strides[2] = { 3*sizeof(float), sizeof(long) }; UINT offsets[2] = { 0, 0 }; @@ -3477,7 +3477,6 @@ bool D3D11DebugManager::RenderTexture(TextureDisplay cfg, bool blendAlpha) pixelData.MipLevel = (float)cfg.mip; - ID3D11Buffer *bufs[2] = { m_DebugRender.PosBuffer, m_Font.CharBuffer }; UINT stride = 3*sizeof(float); UINT offset = 0; @@ -3546,9 +3545,7 @@ bool D3D11DebugManager::RenderTexture(TextureDisplay cfg, bool blendAlpha) // can't just clear state because we need to keep things like render targets. { - m_pImmediateContext->IASetInputLayout(m_DebugRender.GenericLayout); m_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); - m_pImmediateContext->IASetVertexBuffers(0, 1, &m_DebugRender.PosBuffer, &stride, &offset); m_pImmediateContext->VSSetShader(m_DebugRender.GenericVS, NULL, 0); m_pImmediateContext->VSSetConstantBuffers(0, 1, &m_DebugRender.GenericVSCBuffer); @@ -3687,9 +3684,7 @@ void D3D11DebugManager::RenderCheckerboard(Vec3f light, Vec3f dark) // can't just clear state because we need to keep things like render targets. { - m_pImmediateContext->IASetInputLayout(m_DebugRender.GenericLayout); m_pImmediateContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); - m_pImmediateContext->IASetVertexBuffers(0, 1, &m_DebugRender.PosBuffer, &stride, &offset); m_pImmediateContext->VSSetShader(m_DebugRender.GenericVS, NULL, 0); m_pImmediateContext->VSSetConstantBuffers(0, 1, &m_DebugRender.GenericVSCBuffer); diff --git a/renderdoc/driver/d3d11/d3d11_debug.h b/renderdoc/driver/d3d11/d3d11_debug.h index 8df73aa35..44d56c574 100644 --- a/renderdoc/driver/d3d11/d3d11_debug.h +++ b/renderdoc/driver/d3d11/d3d11_debug.h @@ -362,6 +362,7 @@ class D3D11DebugManager SAFE_RELEASE(Tex); SAFE_RELEASE(CBuffer); SAFE_RELEASE(GlyphData); + SAFE_RELEASE(PosBuffer); SAFE_RELEASE(CharBuffer); SAFE_RELEASE(VS); SAFE_RELEASE(PS); @@ -371,7 +372,7 @@ class D3D11DebugManager ID3D11ShaderResourceView *Tex; ID3D11Buffer *CBuffer; ID3D11Buffer *GlyphData; - ID3D11Buffer *CharBuffer; + ID3D11Buffer *PosBuffer, *CharBuffer; ID3D11VertexShader *VS; ID3D11PixelShader *PS; @@ -386,7 +387,6 @@ class D3D11DebugManager { SAFE_RELEASE(StageBuffer); - SAFE_RELEASE(PosBuffer); SAFE_RELEASE(OutlineStripVB); SAFE_RELEASE(RastState); SAFE_RELEASE(BlendState); @@ -471,7 +471,7 @@ class D3D11DebugManager ID3D11Buffer *StageBuffer; - ID3D11Buffer *PosBuffer, *OutlineStripVB; + ID3D11Buffer *OutlineStripVB; ID3D11RasterizerState *RastState; ID3D11SamplerState *PointSampState, *LinearSampState; ID3D11BlendState *BlendState, *NopBlendState;