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 typedef enum VkStructureTypeHUAWEI {
14     VK_STRUCTURE_TYPE_BLUR_COLOR_FILTER_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 15,
15     VK_STRUCTURE_TYPE_BLUR_NOISE_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 14,
16     VK_STRUCTURE_TYPE_DRAW_BLUR_IMAGE_INFO_HUAWEI = VK_STRUCTURE_TYPE_MAX_ENUM - 13,
17     VK_STRUCTURE_TYPE_RENDER_PASS_DAMAGE_REGION_BEGIN_INFO_TYPE = VK_STRUCTURE_TYPE_MAX_ENUM - 7
18 } VkstructureTypeHUAWEI;
19 
20 typedef struct VkRenderPassDamageRegionBeginInfo {
21     VkStructureTypeHUAWEI       sType;
22     const void*                 pNext;
23     uint32_t                    regionCount;
24     const VkRect2D*             regions;
25 } VkRenderPassDamageRegionBeginInfo;
26 
27 #define VK_HUAWEI_DRAW_BLUR_IMAGE 1
28 #define VK_HUAWEI_DRAW_BLUR_IMAGE_SPEC_VERSION 10
29 #define VK_HUAWEI_DRAW_BLUR_IMAGE_EXTENSION_NAME "VK_HUAWEI_draw_blur_image"
30 
31 typedef enum VkBlurOriginTypeHUAWEI {
32     BLUR_ORIGIN_NONE_FLIP_HUAWEI = 0,
33     BLUR_ORIGIN_Y_AXIS_FLIP_HUAWEI = 1,
34 } VkBlurOriginTypeHUAWEI;
35 
36 typedef struct VkDrawBlurImageInfoHUAWEI {
37     VkStructureTypeHUAWEI             sType;
38     const void*                       pNext;
39     float                             sigma;
40     VkBlurOriginTypeHUAWEI            origin;
41     VkRect2D                          srcRegion;
42     VkRect2D                          dstRegion;
43     VkImageView                       srcImageView;
44 } VkDrawBlurImageInfoHUAWEI;
45 
46 typedef struct VkBlurNoiseInfoHUAWEI {
47     VkStructureTypeHUAWEI             sType;
48     const void*                       pNext;
49     float                             noiseRatio;
50 } VkBlurNoiseInfoHUAWEI;
51 
52 typedef struct VkBlurColorFilterInfoHUAWEI {
53     VkStructureTypeHUAWEI             sType;
54     const void*                       pNext;
55     float                             saturation;
56     float                             brightness;
57 } VkBlurColorFilterInfoHUAWEI;
58 
59 typedef void (VKAPI_PTR *PFN_vkCmdDrawBlurImageHUAWEI)(VkCommandBuffer commandBuffer,\
60     const VkDrawBlurImageInfoHUAWEI* drawBlurImageInfo);
61 
62 typedef VkResult (VKAPI_PTR *PFN_vkGetBlurImageSizeHUAWEI)(VkDevice device, \
63     const VkDrawBlurImageInfoHUAWEI *drawBlurImageInfo, VkRect2D *pSize);
64 
65 #ifndef VK_NO_PROTOTYPES
66 VKAPI_ATTR void VKAPI_CALL vkCmdDrawBlurImageHUAWEI(
67     VkCommandBuffer                   commandBuffer,
68     const VkDrawBlurImageInfoHUAWEI*  drawBlurImageInfo);
69 
70 VKAPI_ATTR VkResult VKAPI_CALL vkGetBlurImageSizeHUAWEI(
71     VkDevice                          device,
72     const VkDrawBlurImageInfoHUAWEI*  drawBlurImageInfo,
73     VkRect2D*                         pSize);
74 #endif
75 
76 #ifdef __cplusplus
77 }
78 #endif