Files
test2/source/blender/gpu/vulkan/vk_pixel_buffer.hh
Brecht Van Lommel b8b7f71520 Vulkan: Implement native handles for pixel buffers
* Pixel buffer is always allocated with export and dedicated memory flags.
* Returns an opaque file descriptor (Unix) or handle (Windows).
* Native handle now includes memory size as it may be slightly bigger
  than the requested size.

Pull Request: https://projects.blender.org/blender/blender/pulls/137363
2025-04-28 11:38:56 +02:00

45 lines
847 B
C++

/* SPDX-FileCopyrightText: 2022 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup gpu
*/
#pragma once
#include "gpu_texture_private.hh"
#include "vk_buffer.hh"
namespace blender::gpu {
class VKPixelBuffer : public PixelBuffer {
VKBuffer buffer_;
bool buffer_initialized_ = false;
bool buffer_memory_export_ = false;
GPUPixelBufferNativeHandle native_handle_;
public:
VKPixelBuffer(size_t size);
void *map() override;
void unmap() override;
GPUPixelBufferNativeHandle get_native_handle() override;
size_t get_size() override;
VKBuffer &buffer_get()
{
return buffer_;
}
protected:
void create(bool memory_export);
};
static inline VKPixelBuffer *unwrap(PixelBuffer *pixel_buffer)
{
return static_cast<VKPixelBuffer *>(pixel_buffer);
}
} // namespace blender::gpu