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