1316
1357
RADV_CMD_DIRTY_DYNAMIC_COLOR_BLEND_EQUATION = 1ull << 45,
1317
1358
RADV_CMD_DIRTY_DYNAMIC_DISCARD_RECTANGLE_ENABLE = 1ull << 46,
1318
1359
RADV_CMD_DIRTY_DYNAMIC_DISCARD_RECTANGLE_MODE = 1ull << 47,
1319
RADV_CMD_DIRTY_DYNAMIC_ALL = (1ull << 48) - 1,
1320
RADV_CMD_DIRTY_PIPELINE = 1ull << 48,
1321
RADV_CMD_DIRTY_INDEX_BUFFER = 1ull << 49,
1322
RADV_CMD_DIRTY_FRAMEBUFFER = 1ull << 50,
1323
RADV_CMD_DIRTY_VERTEX_BUFFER = 1ull << 51,
1324
RADV_CMD_DIRTY_STREAMOUT_BUFFER = 1ull << 52,
1325
RADV_CMD_DIRTY_GUARDBAND = 1ull << 53,
1326
RADV_CMD_DIRTY_RBPLUS = 1ull << 54,
1327
RADV_CMD_DIRTY_NGG_QUERY = 1ull << 55,
1328
RADV_CMD_DIRTY_OCCLUSION_QUERY = 1ull << 56,
1360
RADV_CMD_DIRTY_DYNAMIC_ATTACHMENT_FEEDBACK_LOOP_ENABLE = 1ull << 48,
1361
RADV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS_ENABLE = 1ull << 49,
1362
RADV_CMD_DIRTY_DYNAMIC_ALL = (1ull << 50) - 1,
1363
RADV_CMD_DIRTY_PIPELINE = 1ull << 50,
1364
RADV_CMD_DIRTY_INDEX_BUFFER = 1ull << 51,
1365
RADV_CMD_DIRTY_FRAMEBUFFER = 1ull << 52,
1366
RADV_CMD_DIRTY_VERTEX_BUFFER = 1ull << 53,
1367
RADV_CMD_DIRTY_STREAMOUT_BUFFER = 1ull << 54,
1368
RADV_CMD_DIRTY_GUARDBAND = 1ull << 55,
1369
RADV_CMD_DIRTY_RBPLUS = 1ull << 56,
1370
RADV_CMD_DIRTY_NGG_QUERY = 1ull << 57,
1371
RADV_CMD_DIRTY_OCCLUSION_QUERY = 1ull << 58,
1372
RADV_CMD_DIRTY_DB_SHADER_CONTROL = 1ull << 59,
1331
1375
enum radv_cmd_flush_bits {
1863
1922
void si_emit_graphics(struct radv_device *device, struct radeon_cmdbuf *cs);
1864
1923
void si_emit_compute(struct radv_device *device, struct radeon_cmdbuf *cs);
1866
void cik_create_gfx_config(struct radv_device *device);
1868
void si_write_scissors(struct radeon_cmdbuf *cs, int count, const VkRect2D *scissors,
1869
const VkViewport *viewports);
1871
void si_write_guardband(struct radeon_cmdbuf *cs, int count, const VkViewport *viewports,
1872
unsigned rast_prim, unsigned polygon_mode, float line_width);
1874
VkResult radv_create_shadow_regs_preamble(const struct radv_device *device,
1875
struct radv_queue_state *queue_state);
1876
void radv_destroy_shadow_regs_preamble(struct radv_queue_state *queue_state,
1877
struct radeon_winsys *ws);
1925
void radv_create_gfx_config(struct radv_device *device);
1927
void si_write_scissors(struct radeon_cmdbuf *cs, int count, const VkRect2D *scissors, const VkViewport *viewports);
1929
void si_write_guardband(struct radeon_cmdbuf *cs, int count, const VkViewport *viewports, unsigned rast_prim,
1930
unsigned polygon_mode, float line_width);
1932
VkResult radv_create_shadow_regs_preamble(const struct radv_device *device, struct radv_queue_state *queue_state);
1933
void radv_destroy_shadow_regs_preamble(struct radv_queue_state *queue_state, struct radeon_winsys *ws);
1878
1934
void radv_emit_shadow_regs_preamble(struct radeon_cmdbuf *cs, const struct radv_device *device,
1879
1935
struct radv_queue_state *queue_state);
1880
VkResult radv_init_shadowed_regs_buffer_state(const struct radv_device *device,
1881
struct radv_queue *queue);
1883
uint32_t si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_draw,
1884
bool indirect_draw, bool count_from_stream_output,
1885
uint32_t draw_vertex_count, unsigned topology,
1886
bool prim_restart_enable, unsigned patch_control_points,
1887
unsigned num_tess_patches);
1888
void si_cs_emit_write_event_eop(struct radeon_cmdbuf *cs, enum amd_gfx_level gfx_level, bool is_mec,
1889
unsigned event, unsigned event_flags, unsigned dst_sel,
1890
unsigned data_sel, uint64_t va, uint32_t new_fence,
1891
uint64_t gfx9_eop_bug_va);
1893
void radv_cp_wait_mem(struct radeon_cmdbuf *cs, uint32_t op, uint64_t va, uint32_t ref,
1895
void si_cs_emit_cache_flush(struct radeon_winsys *ws, struct radeon_cmdbuf *cs,
1896
enum amd_gfx_level gfx_level, uint32_t *flush_cnt, uint64_t flush_va,
1897
bool is_mec, enum radv_cmd_flush_bits flush_bits,
1936
VkResult radv_init_shadowed_regs_buffer_state(const struct radv_device *device, struct radv_queue *queue);
1938
uint32_t si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_draw, bool indirect_draw,
1939
bool count_from_stream_output, uint32_t draw_vertex_count, unsigned topology,
1940
bool prim_restart_enable, unsigned patch_control_points, unsigned num_tess_patches);
1941
void si_cs_emit_write_event_eop(struct radeon_cmdbuf *cs, enum amd_gfx_level gfx_level, bool is_mec, unsigned event,
1942
unsigned event_flags, unsigned dst_sel, unsigned data_sel, uint64_t va,
1943
uint32_t new_fence, uint64_t gfx9_eop_bug_va);
1945
struct radv_vgt_shader_key {
1948
uint8_t mesh_scratch_ring : 1;
1950
uint8_t ngg_passthrough : 1;
1951
uint8_t ngg : 1; /* gfx10+ */
1952
uint8_t streamout : 1; /* only used with NGG */
1953
uint8_t hs_wave32 : 1;
1954
uint8_t gs_wave32 : 1;
1955
uint8_t vs_wave32 : 1;
1958
void radv_cp_wait_mem(struct radeon_cmdbuf *cs, uint32_t op, uint64_t va, uint32_t ref, uint32_t mask);
1959
void si_cs_emit_cache_flush(struct radeon_winsys *ws, struct radeon_cmdbuf *cs, enum amd_gfx_level gfx_level,
1960
uint32_t *flush_cnt, uint64_t flush_va, bool is_mec, enum radv_cmd_flush_bits flush_bits,
1898
1961
enum rgp_flush_bits *sqtt_flush_bits, uint64_t gfx9_eop_bug_va);
1899
1962
void si_emit_cache_flush(struct radv_cmd_buffer *cmd_buffer);
1900
void si_emit_set_predication_state(struct radv_cmd_buffer *cmd_buffer, bool draw_visible,
1901
unsigned pred_op, uint64_t va);
1902
void si_cp_dma_buffer_copy(struct radv_cmd_buffer *cmd_buffer, uint64_t src_va, uint64_t dest_va,
1904
void si_cs_cp_dma_prefetch(const struct radv_device *device, struct radeon_cmdbuf *cs, uint64_t va,
1905
unsigned size, bool predicating);
1963
void si_emit_set_predication_state(struct radv_cmd_buffer *cmd_buffer, bool draw_visible, unsigned pred_op,
1965
void si_cp_dma_buffer_copy(struct radv_cmd_buffer *cmd_buffer, uint64_t src_va, uint64_t dest_va, uint64_t size);
1966
void si_cs_cp_dma_prefetch(const struct radv_device *device, struct radeon_cmdbuf *cs, uint64_t va, unsigned size,
1906
1968
void si_cp_dma_prefetch(struct radv_cmd_buffer *cmd_buffer, uint64_t va, unsigned size);
1907
void si_cp_dma_clear_buffer(struct radv_cmd_buffer *cmd_buffer, uint64_t va, uint64_t size,
1969
void si_cp_dma_clear_buffer(struct radv_cmd_buffer *cmd_buffer, uint64_t va, uint64_t size, unsigned value);
1909
1970
void si_cp_dma_wait_for_idle(struct radv_cmd_buffer *cmd_buffer);
1911
1972
uint32_t radv_get_pa_su_sc_mode_cntl(const struct radv_cmd_buffer *cmd_buffer);
1933
1993
struct radv_ps_epilog_key radv_generate_ps_epilog_key(const struct radv_device *device,
1934
const struct radv_graphics_pipeline *pipeline,
1935
1994
const struct radv_ps_epilog_state *state,
1936
1995
bool disable_mrt_compaction);
1997
bool radv_needs_null_export_workaround(const struct radv_device *device, const struct radv_shader *ps,
1998
unsigned custom_blend_mode);
1938
2000
void radv_cmd_buffer_reset_rendering(struct radv_cmd_buffer *cmd_buffer);
1939
bool radv_cmd_buffer_upload_alloc_aligned(struct radv_cmd_buffer *cmd_buffer, unsigned size,
2001
bool radv_cmd_buffer_upload_alloc_aligned(struct radv_cmd_buffer *cmd_buffer, unsigned size, unsigned alignment,
1941
2002
unsigned *out_offset, void **ptr);
1942
bool radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size,
1943
unsigned *out_offset, void **ptr);
1944
bool radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, unsigned size,
1945
const void *data, unsigned *out_offset);
2003
bool radv_cmd_buffer_upload_alloc(struct radv_cmd_buffer *cmd_buffer, unsigned size, unsigned *out_offset, void **ptr);
2004
bool radv_cmd_buffer_upload_data(struct radv_cmd_buffer *cmd_buffer, unsigned size, const void *data,
2005
unsigned *out_offset);
1946
2006
void radv_write_vertex_descriptors(const struct radv_cmd_buffer *cmd_buffer,
1947
const struct radv_graphics_pipeline *pipeline,
1948
bool full_null_descriptors, void *vb_ptr);
2007
const struct radv_graphics_pipeline *pipeline, bool full_null_descriptors,
1949
2009
void radv_write_scissors(struct radv_cmd_buffer *cmd_buffer, struct radeon_cmdbuf *cs);
1951
void radv_cmd_buffer_clear_attachment(struct radv_cmd_buffer *cmd_buffer,
1952
const VkClearAttachment *attachment);
1953
void radv_cmd_buffer_clear_rendering(struct radv_cmd_buffer *cmd_buffer,
1954
const VkRenderingInfo *render_info);
2011
void radv_cmd_buffer_clear_attachment(struct radv_cmd_buffer *cmd_buffer, const VkClearAttachment *attachment);
2012
void radv_cmd_buffer_clear_rendering(struct radv_cmd_buffer *cmd_buffer, const VkRenderingInfo *render_info);
1955
2013
void radv_cmd_buffer_resolve_rendering(struct radv_cmd_buffer *cmd_buffer);
1956
void radv_cmd_buffer_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer,
1957
struct radv_image_view *src_iview,
1958
VkImageLayout src_layout,
1959
struct radv_image_view *dst_iview,
1960
VkImageLayout dst_layout,
1961
const VkImageResolve2 *region);
1962
void radv_depth_stencil_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer,
1963
VkImageAspectFlags aspects,
2014
void radv_cmd_buffer_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer, struct radv_image_view *src_iview,
2015
VkImageLayout src_layout, struct radv_image_view *dst_iview,
2016
VkImageLayout dst_layout, const VkImageResolve2 *region);
2017
void radv_depth_stencil_resolve_rendering_cs(struct radv_cmd_buffer *cmd_buffer, VkImageAspectFlags aspects,
1964
2018
VkResolveModeFlagBits resolve_mode);
1965
void radv_cmd_buffer_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer,
1966
struct radv_image_view *src_iview,
1967
VkImageLayout src_layout,
1968
struct radv_image_view *dst_iview,
1969
VkImageLayout dst_layout);
1970
void radv_depth_stencil_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer,
1971
VkImageAspectFlags aspects,
2019
void radv_cmd_buffer_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer, struct radv_image_view *src_iview,
2020
VkImageLayout src_layout, struct radv_image_view *dst_iview,
2021
VkImageLayout dst_layout);
2022
void radv_depth_stencil_resolve_rendering_fs(struct radv_cmd_buffer *cmd_buffer, VkImageAspectFlags aspects,
1972
2023
VkResolveModeFlagBits resolve_mode);
1973
2024
void radv_emit_default_sample_locations(struct radeon_cmdbuf *cs, int nr_samples);
1974
2025
unsigned radv_get_default_max_sample_dist(int log_samples);
1975
2026
void radv_device_init_msaa(struct radv_device *device);
1976
2027
VkResult radv_device_init_vrs_state(struct radv_device *device);
1978
void radv_emit_write_data_imm(struct radeon_cmdbuf *cs, unsigned engine_sel, uint64_t va,
1981
void radv_update_ds_clear_metadata(struct radv_cmd_buffer *cmd_buffer,
1982
const struct radv_image_view *iview,
1983
VkClearDepthStencilValue ds_clear_value,
1984
VkImageAspectFlags aspects);
1986
void radv_update_color_clear_metadata(struct radv_cmd_buffer *cmd_buffer,
1987
const struct radv_image_view *iview, int cb_idx,
1988
uint32_t color_values[2]);
1990
bool radv_image_use_dcc_image_stores(const struct radv_device *device,
1991
const struct radv_image *image);
1992
bool radv_image_use_dcc_predication(const struct radv_device *device,
1993
const struct radv_image *image);
2029
void radv_emit_write_data_imm(struct radeon_cmdbuf *cs, unsigned engine_sel, uint64_t va, uint32_t imm);
2031
void radv_update_ds_clear_metadata(struct radv_cmd_buffer *cmd_buffer, const struct radv_image_view *iview,
2032
VkClearDepthStencilValue ds_clear_value, VkImageAspectFlags aspects);
2034
void radv_update_color_clear_metadata(struct radv_cmd_buffer *cmd_buffer, const struct radv_image_view *iview,
2035
int cb_idx, uint32_t color_values[2]);
2037
bool radv_image_use_dcc_image_stores(const struct radv_device *device, const struct radv_image *image);
2038
bool radv_image_use_dcc_predication(const struct radv_device *device, const struct radv_image *image);
1995
2040
void radv_update_fce_metadata(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
1996
2041
const VkImageSubresourceRange *range, bool value);
1998
2043
void radv_update_dcc_metadata(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
1999
2044
const VkImageSubresourceRange *range, bool value);
2000
enum radv_cmd_flush_bits radv_src_access_flush(struct radv_cmd_buffer *cmd_buffer,
2001
VkAccessFlags2 src_flags,
2045
enum radv_cmd_flush_bits radv_src_access_flush(struct radv_cmd_buffer *cmd_buffer, VkAccessFlags2 src_flags,
2002
2046
const struct radv_image *image);
2003
enum radv_cmd_flush_bits radv_dst_access_flush(struct radv_cmd_buffer *cmd_buffer,
2004
VkAccessFlags2 dst_flags,
2047
enum radv_cmd_flush_bits radv_dst_access_flush(struct radv_cmd_buffer *cmd_buffer, VkAccessFlags2 dst_flags,
2005
2048
const struct radv_image *image);
2006
2049
uint32_t radv_fill_buffer(struct radv_cmd_buffer *cmd_buffer, const struct radv_image *image,
2007
2050
struct radeon_winsys_bo *bo, uint64_t va, uint64_t size, uint32_t value);
2008
2051
void radv_copy_buffer(struct radv_cmd_buffer *cmd_buffer, struct radeon_winsys_bo *src_bo,
2009
struct radeon_winsys_bo *dst_bo, uint64_t src_offset, uint64_t dst_offset,
2052
struct radeon_winsys_bo *dst_bo, uint64_t src_offset, uint64_t dst_offset, uint64_t size);
2012
2054
void radv_cmd_buffer_trace_emit(struct radv_cmd_buffer *cmd_buffer);
2013
2055
bool radv_get_memory_fd(struct radv_device *device, struct radv_device_memory *memory, int *pFD);
2088
#define RADV_HASH_SHADER_CS_WAVE32 (1 << 1)
2089
#define RADV_HASH_SHADER_PS_WAVE32 (1 << 2)
2090
#define RADV_HASH_SHADER_GE_WAVE32 (1 << 3)
2091
#define RADV_HASH_SHADER_LLVM (1 << 4)
2092
#define RADV_HASH_SHADER_KEEP_STATISTICS (1 << 8)
2093
#define RADV_HASH_SHADER_USE_NGG_CULLING (1 << 13)
2094
#define RADV_HASH_SHADER_ROBUST_BUFFER_ACCESS (1 << 14)
2095
#define RADV_HASH_SHADER_ROBUST_BUFFER_ACCESS2 (1 << 15)
2096
#define RADV_HASH_SHADER_EMULATE_RT (1 << 16)
2097
#define RADV_HASH_SHADER_SPLIT_FMA (1 << 17)
2098
#define RADV_HASH_SHADER_RT_WAVE64 (1 << 18)
2099
#define RADV_HASH_SHADER_NO_FMASK (1 << 19)
2100
#define RADV_HASH_SHADER_NGG_STREAMOUT (1 << 20)
2126
#define RADV_HASH_SHADER_CS_WAVE32 (1 << 1)
2127
#define RADV_HASH_SHADER_PS_WAVE32 (1 << 2)
2128
#define RADV_HASH_SHADER_GE_WAVE32 (1 << 3)
2129
#define RADV_HASH_SHADER_LLVM (1 << 4)
2130
#define RADV_HASH_SHADER_KEEP_STATISTICS (1 << 8)
2131
#define RADV_HASH_SHADER_USE_NGG_CULLING (1 << 13)
2132
#define RADV_HASH_SHADER_EMULATE_RT (1 << 16)
2133
#define RADV_HASH_SHADER_SPLIT_FMA (1 << 17)
2134
#define RADV_HASH_SHADER_RT_WAVE64 (1 << 18)
2135
#define RADV_HASH_SHADER_NO_FMASK (1 << 19)
2136
#define RADV_HASH_SHADER_NGG_STREAMOUT (1 << 20)
2137
#define RADV_HASH_SHADER_NO_RT (1 << 21)
2138
#define RADV_HASH_SHADER_DUAL_BLEND_MRT1 (1 << 22)
2102
struct radv_ray_tracing_module;
2103
2140
struct radv_pipeline_key;
2105
void radv_pipeline_stage_init(const VkPipelineShaderStageCreateInfo *sinfo,
2106
struct radv_pipeline_stage *out_stage, gl_shader_stage stage);
2108
void radv_hash_shaders(unsigned char *hash, const struct radv_pipeline_stage *stages,
2109
uint32_t stage_count, const struct radv_pipeline_layout *layout,
2110
const struct radv_pipeline_key *key, uint32_t flags);
2112
void radv_hash_rt_stages(struct mesa_sha1 *ctx, const VkPipelineShaderStageCreateInfo *stages,
2113
unsigned stage_count);
2141
struct radv_ray_tracing_group;
2143
void radv_pipeline_stage_init(const VkPipelineShaderStageCreateInfo *sinfo, struct radv_pipeline_stage *out_stage,
2144
gl_shader_stage stage);
2146
void radv_hash_shaders(unsigned char *hash, const struct radv_pipeline_stage *stages, uint32_t stage_count,
2147
const struct radv_pipeline_layout *layout, const struct radv_pipeline_key *key, uint32_t flags);
2149
void radv_hash_rt_stages(struct mesa_sha1 *ctx, const VkPipelineShaderStageCreateInfo *stages, unsigned stage_count);
2115
2151
void radv_hash_rt_shaders(unsigned char *hash, const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
2116
const struct radv_pipeline_key *key,
2117
const struct radv_ray_tracing_module *groups, uint32_t flags);
2152
const struct radv_pipeline_key *key, const struct radv_ray_tracing_group *groups,
2119
2155
uint32_t radv_get_hash_flags(const struct radv_device *device, bool stats);
2444
2493
const VkAllocationCallbacks *allocator);
2446
2495
struct vk_format_description;
2447
uint32_t radv_translate_buffer_dataformat(const struct util_format_description *desc,
2448
int first_non_void);
2449
uint32_t radv_translate_buffer_numformat(const struct util_format_description *desc,
2450
int first_non_void);
2496
uint32_t radv_translate_buffer_dataformat(const struct util_format_description *desc, int first_non_void);
2497
uint32_t radv_translate_buffer_numformat(const struct util_format_description *desc, int first_non_void);
2451
2498
bool radv_is_buffer_format_supported(VkFormat format, bool *scaled);
2452
uint32_t radv_translate_colorformat(VkFormat format);
2453
uint32_t radv_translate_color_numformat(VkFormat format, const struct util_format_description *desc,
2454
int first_non_void);
2455
2499
uint32_t radv_colorformat_endian_swap(uint32_t colorformat);
2456
2500
unsigned radv_translate_colorswap(VkFormat format, bool do_endian_swap);
2457
2501
uint32_t radv_translate_dbformat(VkFormat format);
2458
uint32_t radv_translate_tex_dataformat(VkFormat format, const struct util_format_description *desc,
2459
int first_non_void);
2460
uint32_t radv_translate_tex_numformat(VkFormat format, const struct util_format_description *desc,
2461
int first_non_void);
2462
bool radv_format_pack_clear_color(VkFormat format, uint32_t clear_vals[2],
2463
VkClearColorValue *value);
2464
bool radv_is_storage_image_format_supported(struct radv_physical_device *physical_device,
2466
bool radv_is_colorbuffer_format_supported(const struct radv_physical_device *pdevice,
2467
VkFormat format, bool *blendable);
2502
uint32_t radv_translate_tex_dataformat(VkFormat format, const struct util_format_description *desc, int first_non_void);
2503
uint32_t radv_translate_tex_numformat(VkFormat format, const struct util_format_description *desc, int first_non_void);
2504
bool radv_format_pack_clear_color(VkFormat format, uint32_t clear_vals[2], VkClearColorValue *value);
2505
bool radv_is_storage_image_format_supported(const struct radv_physical_device *physical_device, VkFormat format);
2506
bool radv_is_colorbuffer_format_supported(const struct radv_physical_device *pdevice, VkFormat format, bool *blendable);
2468
2507
bool radv_dcc_formats_compatible(enum amd_gfx_level gfx_level, VkFormat format1, VkFormat format2,
2469
2508
bool *sign_reinterpret);
2470
2509
bool radv_is_atomic_format_supported(VkFormat format);
2471
bool radv_device_supports_etc(struct radv_physical_device *physical_device);
2510
bool radv_device_supports_etc(const struct radv_physical_device *physical_device);
2473
2512
static const VkImageUsageFlags RADV_IMAGE_USAGE_WRITE_BITS =
2474
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
2475
VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_STORAGE_BIT;
2513
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
2514
VK_IMAGE_USAGE_STORAGE_BIT;
2477
2516
struct radv_image_plane {
2478
2517
VkFormat format;
2761
2796
static inline bool
2762
radv_image_get_iterate256(struct radv_device *device, struct radv_image *image)
2797
radv_image_get_iterate256(const struct radv_device *device, struct radv_image *image)
2764
2799
/* ITERATE_256 is required for depth or stencil MSAA images that are TC-compatible HTILE. */
2765
2800
return device->physical_device->rad_info.gfx_level >= GFX10 &&
2767
(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT)) &&
2768
radv_image_is_tc_compat_htile(image) && image->info.samples > 1;
2801
(image->vk.usage & (VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT)) &&
2802
radv_image_is_tc_compat_htile(image) && image->vk.samples > 1;
2771
unsigned radv_image_queue_family_mask(const struct radv_image *image,
2772
enum radv_queue_family family,
2805
unsigned radv_image_queue_family_mask(const struct radv_image *image, enum radv_queue_family family,
2773
2806
enum radv_queue_family queue_family);
2775
static inline uint32_t
2776
radv_get_layerCount(const struct radv_image *image, const VkImageSubresourceRange *range)
2778
return range->layerCount == VK_REMAINING_ARRAY_LAYERS
2779
? image->info.array_size - range->baseArrayLayer
2780
: range->layerCount;
2783
static inline uint32_t
2784
radv_get_levelCount(const struct radv_image *image, const VkImageSubresourceRange *range)
2786
return range->levelCount == VK_REMAINING_MIP_LEVELS ? image->info.levels - range->baseMipLevel
2787
: range->levelCount;
2790
bool radv_image_is_renderable(struct radv_device *device, struct radv_image *image);
2808
bool radv_image_is_renderable(const struct radv_device *device, const struct radv_image *image);
2792
2810
struct radeon_bo_metadata;
2793
void radv_init_metadata(struct radv_device *device, struct radv_image *image,
2794
struct radeon_bo_metadata *metadata);
2811
void radv_init_metadata(struct radv_device *device, struct radv_image *image, struct radeon_bo_metadata *metadata);
2796
void radv_image_override_offset_stride(struct radv_device *device, struct radv_image *image,
2797
uint64_t offset, uint32_t stride);
2813
void radv_image_override_offset_stride(struct radv_device *device, struct radv_image *image, uint64_t offset,
2799
2816
union radv_descriptor {
2837
2859
const struct radeon_bo_metadata *bo_metadata;
2841
radv_image_create_layout(struct radv_device *device, struct radv_image_create_info create_info,
2842
const struct VkImageDrmFormatModifierExplicitCreateInfoEXT *mod_info,
2843
struct radv_image *image);
2862
VkResult radv_image_create_layout(struct radv_device *device, struct radv_image_create_info create_info,
2863
const struct VkImageDrmFormatModifierExplicitCreateInfoEXT *mod_info,
2864
const struct VkVideoProfileListInfoKHR *profile_list, struct radv_image *image);
2845
2866
VkResult radv_image_create(VkDevice _device, const struct radv_image_create_info *info,
2846
2867
const VkAllocationCallbacks *alloc, VkImage *pImage, bool is_internal);
2848
bool radv_are_formats_dcc_compatible(const struct radv_physical_device *pdev, const void *pNext,
2849
VkFormat format, VkImageCreateFlags flags,
2850
bool *sign_reinterpret);
2869
bool radv_are_formats_dcc_compatible(const struct radv_physical_device *pdev, const void *pNext, VkFormat format,
2870
VkImageCreateFlags flags, bool *sign_reinterpret);
2852
2872
bool vi_alpha_is_on_msb(struct radv_device *device, VkFormat format);
2854
2874
VkResult radv_image_from_gralloc(VkDevice device_h, const VkImageCreateInfo *base_info,
2855
const VkNativeBufferANDROID *gralloc_info,
2856
const VkAllocationCallbacks *alloc, VkImage *out_image_h);
2857
VkResult radv_import_ahb_memory(struct radv_device *device, struct radv_device_memory *mem,
2875
const VkNativeBufferANDROID *gralloc_info, const VkAllocationCallbacks *alloc,
2876
VkImage *out_image_h);
2877
VkResult radv_import_ahb_memory(struct radv_device *device, struct radv_device_memory *mem, unsigned priority,
2859
2878
const VkImportAndroidHardwareBufferInfoANDROID *info);
2860
VkResult radv_create_ahb_memory(struct radv_device *device, struct radv_device_memory *mem,
2861
unsigned priority, const VkMemoryAllocateInfo *pAllocateInfo);
2879
VkResult radv_create_ahb_memory(struct radv_device *device, struct radv_device_memory *mem, unsigned priority,
2880
const VkMemoryAllocateInfo *pAllocateInfo);
2863
2882
unsigned radv_ahb_format_for_vk_format(VkFormat vk_format);
3011
3010
void radv_cmd_update_descriptor_sets(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer,
3012
3011
VkDescriptorSet overrideSet, uint32_t descriptorWriteCount,
3013
const VkWriteDescriptorSet *pDescriptorWrites,
3014
uint32_t descriptorCopyCount,
3012
const VkWriteDescriptorSet *pDescriptorWrites, uint32_t descriptorCopyCount,
3015
3013
const VkCopyDescriptorSet *pDescriptorCopies);
3017
void radv_cmd_update_descriptor_set_with_template(struct radv_device *device,
3018
struct radv_cmd_buffer *cmd_buffer,
3015
void radv_cmd_update_descriptor_set_with_template(struct radv_device *device, struct radv_cmd_buffer *cmd_buffer,
3019
3016
struct radv_descriptor_set *set,
3020
3017
VkDescriptorUpdateTemplate descriptorUpdateTemplate,
3021
3018
const void *pData);
3023
void radv_meta_push_descriptor_set(struct radv_cmd_buffer *cmd_buffer,
3024
VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout _layout,
3025
uint32_t set, uint32_t descriptorWriteCount,
3020
void radv_meta_push_descriptor_set(struct radv_cmd_buffer *cmd_buffer, VkPipelineBindPoint pipelineBindPoint,
3021
VkPipelineLayout _layout, uint32_t set, uint32_t descriptorWriteCount,
3026
3022
const VkWriteDescriptorSet *pDescriptorWrites);
3028
void radv_make_texel_buffer_descriptor(struct radv_device *device, uint64_t va,
3029
VkFormat vk_format, unsigned offset, unsigned range,
3024
void radv_make_texel_buffer_descriptor(struct radv_device *device, uint64_t va, VkFormat vk_format, unsigned offset,
3025
unsigned range, uint32_t *state);
3032
3027
uint32_t radv_init_dcc(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
3033
3028
const VkImageSubresourceRange *range, uint32_t value);
3040
3035
struct radv_nir_compiler_options;
3041
3036
struct radv_shader_info;
3043
void llvm_compile_shader(const struct radv_nir_compiler_options *options,
3044
const struct radv_shader_info *info, unsigned shader_count,
3045
struct nir_shader *const *shaders, struct radv_shader_binary **binary,
3038
void llvm_compile_shader(const struct radv_nir_compiler_options *options, const struct radv_shader_info *info,
3039
unsigned shader_count, struct nir_shader *const *shaders, struct radv_shader_binary **binary,
3046
3040
const struct radv_shader_args *args);
3048
3042
/* radv_shader_info.h */
3049
3043
struct radv_shader_info;
3051
void radv_nir_shader_info_pass(struct radv_device *device, const struct nir_shader *nir,
3052
gl_shader_stage next_stage,
3053
const struct radv_pipeline_layout *layout,
3054
const struct radv_pipeline_key *pipeline_key,
3055
const enum radv_pipeline_type pipeline_type,
3056
bool consider_force_vrs,
3045
void radv_nir_shader_info_pass(struct radv_device *device, const struct nir_shader *nir, gl_shader_stage next_stage,
3046
const struct radv_pipeline_layout *layout, const struct radv_pipeline_key *pipeline_key,
3047
const enum radv_pipeline_type pipeline_type, bool consider_force_vrs,
3057
3048
struct radv_shader_info *info);
3059
3050
void radv_nir_shader_info_init(struct radv_shader_info *info);
3061
void radv_nir_shader_info_link(struct radv_device *device,
3062
const struct radv_pipeline_key *pipeline_key,
3052
void radv_nir_shader_info_link(struct radv_device *device, const struct radv_pipeline_key *pipeline_key,
3063
3053
struct radv_pipeline_stage *stages);
3065
bool radv_thread_trace_init(struct radv_device *device);
3066
void radv_thread_trace_finish(struct radv_device *device);
3067
bool radv_begin_thread_trace(struct radv_queue *queue);
3068
bool radv_end_thread_trace(struct radv_queue *queue);
3069
bool radv_get_thread_trace(struct radv_queue *queue, struct ac_thread_trace *thread_trace);
3070
void radv_emit_thread_trace_userdata(struct radv_cmd_buffer *cmd_buffer, const void *data,
3071
uint32_t num_dwords);
3055
bool radv_sqtt_init(struct radv_device *device);
3056
void radv_sqtt_finish(struct radv_device *device);
3057
bool radv_begin_sqtt(struct radv_queue *queue);
3058
bool radv_end_sqtt(struct radv_queue *queue);
3059
bool radv_get_sqtt_trace(struct radv_queue *queue, struct ac_sqtt_trace *sqtt_trace);
3060
void radv_reset_sqtt_trace(struct radv_device *device);
3061
void radv_emit_sqtt_userdata(const struct radv_cmd_buffer *cmd_buffer, const void *data, uint32_t num_dwords);
3072
3062
bool radv_is_instruction_timing_enabled(void);
3074
void radv_emit_inhibit_clockgating(struct radv_device *device, struct radeon_cmdbuf *cs,
3076
void radv_emit_spi_config_cntl(struct radv_device *device, struct radeon_cmdbuf *cs, bool enable);
3078
int radv_rra_trace_frame(void);
3079
char *radv_rra_trace_trigger_file(void);
3080
bool radv_rra_trace_enabled(void);
3063
bool radv_sqtt_sample_clocks(struct radv_device *device);
3065
void radv_emit_inhibit_clockgating(const struct radv_device *device, struct radeon_cmdbuf *cs, bool inhibit);
3066
void radv_emit_spi_config_cntl(const struct radv_device *device, struct radeon_cmdbuf *cs, bool enable);
3082
3068
void radv_rra_trace_init(struct radv_device *device);
3084
3070
VkResult radv_rra_dump_trace(VkQueue vk_queue, char *filename);
3085
3071
void radv_rra_trace_finish(VkDevice vk_device, struct radv_rra_trace_data *data);
3087
bool radv_sdma_copy_image(struct radv_device *device, struct radeon_cmdbuf *cs,
3088
struct radv_image *image, struct radv_buffer *buffer,
3089
const VkBufferImageCopy2 *region);
3090
void radv_sdma_copy_buffer(struct radv_device *device, struct radeon_cmdbuf *cs, uint64_t src_va,
3091
uint64_t dst_va, uint64_t size);
3073
bool radv_sdma_copy_image(struct radv_device *device, struct radeon_cmdbuf *cs, struct radv_image *image,
3074
struct radv_buffer *buffer, const VkBufferImageCopy2 *region);
3075
void radv_sdma_copy_buffer(struct radv_device *device, struct radeon_cmdbuf *cs, uint64_t src_va, uint64_t dst_va,
3093
3078
void radv_memory_trace_init(struct radv_device *device);
3094
void radv_rmv_log_bo_allocate(struct radv_device *device, struct radeon_winsys_bo *bo,
3095
uint32_t size, bool is_internal);
3079
void radv_rmv_log_bo_allocate(struct radv_device *device, struct radeon_winsys_bo *bo, uint32_t size, bool is_internal);
3096
3080
void radv_rmv_log_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo);
3097
3081
void radv_rmv_log_heap_create(struct radv_device *device, VkDeviceMemory heap, bool is_internal,
3098
3082
VkMemoryAllocateFlags alloc_flags);
3099
3083
void radv_rmv_log_buffer_bind(struct radv_device *device, VkBuffer _buffer);
3100
void radv_rmv_log_image_create(struct radv_device *device, const VkImageCreateInfo *create_info,
3101
bool is_internal, VkImage _image);
3084
void radv_rmv_log_image_create(struct radv_device *device, const VkImageCreateInfo *create_info, bool is_internal,
3102
3086
void radv_rmv_log_image_bind(struct radv_device *device, VkImage _image);
3103
3087
void radv_rmv_log_query_pool_create(struct radv_device *device, VkQueryPool pool, bool is_internal);
3104
3088
void radv_rmv_log_command_buffer_bo_create(struct radv_device *device, struct radeon_winsys_bo *bo,
3105
uint32_t executable_size, uint32_t data_size,
3106
uint32_t scratch_size);
3107
void radv_rmv_log_command_buffer_bo_destroy(struct radv_device *device,
3108
struct radeon_winsys_bo *bo);
3109
void radv_rmv_log_border_color_palette_create(struct radv_device *device,
3110
struct radeon_winsys_bo *bo);
3111
void radv_rmv_log_border_color_palette_destroy(struct radv_device *device,
3112
struct radeon_winsys_bo *bo);
3113
void radv_rmv_log_sparse_add_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo,
3115
void radv_rmv_log_sparse_remove_residency(struct radv_device *device,
3116
struct radeon_winsys_bo *src_bo, uint64_t offset);
3117
void radv_rmv_log_descriptor_pool_create(struct radv_device *device,
3118
const VkDescriptorPoolCreateInfo *create_info,
3089
uint32_t executable_size, uint32_t data_size, uint32_t scratch_size);
3090
void radv_rmv_log_command_buffer_bo_destroy(struct radv_device *device, struct radeon_winsys_bo *bo);
3091
void radv_rmv_log_border_color_palette_create(struct radv_device *device, struct radeon_winsys_bo *bo);
3092
void radv_rmv_log_border_color_palette_destroy(struct radv_device *device, struct radeon_winsys_bo *bo);
3093
void radv_rmv_log_sparse_add_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset);
3094
void radv_rmv_log_sparse_remove_residency(struct radv_device *device, struct radeon_winsys_bo *src_bo, uint64_t offset);
3095
void radv_rmv_log_descriptor_pool_create(struct radv_device *device, const VkDescriptorPoolCreateInfo *create_info,
3119
3096
VkDescriptorPool pool, bool is_internal);
3120
3097
void radv_rmv_log_graphics_pipeline_create(struct radv_device *device, VkPipelineCreateFlags flags,
3121
3098
struct radv_pipeline *pipeline, bool is_internal);
3122
3099
void radv_rmv_log_compute_pipeline_create(struct radv_device *device, VkPipelineCreateFlags flags,
3123
3100
struct radv_pipeline *pipeline, bool is_internal);
3124
void radv_rmv_log_event_create(struct radv_device *device, VkEvent event, VkEventCreateFlags flags,
3101
void radv_rmv_log_event_create(struct radv_device *device, VkEvent event, VkEventCreateFlags flags, bool is_internal);
3126
3102
void radv_rmv_log_resource_destroy(struct radv_device *device, uint64_t handle);
3127
3103
void radv_rmv_log_submit(struct radv_device *device, enum amd_ip_type type);
3128
void radv_rmv_fill_device_info(struct radv_physical_device *device,
3129
struct vk_rmv_device_info *info);
3104
void radv_rmv_fill_device_info(const struct radv_physical_device *device, struct vk_rmv_device_info *info);
3130
3105
void radv_rmv_collect_trace_events(struct radv_device *device);
3131
3106
void radv_memory_trace_finish(struct radv_device *device);
3133
3108
VkResult radv_create_buffer(struct radv_device *device, const VkBufferCreateInfo *pCreateInfo,
3134
const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer,
3109
const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer, bool is_internal);
3136
3110
VkResult radv_alloc_memory(struct radv_device *device, const VkMemoryAllocateInfo *pAllocateInfo,
3137
const VkAllocationCallbacks *pAllocator, VkDeviceMemory *pMem,
3139
VkResult radv_create_query_pool(struct radv_device *device,
3140
const VkQueryPoolCreateInfo *pCreateInfo,
3141
const VkAllocationCallbacks *pAllocator, VkQueryPool *pQueryPool,
3143
VkResult radv_create_descriptor_pool(struct radv_device *device,
3144
const VkDescriptorPoolCreateInfo *pCreateInfo,
3145
const VkAllocationCallbacks *pAllocator,
3146
VkDescriptorPool *pDescriptorPool, bool is_internal);
3111
const VkAllocationCallbacks *pAllocator, VkDeviceMemory *pMem, bool is_internal);
3112
VkResult radv_create_query_pool(struct radv_device *device, const VkQueryPoolCreateInfo *pCreateInfo,
3113
const VkAllocationCallbacks *pAllocator, VkQueryPool *pQueryPool, bool is_internal);
3114
VkResult radv_create_descriptor_pool(struct radv_device *device, const VkDescriptorPoolCreateInfo *pCreateInfo,
3115
const VkAllocationCallbacks *pAllocator, VkDescriptorPool *pDescriptorPool,
3147
3117
VkResult radv_create_event(struct radv_device *device, const VkEventCreateInfo *pCreateInfo,
3148
const VkAllocationCallbacks *pAllocator, VkEvent *pEvent,
3118
const VkAllocationCallbacks *pAllocator, VkEvent *pEvent, bool is_internal);
3151
3120
/* radv_sqtt_layer_.c */
3152
3121
struct radv_barrier_data {
3639
3613
static inline bool
3640
3614
radv_has_shader_buffer_float_minmax(const struct radv_physical_device *pdevice, unsigned bitsize)
3642
return (pdevice->rad_info.gfx_level <= GFX7 && !pdevice->use_llvm) ||
3643
pdevice->rad_info.gfx_level == GFX10 || pdevice->rad_info.gfx_level == GFX10_3 ||
3644
(pdevice->rad_info.gfx_level == GFX11 && bitsize == 32);
3616
return (pdevice->rad_info.gfx_level <= GFX7 && !pdevice->use_llvm) || pdevice->rad_info.gfx_level == GFX10 ||
3617
pdevice->rad_info.gfx_level == GFX10_3 || (pdevice->rad_info.gfx_level == GFX11 && bitsize == 32);
3621
radv_has_pops(const struct radv_physical_device *pdevice)
3623
return pdevice->rad_info.gfx_level >= GFX9 && !pdevice->use_llvm;
3647
3626
/* radv_perfcounter.c */
3648
3627
void radv_perfcounter_emit_shaders(struct radeon_cmdbuf *cs, unsigned shaders);
3649
3628
void radv_perfcounter_emit_spm_reset(struct radeon_cmdbuf *cs);
3650
void radv_perfcounter_emit_spm_start(struct radv_device *device, struct radeon_cmdbuf *cs,
3652
void radv_perfcounter_emit_spm_stop(struct radv_device *device, struct radeon_cmdbuf *cs,
3629
void radv_perfcounter_emit_spm_start(struct radv_device *device, struct radeon_cmdbuf *cs, int family);
3630
void radv_perfcounter_emit_spm_stop(struct radv_device *device, struct radeon_cmdbuf *cs, int family);
3655
3632
/* radv_spm.c */
3656
3633
bool radv_spm_init(struct radv_device *device);
3657
3634
void radv_spm_finish(struct radv_device *device);
3658
3635
void radv_emit_spm_setup(struct radv_device *device, struct radeon_cmdbuf *cs);
3660
void radv_destroy_graphics_pipeline(struct radv_device *device,
3661
struct radv_graphics_pipeline *pipeline);
3662
void radv_destroy_graphics_lib_pipeline(struct radv_device *device,
3663
struct radv_graphics_lib_pipeline *pipeline);
3664
void radv_destroy_compute_pipeline(struct radv_device *device,
3665
struct radv_compute_pipeline *pipeline);
3666
void radv_destroy_ray_tracing_lib_pipeline(struct radv_device *device,
3667
struct radv_ray_tracing_lib_pipeline *pipeline);
3668
void radv_destroy_ray_tracing_pipeline(struct radv_device *device,
3669
struct radv_ray_tracing_pipeline *pipeline);
3671
#define RADV_FROM_HANDLE(__radv_type, __name, __handle) \
3672
VK_FROM_HANDLE(__radv_type, __name, __handle)
3674
VK_DEFINE_HANDLE_CASTS(radv_cmd_buffer, vk.base, VkCommandBuffer,
3675
VK_OBJECT_TYPE_COMMAND_BUFFER)
3637
void radv_destroy_graphics_pipeline(struct radv_device *device, struct radv_graphics_pipeline *pipeline);
3638
void radv_destroy_graphics_lib_pipeline(struct radv_device *device, struct radv_graphics_lib_pipeline *pipeline);
3639
void radv_destroy_compute_pipeline(struct radv_device *device, struct radv_compute_pipeline *pipeline);
3640
void radv_destroy_ray_tracing_pipeline(struct radv_device *device, struct radv_ray_tracing_pipeline *pipeline);
3642
#define RADV_FROM_HANDLE(__radv_type, __name, __handle) VK_FROM_HANDLE(__radv_type, __name, __handle)
3644
VK_DEFINE_HANDLE_CASTS(radv_cmd_buffer, vk.base, VkCommandBuffer, VK_OBJECT_TYPE_COMMAND_BUFFER)
3676
3645
VK_DEFINE_HANDLE_CASTS(radv_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE)
3677
3646
VK_DEFINE_HANDLE_CASTS(radv_instance, vk.base, VkInstance, VK_OBJECT_TYPE_INSTANCE)
3678
VK_DEFINE_HANDLE_CASTS(radv_physical_device, vk.base, VkPhysicalDevice,
3679
VK_OBJECT_TYPE_PHYSICAL_DEVICE)
3647
VK_DEFINE_HANDLE_CASTS(radv_physical_device, vk.base, VkPhysicalDevice, VK_OBJECT_TYPE_PHYSICAL_DEVICE)
3680
3648
VK_DEFINE_HANDLE_CASTS(radv_queue, vk.base, VkQueue, VK_OBJECT_TYPE_QUEUE)
3681
3649
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_buffer, vk.base, VkBuffer, VK_OBJECT_TYPE_BUFFER)
3682
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_buffer_view, base, VkBufferView,
3683
VK_OBJECT_TYPE_BUFFER_VIEW)
3684
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_pool, base, VkDescriptorPool,
3685
VK_OBJECT_TYPE_DESCRIPTOR_POOL)
3686
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_set, header.base, VkDescriptorSet,
3687
VK_OBJECT_TYPE_DESCRIPTOR_SET)
3650
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_buffer_view, base, VkBufferView, VK_OBJECT_TYPE_BUFFER_VIEW)
3651
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_pool, base, VkDescriptorPool, VK_OBJECT_TYPE_DESCRIPTOR_POOL)
3652
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_set, header.base, VkDescriptorSet, VK_OBJECT_TYPE_DESCRIPTOR_SET)
3688
3653
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_set_layout, vk.base, VkDescriptorSetLayout,
3689
3654
VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT)
3690
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_update_template, base,
3691
VkDescriptorUpdateTemplate,
3655
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_descriptor_update_template, base, VkDescriptorUpdateTemplate,
3692
3656
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)
3693
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_device_memory, base, VkDeviceMemory,
3694
VK_OBJECT_TYPE_DEVICE_MEMORY)
3657
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_device_memory, base, VkDeviceMemory, VK_OBJECT_TYPE_DEVICE_MEMORY)
3695
3658
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_event, base, VkEvent, VK_OBJECT_TYPE_EVENT)
3696
3659
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image, vk.base, VkImage, VK_OBJECT_TYPE_IMAGE)
3697
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image_view, vk.base, VkImageView,
3698
VK_OBJECT_TYPE_IMAGE_VIEW);
3660
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image_view, vk.base, VkImageView, VK_OBJECT_TYPE_IMAGE_VIEW);
3699
3661
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_indirect_command_layout, base, VkIndirectCommandsLayoutNV,
3700
3662
VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV)
3701
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_pipeline, base, VkPipeline,
3702
VK_OBJECT_TYPE_PIPELINE)
3703
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_pipeline_layout, base, VkPipelineLayout,
3704
VK_OBJECT_TYPE_PIPELINE_LAYOUT)
3705
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_query_pool, base, VkQueryPool,
3706
VK_OBJECT_TYPE_QUERY_POOL)
3707
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_sampler, base, VkSampler,
3708
VK_OBJECT_TYPE_SAMPLER)
3663
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_pipeline, base, VkPipeline, VK_OBJECT_TYPE_PIPELINE)
3664
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_pipeline_layout, base, VkPipelineLayout, VK_OBJECT_TYPE_PIPELINE_LAYOUT)
3665
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_query_pool, base, VkQueryPool, VK_OBJECT_TYPE_QUERY_POOL)
3666
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_sampler, base, VkSampler, VK_OBJECT_TYPE_SAMPLER)
3710
3668
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_video_session, vk.base, VkVideoSessionKHR, VK_OBJECT_TYPE_VIDEO_SESSION_KHR)
3711
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_video_session_params, vk.base, VkVideoSessionParametersKHR, VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR)
3669
VK_DEFINE_NONDISP_HANDLE_CASTS(radv_video_session_params, vk.base, VkVideoSessionParametersKHR,
3670
VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR)
3713
3672
#ifdef __cplusplus