diff --git a/src/dxvk/hud/dxvk_hud.cpp b/src/dxvk/hud/dxvk_hud.cpp index b6dfe7935..7930ab29e 100644 --- a/src/dxvk/hud/dxvk_hud.cpp +++ b/src/dxvk/hud/dxvk_hud.cpp @@ -7,7 +7,6 @@ namespace dxvk::hud { Hud::Hud( const Rc& device) : m_device (device), - m_uniformBuffer (createUniformBuffer()), m_renderer (device) { // Set up constant state m_rsState.polygonMode = VK_POLYGON_MODE_FILL; @@ -57,11 +56,7 @@ namespace dxvk::hud { const Rc& ctx, VkSurfaceFormatKHR surfaceFormat, VkExtent2D surfaceSize) { - m_uniformData.surfaceSize = surfaceSize; - - this->updateUniformBuffer(ctx, m_uniformData); - - this->setupRendererState(ctx, surfaceFormat); + this->setupRendererState(ctx, surfaceFormat, surfaceSize); this->renderHudElements(ctx); this->resetRendererState(ctx); } @@ -74,17 +69,15 @@ namespace dxvk::hud { void Hud::setupRendererState( const Rc& ctx, - VkSurfaceFormatKHR surfaceFormat) { + VkSurfaceFormatKHR surfaceFormat, + VkExtent2D surfaceSize) { bool isSrgb = imageFormatInfo(surfaceFormat.format)->flags.test(DxvkFormatFlag::ColorSpaceSrgb); ctx->setRasterizerState(m_rsState); ctx->setBlendMode(0, m_blendMode); - ctx->bindResourceBuffer(0, - DxvkBufferSlice(m_uniformBuffer)); - ctx->setSpecConstant(VK_PIPELINE_BIND_POINT_GRAPHICS, 0, isSrgb); - m_renderer.beginFrame(ctx, m_uniformData.surfaceSize); + m_renderer.beginFrame(ctx, surfaceSize); } @@ -97,26 +90,4 @@ namespace dxvk::hud { m_hudItems.render(m_renderer); } - - void Hud::updateUniformBuffer(const Rc& ctx, const HudUniformData& data) { - auto slice = m_uniformBuffer->allocSlice(); - std::memcpy(slice.mapPtr, &data, sizeof(data)); - - ctx->invalidateBuffer(m_uniformBuffer, slice); - } - - - Rc Hud::createUniformBuffer() { - DxvkBufferCreateInfo info; - info.size = sizeof(HudUniformData); - info.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT; - info.stages = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT - | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT; - info.access = VK_ACCESS_UNIFORM_READ_BIT; - - return m_device->createBuffer(info, - VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | - VK_MEMORY_PROPERTY_HOST_COHERENT_BIT); - } - } diff --git a/src/dxvk/hud/dxvk_hud.h b/src/dxvk/hud/dxvk_hud.h index 0e0abef79..f70fda0c6 100644 --- a/src/dxvk/hud/dxvk_hud.h +++ b/src/dxvk/hud/dxvk_hud.h @@ -76,8 +76,6 @@ namespace dxvk::hud { const Rc m_device; - Rc m_uniformBuffer; - DxvkRasterizerState m_rsState; DxvkBlendMode m_blendMode; @@ -87,19 +85,14 @@ namespace dxvk::hud { void setupRendererState( const Rc& ctx, - VkSurfaceFormatKHR surfaceFormat); + VkSurfaceFormatKHR surfaceFormat, + VkExtent2D surfaceSize); void resetRendererState( const Rc& ctx); void renderHudElements( const Rc& ctx); - - void updateUniformBuffer( - const Rc& ctx, - const HudUniformData& data); - - Rc createUniformBuffer(); }; diff --git a/src/dxvk/hud/dxvk_hud_renderer.cpp b/src/dxvk/hud/dxvk_hud_renderer.cpp index 977e9ccb7..4f4e6b22e 100644 --- a/src/dxvk/hud/dxvk_hud_renderer.cpp +++ b/src/dxvk/hud/dxvk_hud_renderer.cpp @@ -208,11 +208,6 @@ namespace dxvk::hud { const SpirvCodeBuffer vsCode(hud_text_vert); const SpirvCodeBuffer fsCode(hud_text_frag); - // One shader resource: Global HUD uniform buffer - const std::array vsResources = {{ - { 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_IMAGE_VIEW_TYPE_MAX_ENUM }, - }}; - // Two shader resources: Font texture and sampler const std::array fsResources = {{ { 1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_IMAGE_VIEW_TYPE_2D }, @@ -220,10 +215,7 @@ namespace dxvk::hud { result.vert = device->createShader( VK_SHADER_STAGE_VERTEX_BIT, - vsResources.size(), - vsResources.data(), - { 0x3, 0x1 }, - vsCode); + 0, nullptr, { 0x3, 0x1 }, vsCode); result.frag = device->createShader( VK_SHADER_STAGE_FRAGMENT_BIT, @@ -242,22 +234,13 @@ namespace dxvk::hud { const SpirvCodeBuffer vsCode(hud_line_vert); const SpirvCodeBuffer fsCode(hud_line_frag); - // One shader resource: Global HUD uniform buffer - const std::array vsResources = {{ - { 0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_IMAGE_VIEW_TYPE_MAX_ENUM }, - }}; - result.vert = device->createShader( VK_SHADER_STAGE_VERTEX_BIT, - vsResources.size(), - vsResources.data(), - { 0x3, 0x1 }, - vsCode); + 0, nullptr, { 0x3, 0x1 }, vsCode); result.frag = device->createShader( VK_SHADER_STAGE_FRAGMENT_BIT, - 0, nullptr, { 0x1, 0x1 }, - fsCode); + 0, nullptr, { 0x1, 0x1 }, fsCode); return result; }