summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_compute_pass.h
diff options
context:
space:
mode:
authorameerj <52414509+ameerj@users.noreply.github.com>2021-02-13 22:49:24 +0100
committerameerj <52414509+ameerj@users.noreply.github.com>2021-03-13 18:16:03 +0100
commit20eb368e147e1c27f05d6923c51596f8dfe24e89 (patch)
treea8b1c8eb79eb55e189a10dfd43b8b6bb1449220f /src/video_core/renderer_vulkan/vk_compute_pass.h
parenthost_shaders: Modify shader cmake integration to allow for larger shaders (diff)
downloadyuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar.gz
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar.bz2
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar.lz
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar.xz
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.tar.zst
yuzu-20eb368e147e1c27f05d6923c51596f8dfe24e89.zip
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_compute_pass.h')
-rw-r--r--src/video_core/renderer_vulkan/vk_compute_pass.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/video_core/renderer_vulkan/vk_compute_pass.h b/src/video_core/renderer_vulkan/vk_compute_pass.h
index 17d781d99..5ea187c30 100644
--- a/src/video_core/renderer_vulkan/vk_compute_pass.h
+++ b/src/video_core/renderer_vulkan/vk_compute_pass.h
@@ -11,14 +11,21 @@
#include "common/common_types.h"
#include "video_core/engines/maxwell_3d.h"
#include "video_core/renderer_vulkan/vk_descriptor_pool.h"
+#include "video_core/vulkan_common/vulkan_memory_allocator.h"
#include "video_core/vulkan_common/vulkan_wrapper.h"
+namespace VideoCommon {
+struct SwizzleParameters;
+}
+
namespace Vulkan {
class Device;
class StagingBufferPool;
class VKScheduler;
class VKUpdateDescriptorQueue;
+class Image;
+struct StagingBufferRef;
class VKComputePass {
public:
@@ -77,4 +84,29 @@ private:
VKUpdateDescriptorQueue& update_descriptor_queue;
};
+class ASTCDecoderPass final : public VKComputePass {
+public:
+ explicit ASTCDecoderPass(const Device& device_, VKScheduler& scheduler_,
+ VKDescriptorPool& descriptor_pool_,
+ StagingBufferPool& staging_buffer_pool_,
+ VKUpdateDescriptorQueue& update_descriptor_queue_,
+ MemoryAllocator& memory_allocator_);
+ ~ASTCDecoderPass();
+
+ void Assemble(Image& image, const StagingBufferRef& map,
+ std::span<const VideoCommon::SwizzleParameters> swizzles);
+
+private:
+ void MakeDataBuffer();
+
+ const Device& device;
+ VKScheduler& scheduler;
+ StagingBufferPool& staging_buffer_pool;
+ VKUpdateDescriptorQueue& update_descriptor_queue;
+ MemoryAllocator& memory_allocator;
+
+ vk::Buffer data_buffer;
+ MemoryCommit data_buffer_commit;
+};
+
} // namespace Vulkan