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.
This commit is contained in:
Jeroen Bakker 2022-12-02 08:35:17 +01:00
parent 587b213fe1
commit 09ee781a67
9 changed files with 127 additions and 0 deletions

View File

@ -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

View File

@ -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();

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
{

View File

@ -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;