From 921abce1b38a34d87de53a3ac4795a2390a5700b Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 14 Oct 2017 13:37:40 +0200 Subject: [PATCH] [dxvk] Added limit constants --- src/dxvk/dxvk_context_state.h | 18 +----------------- src/dxvk/dxvk_framebuffer.cpp | 6 +++--- src/dxvk/dxvk_framebuffer.h | 4 ++-- src/dxvk/dxvk_limits.h | 15 +++++++++++++++ src/dxvk/dxvk_renderpass.cpp | 10 +++++----- src/dxvk/dxvk_renderpass.h | 9 ++++----- 6 files changed, 30 insertions(+), 32 deletions(-) create mode 100644 src/dxvk/dxvk_limits.h diff --git a/src/dxvk/dxvk_context_state.h b/src/dxvk/dxvk_context_state.h index a24f99df..8d4f6363 100644 --- a/src/dxvk/dxvk_context_state.h +++ b/src/dxvk/dxvk_context_state.h @@ -2,27 +2,11 @@ #include "dxvk_compute.h" #include "dxvk_framebuffer.h" +#include "dxvk_limits.h" #include "dxvk_shader.h" namespace dxvk { - /** - * \brief Limits of the DXVK API - * - * Stores the number of binding slots - * available for all resource types. - */ - enum DxvkLimits : size_t { - MaxNumRenderTargets = 8, - MaxNumUniformBuffers = 16, - MaxNumSampledImages = 16, - MaxNumStorageBuffers = 128, - MaxNumStorageImages = 128, - MaxNumVertexBuffers = 32, - MaxNumOutputStreams = 4, - }; - - /** * \brief Graphics pipeline state flags * diff --git a/src/dxvk/dxvk_framebuffer.cpp b/src/dxvk/dxvk_framebuffer.cpp index 17f25296..37ad0a1f 100644 --- a/src/dxvk/dxvk_framebuffer.cpp +++ b/src/dxvk/dxvk_framebuffer.cpp @@ -9,7 +9,7 @@ namespace dxvk { DxvkRenderPassFormat DxvkRenderTargets::renderPassFormat() const { DxvkRenderPassFormat result; - for (uint32_t i = 0; i < MaxNumColorTargets; i++) { + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) { if (m_colorTargets.at(i) != nullptr) { result.setColorFormat(i, m_colorTargets.at(i)->info().format); result.setSampleCount(m_colorTargets.at(i)->imageInfo().sampleCount); @@ -31,7 +31,7 @@ namespace dxvk { if (m_depthTarget != nullptr) result.push_back(m_depthTarget->handle()); - for (uint32_t i = 0; i < MaxNumColorTargets; i++) { + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) { if (m_colorTargets.at(i) != nullptr) result.push_back(m_colorTargets.at(i)->handle()); } @@ -44,7 +44,7 @@ namespace dxvk { if (m_depthTarget != nullptr) return this->renderTargetSize(m_depthTarget); - for (uint32_t i = 0; i < MaxNumColorTargets; i++) { + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) { if (m_colorTargets.at(i) != nullptr) return this->renderTargetSize(m_colorTargets.at(i)); } diff --git a/src/dxvk/dxvk_framebuffer.h b/src/dxvk/dxvk_framebuffer.h index 4a032f26..fb5f5c35 100644 --- a/src/dxvk/dxvk_framebuffer.h +++ b/src/dxvk/dxvk_framebuffer.h @@ -96,8 +96,8 @@ namespace dxvk { private: - std::array, MaxNumColorTargets> m_colorTargets; - Rc m_depthTarget; + std::array, MaxNumRenderTargets> m_colorTargets; + Rc m_depthTarget; DxvkFramebufferSize renderTargetSize( const Rc& renderTarget) const; diff --git a/src/dxvk/dxvk_limits.h b/src/dxvk/dxvk_limits.h new file mode 100644 index 00000000..576c2418 --- /dev/null +++ b/src/dxvk/dxvk_limits.h @@ -0,0 +1,15 @@ +#pragma once + +namespace dxvk { + + enum DxvkLimits : size_t { + MaxNumRenderTargets = 8, + MaxNumUniformBuffers = 16, + MaxNumSampledImages = 16, + MaxNumStorageBuffers = 128, + MaxNumStorageImages = 128, + MaxNumVertexBuffers = 32, + MaxNumOutputStreams = 4, + }; + +} \ No newline at end of file diff --git a/src/dxvk/dxvk_renderpass.cpp b/src/dxvk/dxvk_renderpass.cpp index cb28a490..45f0dbe8 100644 --- a/src/dxvk/dxvk_renderpass.cpp +++ b/src/dxvk/dxvk_renderpass.cpp @@ -3,7 +3,7 @@ namespace dxvk { DxvkRenderPassFormat::DxvkRenderPassFormat() { - for (uint32_t i = 0; i < MaxNumColorTargets; i++) + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) m_color.at(i) = VK_FORMAT_UNDEFINED; m_depth = VK_FORMAT_UNDEFINED; m_samples = VK_SAMPLE_COUNT_1_BIT; @@ -15,7 +15,7 @@ namespace dxvk { std::hash fhash; std::hash shash; - for (uint32_t i = 0; i < MaxNumColorTargets; i++) + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) result.add(fhash(m_color.at(i))); result.add(fhash(m_depth)); @@ -27,7 +27,7 @@ namespace dxvk { bool DxvkRenderPassFormat::operator == (const DxvkRenderPassFormat& other) const { bool equal = m_depth == other.m_depth && m_samples == other.m_samples; - for (uint32_t i = 0; i < MaxNumColorTargets && !equal; i++) + for (uint32_t i = 0; i < MaxNumRenderTargets && !equal; i++) equal = m_color.at(i) == other.m_color.at(i); return equal; } @@ -48,7 +48,7 @@ namespace dxvk { std::vector attachments; VkAttachmentReference depthRef; - std::array colorRef; + std::array colorRef; // Render passes may not require the previous // contents of the attachments to be preserved. @@ -76,7 +76,7 @@ namespace dxvk { attachments.push_back(desc); } - for (uint32_t i = 0; i < MaxNumColorTargets; i++) { + for (uint32_t i = 0; i < MaxNumRenderTargets; i++) { colorRef.at(i).attachment = VK_ATTACHMENT_UNUSED; colorRef.at(i).layout = VK_IMAGE_LAYOUT_UNDEFINED; diff --git a/src/dxvk/dxvk_renderpass.h b/src/dxvk/dxvk_renderpass.h index 2e57ab2e..e5be0046 100644 --- a/src/dxvk/dxvk_renderpass.h +++ b/src/dxvk/dxvk_renderpass.h @@ -5,11 +5,10 @@ #include "dxvk_hash.h" #include "dxvk_include.h" +#include "dxvk_limits.h" namespace dxvk { - constexpr uint32_t MaxNumColorTargets = 8; - /** * \brief Render pass format * @@ -92,9 +91,9 @@ namespace dxvk { private: - std::array m_color; - VkFormat m_depth; - VkSampleCountFlagBits m_samples; + std::array m_color; + VkFormat m_depth; + VkSampleCountFlagBits m_samples; };