[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