From f9476986c2b799c37781683db8f5da7e7c3f45c0 Mon Sep 17 00:00:00 2001 From: Kbz-8 Date: Thu, 12 Dec 2024 16:34:25 +0100 Subject: [PATCH] working on copy functions --- Includes/Pulse.h | 19 ++++--------------- Sources/Backends/Vulkan/VulkanBuffer.h | 2 ++ Sources/PulseDefs.h | 4 ++++ Sources/PulseInternal.h | 4 ++++ Sources/PulsePFNs.h | 4 ++++ 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/Includes/Pulse.h b/Includes/Pulse.h index 275f31f..d0c1ef3 100644 --- a/Includes/Pulse.h +++ b/Includes/Pulse.h @@ -201,12 +201,6 @@ typedef struct PulseBufferCreateInfo PulseDeviceSize size; } PulseBufferCreateInfo; -typedef struct PulseBufferLocation -{ - PulseBuffer buffer; - PulseDeviceSize offset; -} PulseBufferLocation; - typedef struct PulseBufferRegion { PulseBuffer buffer; @@ -237,15 +231,6 @@ typedef struct PulseImageCreateInfo uint32_t layer_count_or_depth; // This value is treated as a layer count on 2D array images, and as a depth value on 3D images } PulseImageCreateInfo; -typedef struct PulseImageLocation -{ - PulseImage image; - uint32_t layer; - uint32_t x; - uint32_t y; - uint32_t z; -} PulseImageLocation; - typedef struct PulseImageRegion { PulseImage image; @@ -276,10 +261,14 @@ PULSE_API void PulseDestroyDevice(PulseDevice device); PULSE_API PulseBuffer PulseCreateBuffer(PulseDevice device, const PulseBufferCreateInfo* create_infos); PULSE_API bool PulseMapBuffer(PulseBuffer buffer, void** data); PULSE_API void PulseUnmapBuffer(PulseBuffer buffer); +PULSE_API bool PulseCopyBufferToBuffer(const PulseBufferRegion* src, const PulseBufferRegion* dst); +PULSE_API bool PulseCopyBufferToImage(PulseBuffer src, const PulseBufferRegion* dst); PULSE_API void PulseDestroyBuffer(PulseDevice device, PulseBuffer buffer); PULSE_API PulseImage PulseCreateImage(PulseDevice device, const PulseImageCreateInfo* create_infos); PULSE_API bool PulseIsImageFormatValid(PulseDevice device, PulseImageFormat format, PulseImageType type, PulseImageUsageFlags usage); +PULSE_API bool PulseCopyImageToBuffer(const PulseImageRegion* src, const PulseBufferRegion* dst); +PULSE_API bool PulseBlitImage(const PulseImageRegion* src, const PulseImageRegion* dst); PULSE_API void PulseDestroyImage(PulseDevice device, PulseImage image); PULSE_API PulseCommandList PulseRequestCommandList(PulseDevice device, PulseCommandListUsage usage); diff --git a/Sources/Backends/Vulkan/VulkanBuffer.h b/Sources/Backends/Vulkan/VulkanBuffer.h index 7a8c2dc..bc54a68 100644 --- a/Sources/Backends/Vulkan/VulkanBuffer.h +++ b/Sources/Backends/Vulkan/VulkanBuffer.h @@ -25,6 +25,8 @@ typedef struct VulkanBuffer PulseBuffer VulkanCreateBuffer(PulseDevice device, const PulseBufferCreateInfo* create_infos); bool VulkanMapBuffer(PulseBuffer buffer, void** data); void VulkanUnmapBuffer(PulseBuffer buffer); +bool VulkanCopyBufferToBuffer(const PulseBufferRegion* src, const PulseBufferRegion* dst); +bool VulkanCopyBufferToImage(const PulseBufferRegion* src, const PulseImageRegion* dst); void VulkanDestroyBuffer(PulseDevice device, PulseBuffer buffer); #endif // PULSE_VULKAN_BUFFER_H_ diff --git a/Sources/PulseDefs.h b/Sources/PulseDefs.h index 1e924e3..670a1e6 100644 --- a/Sources/PulseDefs.h +++ b/Sources/PulseDefs.h @@ -92,9 +92,13 @@ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(CreateBuffer, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(MapBuffer, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(UnmapBuffer, _namespace) \ + PULSE_LOAD_DRIVER_DEVICE_FUNCTION(CopyBufferToBuffer, _namespace) \ + PULSE_LOAD_DRIVER_DEVICE_FUNCTION(CopyBufferToImage, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(DestroyBuffer, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(CreateImage, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(IsImageFormatValid, _namespace) \ + PULSE_LOAD_DRIVER_DEVICE_FUNCTION(CopyImageToBuffer, _namespace) \ + PULSE_LOAD_DRIVER_DEVICE_FUNCTION(BlitImage, _namespace) \ PULSE_LOAD_DRIVER_DEVICE_FUNCTION(DestroyImage, _namespace) \ #endif // PULSE_DEFS_H_ diff --git a/Sources/PulseInternal.h b/Sources/PulseInternal.h index 15606b3..962c199 100644 --- a/Sources/PulseInternal.h +++ b/Sources/PulseInternal.h @@ -73,9 +73,13 @@ typedef struct PulseDeviceHandler PulseCreateBufferPFN PFN_CreateBuffer; PulseMapBufferPFN PFN_MapBuffer; PulseUnmapBufferPFN PFN_UnmapBuffer; + PulseCopyBufferToBufferPFN PFN_CopyBufferToBuffer; + PulseCopyBufferToImageFN PFN_CopyBufferToImage; PulseDestroyBufferPFN PFN_DestroyBuffer; PulseCreateImagePFN PFN_CreateImage; PulseIsImageFormatValidPFN PFN_IsImageFormatValid; + PulseCopyImageToBufferPFN PFN_CopyImageToBuffer; + PulseBlitImagePFN PFN_BlitImage; PulseDestroyImagePFN PFN_DestroyImage; // Attributes diff --git a/Sources/PulsePFNs.h b/Sources/PulsePFNs.h index 8d889b2..06a1f78 100644 --- a/Sources/PulsePFNs.h +++ b/Sources/PulsePFNs.h @@ -31,5 +31,9 @@ typedef void (*PulseDestroyBufferPFN)(PulseDevice, PulseBuffer); typedef PulseImage (*PulseCreateImagePFN)(PulseDevice, const PulseImageCreateInfo*); typedef bool (*PulseIsImageFormatValidPFN)(PulseDevice, PulseImageFormat, PulseImageType, PulseImageUsageFlags); typedef void (*PulseDestroyImagePFN)(PulseDevice, PulseImage); +typedef bool (*PulseCopyBufferToBufferPFN)(const PulseBufferRegion*, const PulseBufferRegion*); +typedef bool (*PulseCopyBufferToImageFN)(const PulseBufferRegion*, const PulseImageRegion*); +typedef bool (*PulseCopyImageToBufferPFN)(const PulseImageRegion*, const PulseBufferRegion*); +typedef bool (*PulseBlitImagePFN)(const PulseImageRegion*, const PulseImageRegion*); #endif // PULSE_PFNS_H_