diff --git a/rpcsx-gpu/Cache.cpp b/rpcsx-gpu/Cache.cpp index e5cdda1da..dbf33e1fd 100644 --- a/rpcsx-gpu/Cache.cpp +++ b/rpcsx-gpu/Cache.cpp @@ -377,7 +377,7 @@ static void fillStageBindings(VkDescriptorSetLayoutBinding *bindings, }; }; - createDescriptorBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1); + createDescriptorBinding(VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1); if (setIndex == 0) { createDescriptorBinding(VK_DESCRIPTOR_TYPE_SAMPLER, 16); createDescriptorBinding(VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 16, 1); @@ -836,9 +836,7 @@ Cache::Buffer Cache::Tag::getBuffer(std::uint64_t address, std::uint64_t size, auto buffer = vk::Buffer::Allocate( vk::getHostVisibleMemory(), size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT | - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT); @@ -869,7 +867,6 @@ Cache::Buffer Cache::Tag::getInternalHostVisibleBuffer(std::uint64_t size) { auto buffer = vk::Buffer::Allocate(vk::getHostVisibleMemory(), size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); auto cached = std::make_shared(); @@ -894,7 +891,6 @@ Cache::Buffer Cache::Tag::getInternalDeviceLocalBuffer(std::uint64_t size) { auto buffer = vk::Buffer::Allocate(vk::getDeviceLocalMemory(), size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT); auto cached = std::make_shared(); @@ -1558,7 +1554,7 @@ Cache::GraphicsTag::getShader(gcn::Stage stage, const SpiShaderPgm &pgm, .dstSet = descriptorSets[stageIndex], .dstBinding = 0, .descriptorCount = 1, - .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .pBufferInfo = &bufferInfo, }; @@ -1698,7 +1694,7 @@ Cache::ComputeTag::getShader(const Registers::ComputeConfig &pgm) { .dstSet = descriptorSet, .dstBinding = 0, .descriptorCount = 1, - .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + .descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .pBufferInfo = &bufferInfo, }; @@ -1781,7 +1777,7 @@ Cache::Cache(Device *device, int vmId) : mDevice(device), mVmIm(vmId) { { VkDescriptorPoolSize descriptorPoolSizes[]{ { - .type = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + .type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, .descriptorCount = 4 * (kDescriptorSetCount * 2 / 4), }, { diff --git a/rpcsx-gpu/Cache.hpp b/rpcsx-gpu/Cache.hpp index 94802f090..dc7b4209d 100644 --- a/rpcsx-gpu/Cache.hpp +++ b/rpcsx-gpu/Cache.hpp @@ -81,7 +81,7 @@ struct Cache { }; static constexpr std::array kDescriptorBindings = { - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_SAMPLER, VkDescriptorType(VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE + 1 * 1000), VkDescriptorType(VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE + 2 * 1000), diff --git a/rpcsx-gpu/lib/gcn-shader/src/SpvConverter.cpp b/rpcsx-gpu/lib/gcn-shader/src/SpvConverter.cpp index c77b3f342..dc7d26cf0 100644 --- a/rpcsx-gpu/lib/gcn-shader/src/SpvConverter.cpp +++ b/rpcsx-gpu/lib/gcn-shader/src/SpvConverter.cpp @@ -531,8 +531,6 @@ ir::Value spv::Context::createUniformBuffer(int descriptorSet, int binding, loc, blockVariable, ir::spv::Decoration::DescriptorSet(descriptorSet)); annotations.createSpvDecorate(loc, blockVariable, ir::spv::Decoration::Binding(binding)); - annotations.createSpvDecorate(loc, blockVariable, - ir::spv::Decoration::Uniform()); return blockVariable; }