45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
#ifndef GPU_DECOMPRESS_H
|
|
#define GPU_DECOMPRESS_H
|
|
|
|
#include "gpu_context.h"
|
|
#include "vkz_format.h"
|
|
|
|
// ── GPU Decompression Pipeline ─────────────────────────────────────
|
|
typedef struct {
|
|
GpuContext *ctx;
|
|
|
|
VkPipelineLayout pipeline_layout;
|
|
VkPipeline pipeline;
|
|
VkDescriptorSetLayout desc_layout;
|
|
VkDescriptorPool desc_pool;
|
|
VkDescriptorSet desc_set;
|
|
|
|
VkBuffer input_buffer;
|
|
VkDeviceMemory input_memory;
|
|
VkBuffer output_buffer;
|
|
VkDeviceMemory output_memory;
|
|
VkBuffer meta_buffer;
|
|
VkDeviceMemory meta_memory;
|
|
} GpuDecompressPipeline;
|
|
|
|
typedef struct {
|
|
uint32_t block_count;
|
|
uint32_t block_size;
|
|
uint32_t _pad1;
|
|
uint32_t _pad2;
|
|
} DecompressPushConstants;
|
|
|
|
// Reuse BlockMeta from gpu_compress.h
|
|
|
|
// ── Functions ──────────────────────────────────────────────────────
|
|
|
|
int gpu_decompress_init(GpuDecompressPipeline *pipe, GpuContext *ctx);
|
|
|
|
int gpu_decompress_data(GpuDecompressPipeline *pipe, const VkzArchive *archive,
|
|
const char *archive_path, uint8_t *output_data,
|
|
uint64_t output_size);
|
|
|
|
void gpu_decompress_cleanup(GpuDecompressPipeline *pipe);
|
|
|
|
#endif // GPU_DECOMPRESS_H
|