2023-08-16 00:20:26 +10:00
|
|
|
/* SPDX-FileCopyrightText: 2022 Blender Authors
|
2023-05-31 16:19:06 +02:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
2022-12-02 08:35:17 +01:00
|
|
|
|
|
|
|
|
/** \file
|
|
|
|
|
* \ingroup gpu
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "gpu_texture_private.hh"
|
|
|
|
|
|
2023-03-13 19:25:18 +01:00
|
|
|
#include "vk_buffer.hh"
|
|
|
|
|
|
2022-12-02 08:35:17 +01:00
|
|
|
namespace blender::gpu {
|
|
|
|
|
|
|
|
|
|
class VKPixelBuffer : public PixelBuffer {
|
2023-03-13 19:25:18 +01:00
|
|
|
VKBuffer buffer_;
|
2025-04-12 14:21:03 +02:00
|
|
|
bool buffer_initialized_ = false;
|
|
|
|
|
bool buffer_memory_export_ = false;
|
2023-03-13 19:25:18 +01:00
|
|
|
|
2022-12-02 08:35:17 +01:00
|
|
|
public:
|
2024-06-14 19:27:33 +02:00
|
|
|
VKPixelBuffer(size_t size);
|
2022-12-02 08:35:17 +01:00
|
|
|
void *map() override;
|
|
|
|
|
void unmap() override;
|
2025-04-12 14:21:03 +02:00
|
|
|
GPUPixelBufferNativeHandle get_native_handle() override;
|
2023-05-25 08:50:14 +02:00
|
|
|
size_t get_size() override;
|
2023-09-28 10:00:24 +02:00
|
|
|
|
|
|
|
|
VKBuffer &buffer_get()
|
|
|
|
|
{
|
|
|
|
|
return buffer_;
|
|
|
|
|
}
|
2025-04-12 14:21:03 +02:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void create(bool memory_export);
|
2022-12-02 08:35:17 +01:00
|
|
|
};
|
|
|
|
|
|
2024-06-28 13:51:51 +02:00
|
|
|
static inline VKPixelBuffer *unwrap(PixelBuffer *pixel_buffer)
|
|
|
|
|
{
|
|
|
|
|
return static_cast<VKPixelBuffer *>(pixel_buffer);
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-31 15:49:04 +11:00
|
|
|
} // namespace blender::gpu
|