• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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