[Bf-blender-cvs] [09ee781a672] master: GPU: Add placeholders for PixelBuffer to vulkan backend.
Jeroen Bakker
noreply at git.blender.org
Fri Dec 2 08:37:40 CET 2022
Commit: 09ee781a672a9cbafbd8102b7ee1a094179eeeef
Author: Jeroen Bakker
Date: Fri Dec 2 08:35:17 2022 +0100
Branches: master
https://developer.blender.org/rB09ee781a672a9cbafbd8102b7ee1a094179eeeef
GPU: Add placeholders for PixelBuffer to vulkan backend.
PixelBuffer was recently introduced. This change adds empty placeholders to the
vulkan backend and other related API tweaks.
===================================================================
M source/blender/gpu/CMakeLists.txt
M source/blender/gpu/vulkan/vk_backend.cc
M source/blender/gpu/vulkan/vk_backend.hh
A source/blender/gpu/vulkan/vk_fence.cc
A source/blender/gpu/vulkan/vk_fence.hh
A source/blender/gpu/vulkan/vk_pixel_buffer.cc
A source/blender/gpu/vulkan/vk_pixel_buffer.hh
M source/blender/gpu/vulkan/vk_texture.cc
M source/blender/gpu/vulkan/vk_texture.hh
===================================================================
diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt
index 2708b0fe084..cf485bf476a 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -191,8 +191,10 @@ set(VULKAN_SRC
vulkan/vk_batch.cc
vulkan/vk_context.cc
vulkan/vk_drawlist.cc
+ vulkan/vk_fence.cc
vulkan/vk_framebuffer.cc
vulkan/vk_index_buffer.cc
+ vulkan/vk_pixel_buffer.cc
vulkan/vk_query.cc
vulkan/vk_shader.cc
vulkan/vk_storage_buffer.cc
@@ -204,8 +206,10 @@ set(VULKAN_SRC
vulkan/vk_batch.hh
vulkan/vk_context.hh
vulkan/vk_drawlist.hh
+ vulkan/vk_fence.hh
vulkan/vk_framebuffer.hh
vulkan/vk_index_buffer.hh
+ vulkan/vk_pixel_buffer.hh
vulkan/vk_query.hh
vulkan/vk_shader.hh
vulkan/vk_storage_buffer.hh
diff --git a/source/blender/gpu/vulkan/vk_backend.cc b/source/blender/gpu/vulkan/vk_backend.cc
index 7e8d08f9ca9..b0212012fdf 100644
--- a/source/blender/gpu/vulkan/vk_backend.cc
+++ b/source/blender/gpu/vulkan/vk_backend.cc
@@ -10,8 +10,10 @@
#include "vk_batch.hh"
#include "vk_context.hh"
#include "vk_drawlist.hh"
+#include "vk_fence.hh"
#include "vk_framebuffer.hh"
#include "vk_index_buffer.hh"
+#include "vk_pixel_buffer.hh"
#include "vk_query.hh"
#include "vk_shader.hh"
#include "vk_storage_buffer.hh"
@@ -80,6 +82,11 @@ DrawList *VKBackend::drawlist_alloc(int /*list_length*/)
return new VKDrawList();
}
+Fence *VKBackend::fence_alloc()
+{
+ return new VKFence();
+}
+
FrameBuffer *VKBackend::framebuffer_alloc(const char *name)
{
return new VKFrameBuffer(name);
@@ -90,6 +97,11 @@ IndexBuf *VKBackend::indexbuf_alloc()
return new VKIndexBuffer();
}
+PixelBuffer *VKBackend::pixelbuf_alloc(uint size)
+{
+ return new VKPixelBuffer(size);
+}
+
QueryPool *VKBackend::querypool_alloc()
{
return new VKQueryPool();
diff --git a/source/blender/gpu/vulkan/vk_backend.hh b/source/blender/gpu/vulkan/vk_backend.hh
index 55b528bfa00..c78788298a5 100644
--- a/source/blender/gpu/vulkan/vk_backend.hh
+++ b/source/blender/gpu/vulkan/vk_backend.hh
@@ -33,8 +33,10 @@ class VKBackend : public GPUBackend {
Batch *batch_alloc() override;
DrawList *drawlist_alloc(int list_length) override;
+ Fence *fence_alloc() override;
FrameBuffer *framebuffer_alloc(const char *name) override;
IndexBuf *indexbuf_alloc() override;
+ PixelBuffer *pixelbuf_alloc(uint size) override;
QueryPool *querypool_alloc() override;
Shader *shader_alloc(const char *name) override;
Texture *texture_alloc(const char *name) override;
diff --git a/source/blender/gpu/vulkan/vk_fence.cc b/source/blender/gpu/vulkan/vk_fence.cc
new file mode 100644
index 00000000000..3acd94d3050
--- /dev/null
+++ b/source/blender/gpu/vulkan/vk_fence.cc
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. All rights reserved. */
+
+/** \file
+ * \ingroup gpu
+ */
+
+#include "vk_fence.hh"
+
+namespace blender::gpu {
+
+void VKFence::signal()
+{
+}
+
+void VKFence::wait()
+{
+}
+
+} // namespace blender::gpu
\ No newline at end of file
diff --git a/source/blender/gpu/vulkan/vk_fence.hh b/source/blender/gpu/vulkan/vk_fence.hh
new file mode 100644
index 00000000000..ff382ae54e3
--- /dev/null
+++ b/source/blender/gpu/vulkan/vk_fence.hh
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. All rights reserved. */
+
+/** \file
+ * \ingroup gpu
+ */
+
+#pragma once
+
+#include "gpu_state_private.hh"
+
+namespace blender::gpu {
+
+class VKFence : public Fence {
+ public:
+ void signal() override;
+ void wait() override;
+};
+
+} // namespace blender::gpu
\ No newline at end of file
diff --git a/source/blender/gpu/vulkan/vk_pixel_buffer.cc b/source/blender/gpu/vulkan/vk_pixel_buffer.cc
new file mode 100644
index 00000000000..65780778d59
--- /dev/null
+++ b/source/blender/gpu/vulkan/vk_pixel_buffer.cc
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. All rights reserved. */
+
+/** \file
+ * \ingroup gpu
+ */
+
+#include "vk_pixel_buffer.hh"
+
+namespace blender::gpu {
+
+VKPixelBuffer::VKPixelBuffer(int64_t size): PixelBuffer(size)
+{
+}
+
+void *VKPixelBuffer::map()
+{
+ return nullptr;
+}
+
+void VKPixelBuffer::unmap()
+{
+}
+
+int64_t VKPixelBuffer::get_native_handle()
+{
+ return -1;
+}
+
+uint VKPixelBuffer::get_size()
+{
+ return size_;
+}
+
+} // namespace blender::gpu
\ No newline at end of file
diff --git a/source/blender/gpu/vulkan/vk_pixel_buffer.hh b/source/blender/gpu/vulkan/vk_pixel_buffer.hh
new file mode 100644
index 00000000000..8ba8243428f
--- /dev/null
+++ b/source/blender/gpu/vulkan/vk_pixel_buffer.hh
@@ -0,0 +1,23 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ * Copyright 2022 Blender Foundation. All rights reserved. */
+
+/** \file
+ * \ingroup gpu
+ */
+
+#pragma once
+
+#include "gpu_texture_private.hh"
+
+namespace blender::gpu {
+
+class VKPixelBuffer : public PixelBuffer {
+ public:
+ VKPixelBuffer(int64_t size);
+ void *map() override;
+ void unmap() override;
+ int64_t get_native_handle() override;
+ uint get_size() override;
+};
+
+} // namespace blender::gpu
\ No newline at end of file
diff --git a/source/blender/gpu/vulkan/vk_texture.cc b/source/blender/gpu/vulkan/vk_texture.cc
index ea5379e6572..a6c59ea35af 100644
--- a/source/blender/gpu/vulkan/vk_texture.cc
+++ b/source/blender/gpu/vulkan/vk_texture.cc
@@ -46,6 +46,13 @@ void VKTexture::update_sub(int /*mip*/,
{
}
+void VKTexture::update_sub(int /*offset*/[3],
+ int /*extent*/[3],
+ eGPUDataFormat /*format*/,
+ GPUPixelBuffer * /*pixbuf*/)
+{
+}
+
/* TODO(fclem): Legacy. Should be removed at some point. */
uint VKTexture::gl_bindcode_get() const
{
diff --git a/source/blender/gpu/vulkan/vk_texture.hh b/source/blender/gpu/vulkan/vk_texture.hh
index 93094b7e540..fd38cf403e2 100644
--- a/source/blender/gpu/vulkan/vk_texture.hh
+++ b/source/blender/gpu/vulkan/vk_texture.hh
@@ -26,6 +26,10 @@ class VKTexture : public Texture {
void *read(int mip, eGPUDataFormat format) override;
void update_sub(
int mip, int offset[3], int extent[3], eGPUDataFormat format, const void *data) override;
+ void update_sub(int offset[3],
+ int extent[3],
+ eGPUDataFormat format,
+ GPUPixelBuffer *pixbuf) override;
/* TODO(fclem): Legacy. Should be removed at some point. */
uint gl_bindcode_get() const override;
More information about the Bf-blender-cvs
mailing list