From a9a9ac94d2a52465005278f4354b53559d216df4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Mon, 2 Apr 2018 22:17:47 +0200 Subject: [PATCH] add get functions on opaque pointers --- include/vkh.h | 43 +++++++++++++++++++++++++------------------ src/vkh_buffer.c | 7 +++++++ src/vkh_image.c | 15 +++++++++++++++ 3 files changed, 47 insertions(+), 18 deletions(-) diff --git a/include/vkh.h b/include/vkh.h index 90a98e9..28fe341 100644 --- a/include/vkh.h +++ b/include/vkh.h @@ -14,12 +14,12 @@ #define VK_CHECK_RESULT(f) \ { \ - VkResult res = (f); \ - if (res != VK_SUCCESS) \ - { \ - printf("Fatal : VkResult is %d in %s at line %d\n", res, __FILE__, __LINE__); \ - assert(res == VK_SUCCESS); \ - } \ + VkResult res = (f); \ + if (res != VK_SUCCESS) \ + { \ + printf("Fatal : VkResult is %d in %s at line %d\n", res, __FILE__, __LINE__); \ + assert(res == VK_SUCCESS); \ + } \ } typedef struct _vkh_app_t* VkhApp; @@ -30,29 +30,36 @@ typedef struct _vkh_presenter_t* VkhPresenter; /////////////////////////////// VkhImage vkh_image_create (VkhDevice pDev, VkFormat format, uint32_t width, uint32_t height, VkImageTiling tiling, - VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); + VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); VkhImage vkh_image_ms_create (VkhDevice pDev, VkFormat format, VkSampleCountFlagBits num_samples, uint32_t width, uint32_t height, - VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); + VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); VkhImage vkh_tex2d_array_create (VkhDevice pDev, VkFormat format, uint32_t width, uint32_t height, uint32_t layers, - VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); + VkMemoryPropertyFlags memprops, VkImageUsageFlags usage); void vkh_image_create_descriptor(VkhImage img, VkImageViewType viewType, VkImageAspectFlags aspectFlags, VkFilter magFilter, VkFilter minFilter, - VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode); + VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode); void vkh_image_create_view (VkhImage img, VkImageViewType viewType, VkImageAspectFlags aspectFlags); void vkh_image_create_sampler (VkhImage img, VkFilter magFilter, VkFilter minFilter, - VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode); + VkSamplerMipmapMode mipmapMode, VkSamplerAddressMode addressMode); void vkh_image_set_layout (VkCommandBuffer cmdBuff, VkhImage image, VkImageAspectFlags aspectMask, - VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); + VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); void vkh_image_set_layout_subres(VkCommandBuffer cmdBuff, VkhImage image, VkImageSubresourceRange subresourceRange, - VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); + VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); void vkh_image_destroy (VkhImage img); +VkImage vkh_image_get_vkimage (VkhImage img); +VkImageView vkh_image_get_view (VkhImage img); +VkImageLayout vkh_image_get_layout (VkhImage img); +VkDescriptorImageInfo vkh_image_get_descriptor(VkhImage img, VkImageLayout imageLayout); //////////////////////////////// VkhBuffer vkh_buffer_create (VkhDevice pDev, VkBufferUsageFlags usage, - VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size); + VkMemoryPropertyFlags memoryPropertyFlags, VkDeviceSize size); void vkh_buffer_destroy (VkhBuffer buff); VkResult vkh_buffer_map (VkhBuffer buff); void vkh_buffer_unmap (VkhBuffer buff); VkResult vkh_buffer_bind (VkhBuffer buff); + +VkBuffer vkh_buffer_get_vkbuffer (VkhBuffer buff); +void* vkh_buffer_get_mapped_pointer (VkhBuffer buff); /////////////////////////////// VkFence vkh_fence_create (VkDevice dev); @@ -65,21 +72,21 @@ void vkh_cmd_begin (VkCommandBuffer cmdBuff, VkCommandBufferUsageFlags flags); void vkh_cmd_end (VkCommandBuffer cmdBuff); void vkh_cmd_submit (VkQueue queue, VkCommandBuffer *pCmdBuff, VkFence fence); void vkh_cmd_submit_with_semaphores(VkQueue queue, VkCommandBuffer *pCmdBuff, VkSemaphore waitSemaphore, - VkSemaphore signalSemaphore, VkFence fence); + VkSemaphore signalSemaphore, VkFence fence); VkPhysicalDevice vkh_find_phy (VkInstance inst, VkPhysicalDeviceType phyType); VkShaderModule vkh_load_module(VkDevice dev, const char* path); bool memory_type_from_properties(VkPhysicalDeviceMemoryProperties* memory_properties, uint32_t typeBits, - VkFlags requirements_mask, uint32_t *typeIndex); + VkFlags requirements_mask, uint32_t *typeIndex); char * read_spv(const char *filename, size_t *psize); uint32_t* readFile(uint32_t* length, const char* filename); void dumpLayerExts (); void set_image_layout(VkCommandBuffer cmdBuff, VkImage image, VkImageAspectFlags aspectMask, VkImageLayout old_image_layout, - VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); + VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); void set_image_layout_subres(VkCommandBuffer cmdBuff, VkImage image, VkImageSubresourceRange subresourceRange, VkImageLayout old_image_layout, - VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); + VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages); #endif diff --git a/src/vkh_buffer.c b/src/vkh_buffer.c index 9e4f48e..18ae096 100644 --- a/src/vkh_buffer.c +++ b/src/vkh_buffer.c @@ -49,3 +49,10 @@ VkResult vkh_buffer_bind(VkhBuffer buff) { return vkBindBufferMemory(buff->pDev->vkDev, buff->buffer, buff->memory, 0); } + +VkBuffer vkh_buffer_get_vkbuffer (VkhBuffer buff){ + return buff->buffer; +} +void* vkh_buffer_get_mapped_pointer (VkhBuffer buff){ + return buff->mapped; +} diff --git a/src/vkh_image.c b/src/vkh_image.c index c03a6d8..08f79c9 100644 --- a/src/vkh_image.c +++ b/src/vkh_image.c @@ -93,6 +93,21 @@ void vkh_image_create_descriptor(VkhImage img, VkImageViewType viewType, VkImage vkh_image_create_view (img, viewType, aspectFlags); vkh_image_create_sampler (img, magFilter, minFilter, mipmapMode, addressMode); } +VkImage vkh_image_get_vkimage (VkhImage img){ + return img->image; +} +VkImageView vkh_image_get_view (VkhImage img){ + return img->view; +} +VkImageLayout vkh_image_get_layout (VkhImage img){ + return img->layout; +} +VkDescriptorImageInfo vkh_image_get_descriptor (VkhImage img, VkImageLayout imageLayout){ + VkDescriptorImageInfo desc = { .imageView = img->view, + .imageLayout = imageLayout, + .sampler = img->sampler }; + return desc; +} void vkh_image_set_layout(VkCommandBuffer cmdBuff, VkhImage image, VkImageAspectFlags aspectMask, VkImageLayout new_image_layout, VkPipelineStageFlags src_stages, VkPipelineStageFlags dest_stages) { -- 2.47.3