1 /* 2 * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved. 3 * Description: vulkan api partial render extended function. Will delete when vulkan-headers heuristic 4 * Create: 2023/11/27 5 */ 6 7 #pragma once 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 const uint32_t VK_DEVICE_CREATE_HTS_ENABLE_BIT = 0x80000000; // for device using hts 14 typedef enum VkStructureTypeHUAWEI { 15 VK_STRUCTURE_TYPE_BLUR_COLOR_FILTER_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 15, 16 VK_STRUCTURE_TYPE_BLUR_NOISE_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 14, 17 VK_STRUCTURE_TYPE_DRAW_BLUR_IMAGE_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 13, 18 /* for hts/ffts semaphore */ 19 VK_STRUCTURE_TYPE_SEMAPHORE_EXT_CREATE_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 11, 20 VK_STRUCTURE_TYPE_RENDER_PASS_DAMAGE_REGION_BEGIN_INFO_TYPE = VK_STRUCTURE_TYPE_MAX_ENUM - 7 21 } VkstructureTypeHUAWEI; 22 23 typedef struct VkRenderPassDamageRegionBeginInfo { 24 VkStructureTypeHUAWEI sType; 25 const void* pNext; 26 uint32_t regionCount; 27 const VkRect2D* regions; 28 } VkRenderPassDamageRegionBeginInfo; 29 30 #define VK_HUAWEI_DRAW_BLUR_IMAGE 1 31 #define VK_HUAWEI_DRAW_BLUR_IMAGE_SPEC_VERSION 10 32 #define VK_HUAWEI_DRAW_BLUR_IMAGE_EXTENSION_NAME "VK_HUAWEI_draw_blur_image" 33 #define VK_HUAWEI_GPU_ERROR_RECOVER (-199999999) 34 35 typedef enum VkBlurOriginTypeHUAWEI { 36 BLUR_ORIGIN_NONE_FLIP_HUAWEI = 0, 37 BLUR_ORIGIN_Y_AXIS_FLIP_HUAWEI = 1, 38 } VkBlurOriginTypeHUAWEI; 39 40 typedef struct VkDrawBlurImageInfoHUAWEI { 41 VkStructureTypeHUAWEI sType; 42 const void* pNext; 43 float sigma; 44 VkBlurOriginTypeHUAWEI origin; 45 VkRect2D srcRegion; 46 VkRect2D dstRegion; 47 VkImageView srcImageView; 48 } VkDrawBlurImageInfoHUAWEI; 49 50 typedef struct VkBlurNoiseInfoHUAWEI { 51 VkStructureTypeHUAWEI sType; 52 const void* pNext; 53 float noiseRatio; 54 } VkBlurNoiseInfoHUAWEI; 55 56 typedef struct VkBlurColorFilterInfoHUAWEI { 57 VkStructureTypeHUAWEI sType; 58 const void* pNext; 59 float saturation; 60 float brightness; 61 } VkBlurColorFilterInfoHUAWEI; 62 63 typedef void (VKAPI_PTR *PFN_vkCmdDrawBlurImageHUAWEI)(VkCommandBuffer commandBuffer,\ 64 const VkDrawBlurImageInfoHUAWEI* drawBlurImageInfo); 65 66 typedef VkResult (VKAPI_PTR *PFN_vkGetBlurImageSizeHUAWEI)(VkDevice device, \ 67 const VkDrawBlurImageInfoHUAWEI *drawBlurImageInfo, VkRect2D *pSize); 68 69 #ifndef VK_NO_PROTOTYPES 70 VKAPI_ATTR void VKAPI_CALL vkCmdDrawBlurImageHUAWEI( 71 VkCommandBuffer commandBuffer, 72 const VkDrawBlurImageInfoHUAWEI* drawBlurImageInfo); 73 74 VKAPI_ATTR VkResult VKAPI_CALL vkGetBlurImageSizeHUAWEI( 75 VkDevice device, 76 const VkDrawBlurImageInfoHUAWEI* drawBlurImageInfo, 77 VkRect2D* pSize); 78 #endif 79 80 #ifdef __cplusplus 81 } 82 #endif