xref: /aosp_15_r20/external/mesa3d/src/panfrost/vulkan/panvk_blend.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright © 2024 Collabora Ltd.
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #ifndef PANVK_BLEND_H
7*61046927SAndroid Build Coastguard Worker #define PANVK_BLEND_H
8*61046927SAndroid Build Coastguard Worker 
9*61046927SAndroid Build Coastguard Worker #include <stdbool.h>
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #include "util/hash_table.h"
12*61046927SAndroid Build Coastguard Worker #include "util/simple_mtx.h"
13*61046927SAndroid Build Coastguard Worker 
14*61046927SAndroid Build Coastguard Worker #include "pan_blend.h"
15*61046927SAndroid Build Coastguard Worker 
16*61046927SAndroid Build Coastguard Worker #include "panvk_macros.h"
17*61046927SAndroid Build Coastguard Worker #include "panvk_mempool.h"
18*61046927SAndroid Build Coastguard Worker 
19*61046927SAndroid Build Coastguard Worker struct vk_color_blend_state;
20*61046927SAndroid Build Coastguard Worker struct panvk_device;
21*61046927SAndroid Build Coastguard Worker 
22*61046927SAndroid Build Coastguard Worker struct panvk_blend_shader {
23*61046927SAndroid Build Coastguard Worker    struct pan_blend_shader_key key;
24*61046927SAndroid Build Coastguard Worker    mali_ptr binary;
25*61046927SAndroid Build Coastguard Worker };
26*61046927SAndroid Build Coastguard Worker 
27*61046927SAndroid Build Coastguard Worker struct panvk_blend_shader_cache {
28*61046927SAndroid Build Coastguard Worker    struct panvk_pool bin_pool;
29*61046927SAndroid Build Coastguard Worker    struct hash_table *ht;
30*61046927SAndroid Build Coastguard Worker    simple_mtx_t lock;
31*61046927SAndroid Build Coastguard Worker };
32*61046927SAndroid Build Coastguard Worker 
33*61046927SAndroid Build Coastguard Worker #ifdef PAN_ARCH
34*61046927SAndroid Build Coastguard Worker VkResult panvk_per_arch(blend_shader_cache_init)(struct panvk_device *dev);
35*61046927SAndroid Build Coastguard Worker 
36*61046927SAndroid Build Coastguard Worker void panvk_per_arch(blend_shader_cache_cleanup)(struct panvk_device *dev);
37*61046927SAndroid Build Coastguard Worker 
38*61046927SAndroid Build Coastguard Worker struct panvk_blend_info {
39*61046927SAndroid Build Coastguard Worker    bool any_dest_read;
40*61046927SAndroid Build Coastguard Worker    bool needs_shader;
41*61046927SAndroid Build Coastguard Worker    bool shader_loads_blend_const;
42*61046927SAndroid Build Coastguard Worker };
43*61046927SAndroid Build Coastguard Worker 
44*61046927SAndroid Build Coastguard Worker VkResult panvk_per_arch(blend_emit_descs)(
45*61046927SAndroid Build Coastguard Worker    struct panvk_device *dev, const struct vk_color_blend_state *cb,
46*61046927SAndroid Build Coastguard Worker    const VkFormat *color_attachment_formats, uint8_t *color_attachment_samples,
47*61046927SAndroid Build Coastguard Worker    const struct pan_shader_info *fs_info, mali_ptr fs_code,
48*61046927SAndroid Build Coastguard Worker    struct mali_blend_packed *bds, struct panvk_blend_info *blend_info);
49*61046927SAndroid Build Coastguard Worker 
50*61046927SAndroid Build Coastguard Worker #endif
51*61046927SAndroid Build Coastguard Worker 
52*61046927SAndroid Build Coastguard Worker #endif
53