diff --git a/src/dxvk/hud/dxvk_hud.cpp b/src/dxvk/hud/dxvk_hud.cpp index 39121e0bb..815823f98 100644 --- a/src/dxvk/hud/dxvk_hud.cpp +++ b/src/dxvk/hud/dxvk_hud.cpp @@ -49,10 +49,9 @@ namespace dxvk::hud { void Hud::render(const Rc& ctx, VkExtent2D surfaceSize) { - HudUniformData uniformData; - uniformData.surfaceSize = surfaceSize; + m_uniformData.surfaceSize = surfaceSize; - this->updateUniformBuffer(ctx, uniformData); + this->updateUniformBuffer(ctx, m_uniformData); this->setupRendererState(ctx); this->renderHudElements(ctx); @@ -75,7 +74,7 @@ namespace dxvk::hud { ctx->bindResourceBuffer(0, DxvkBufferSlice(m_uniformBuffer)); - m_renderer.beginFrame(ctx); + m_renderer.beginFrame(ctx, m_uniformData.surfaceSize); } diff --git a/src/dxvk/hud/dxvk_hud.h b/src/dxvk/hud/dxvk_hud.h index 4feccca1b..3b702c3bc 100644 --- a/src/dxvk/hud/dxvk_hud.h +++ b/src/dxvk/hud/dxvk_hud.h @@ -76,6 +76,7 @@ namespace dxvk::hud { DxvkRasterizerState m_rsState; DxvkBlendMode m_blendMode; + HudUniformData m_uniformData; HudRenderer m_renderer; HudDeviceInfo m_hudDeviceInfo; HudFps m_hudFramerate; diff --git a/src/dxvk/hud/dxvk_hud_renderer.cpp b/src/dxvk/hud/dxvk_hud_renderer.cpp index c9425fe78..4964fb997 100644 --- a/src/dxvk/hud/dxvk_hud_renderer.cpp +++ b/src/dxvk/hud/dxvk_hud_renderer.cpp @@ -8,6 +8,7 @@ namespace dxvk::hud { HudRenderer::HudRenderer(const Rc& device) : m_mode (Mode::RenderNone), + m_surfaceSize { 0, 0 }, m_vertShader (createVertexShader(device)), m_textShader (createTextShader(device)), m_lineShader (createLineShader(device)), @@ -25,7 +26,7 @@ namespace dxvk::hud { } - void HudRenderer::beginFrame(const Rc& context) { + void HudRenderer::beginFrame(const Rc& context, VkExtent2D surfaceSize) { auto vertexSlice = m_vertexBuffer->allocSlice(); context->invalidateBuffer(m_vertexBuffer, vertexSlice); @@ -52,7 +53,8 @@ namespace dxvk::hud { context->bindResourceSampler(1, m_fontSampler); context->bindResourceView (1, m_fontView, nullptr); - m_mode = Mode::RenderNone; + m_mode = Mode::RenderNone; + m_surfaceSize = surfaceSize; m_vertexIndex = 0; } diff --git a/src/dxvk/hud/dxvk_hud_renderer.h b/src/dxvk/hud/dxvk_hud_renderer.h index e9747e645..41a7fa001 100644 --- a/src/dxvk/hud/dxvk_hud_renderer.h +++ b/src/dxvk/hud/dxvk_hud_renderer.h @@ -66,7 +66,8 @@ namespace dxvk::hud { ~HudRenderer(); void beginFrame( - const Rc& context); + const Rc& context, + VkExtent2D surfaceSize); void drawText( const Rc& context, @@ -80,6 +81,10 @@ namespace dxvk::hud { size_t vertexCount, const HudVertex* vertexData); + VkExtent2D surfaceSize() const { + return m_surfaceSize; + } + private: enum class Mode { @@ -91,6 +96,7 @@ namespace dxvk::hud { std::array m_charMap; Mode m_mode; + VkExtent2D m_surfaceSize; Rc m_vertShader; Rc m_textShader;