summaryrefslogtreecommitdiff
path: root/src/video_core/buffer_cache
diff options
context:
space:
mode:
authorGravatar GPUCode2023-07-15 22:59:04 +0300
committerGravatar GPUCode2023-07-15 23:09:58 +0300
commit4347dd26c6cef497b84b9ca662e3990bef14925b (patch)
tree4573808d01264230104b18b4c1283b3b0c60ab9c /src/video_core/buffer_cache
parentfile_sys/content_archive: Detect compressed NCAs (#11047) (diff)
downloadyuzu-4347dd26c6cef497b84b9ca662e3990bef14925b.tar.gz
yuzu-4347dd26c6cef497b84b9ca662e3990bef14925b.tar.xz
yuzu-4347dd26c6cef497b84b9ca662e3990bef14925b.zip
buffer_cache: Increase number of texture buffers
Diffstat (limited to 'src/video_core/buffer_cache')
-rw-r--r--src/video_core/buffer_cache/buffer_cache.h10
-rw-r--r--src/video_core/buffer_cache/buffer_cache_base.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h
index 6ed4b78f2..f0f450edb 100644
--- a/src/video_core/buffer_cache/buffer_cache.h
+++ b/src/video_core/buffer_cache/buffer_cache.h
@@ -442,6 +442,11 @@ void BufferCache<P>::UnbindComputeStorageBuffers() {
442template <class P> 442template <class P>
443void BufferCache<P>::BindComputeStorageBuffer(size_t ssbo_index, u32 cbuf_index, u32 cbuf_offset, 443void BufferCache<P>::BindComputeStorageBuffer(size_t ssbo_index, u32 cbuf_index, u32 cbuf_offset,
444 bool is_written) { 444 bool is_written) {
445 if (ssbo_index >= channel_state->compute_storage_buffers.size()) [[unlikely]] {
446 LOG_ERROR(HW_GPU, "Storage buffer index {} exceeds maximum storage buffer count",
447 ssbo_index);
448 return;
449 }
445 channel_state->enabled_compute_storage_buffers |= 1U << ssbo_index; 450 channel_state->enabled_compute_storage_buffers |= 1U << ssbo_index;
446 channel_state->written_compute_storage_buffers |= (is_written ? 1U : 0U) << ssbo_index; 451 channel_state->written_compute_storage_buffers |= (is_written ? 1U : 0U) << ssbo_index;
447 452
@@ -464,6 +469,11 @@ void BufferCache<P>::UnbindComputeTextureBuffers() {
464template <class P> 469template <class P>
465void BufferCache<P>::BindComputeTextureBuffer(size_t tbo_index, GPUVAddr gpu_addr, u32 size, 470void BufferCache<P>::BindComputeTextureBuffer(size_t tbo_index, GPUVAddr gpu_addr, u32 size,
466 PixelFormat format, bool is_written, bool is_image) { 471 PixelFormat format, bool is_written, bool is_image) {
472 if (tbo_index >= channel_state->compute_texture_buffers.size()) [[unlikely]] {
473 LOG_ERROR(HW_GPU, "Texture buffer index {} exceeds maximum texture buffer count",
474 tbo_index);
475 return;
476 }
467 channel_state->enabled_compute_texture_buffers |= 1U << tbo_index; 477 channel_state->enabled_compute_texture_buffers |= 1U << tbo_index;
468 channel_state->written_compute_texture_buffers |= (is_written ? 1U : 0U) << tbo_index; 478 channel_state->written_compute_texture_buffers |= (is_written ? 1U : 0U) << tbo_index;
469 if constexpr (SEPARATE_IMAGE_BUFFERS_BINDINGS) { 479 if constexpr (SEPARATE_IMAGE_BUFFERS_BINDINGS) {
diff --git a/src/video_core/buffer_cache/buffer_cache_base.h b/src/video_core/buffer_cache/buffer_cache_base.h
index 460fc7551..0b7135d49 100644
--- a/src/video_core/buffer_cache/buffer_cache_base.h
+++ b/src/video_core/buffer_cache/buffer_cache_base.h
@@ -67,7 +67,7 @@ constexpr u32 NUM_TRANSFORM_FEEDBACK_BUFFERS = 4;
67constexpr u32 NUM_GRAPHICS_UNIFORM_BUFFERS = 18; 67constexpr u32 NUM_GRAPHICS_UNIFORM_BUFFERS = 18;
68constexpr u32 NUM_COMPUTE_UNIFORM_BUFFERS = 8; 68constexpr u32 NUM_COMPUTE_UNIFORM_BUFFERS = 8;
69constexpr u32 NUM_STORAGE_BUFFERS = 16; 69constexpr u32 NUM_STORAGE_BUFFERS = 16;
70constexpr u32 NUM_TEXTURE_BUFFERS = 16; 70constexpr u32 NUM_TEXTURE_BUFFERS = 32;
71constexpr u32 NUM_STAGES = 5; 71constexpr u32 NUM_STAGES = 5;
72 72
73using UniformBufferSizes = std::array<std::array<u32, NUM_GRAPHICS_UNIFORM_BUFFERS>, NUM_STAGES>; 73using UniformBufferSizes = std::array<std::array<u32, NUM_GRAPHICS_UNIFORM_BUFFERS>, NUM_STAGES>;