mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-30 21:21:39 +02:00
nvk: Move descrptor structs into a separate header
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30580>
This commit is contained in:
parent
8244b87822
commit
1940c8e543
8 changed files with 101 additions and 87 deletions
|
|
@ -23,6 +23,7 @@ nvk_files = files(
|
|||
'nvk_descriptor_set_layout.h',
|
||||
'nvk_descriptor_table.c',
|
||||
'nvk_descriptor_table.h',
|
||||
'nvk_descriptor_types.h',
|
||||
'nvk_device.c',
|
||||
'nvk_device.h',
|
||||
'nvk_device_memory.c',
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
#include "nvk_buffer.h"
|
||||
#include "nvk_cmd_pool.h"
|
||||
#include "nvk_descriptor_set.h"
|
||||
#include "nvk_descriptor_set_layout.h"
|
||||
#include "nvk_device.h"
|
||||
#include "nvk_device_memory.h"
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
*/
|
||||
#include "nvk_buffer.h"
|
||||
#include "nvk_cmd_buffer.h"
|
||||
#include "nvk_descriptor_set.h"
|
||||
#include "nvk_device.h"
|
||||
#include "nvk_entrypoints.h"
|
||||
#include "nvk_mme.h"
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
#include "nvk_buffer.h"
|
||||
#include "nvk_cmd_buffer.h"
|
||||
#include "nvk_descriptor_set.h"
|
||||
#include "nvk_device.h"
|
||||
#include "nvk_entrypoints.h"
|
||||
#include "nvk_image.h"
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "nvk_private.h"
|
||||
|
||||
#include "nvk_descriptor_types.h"
|
||||
#include "nvk_device.h"
|
||||
#include "nvk_physical_device.h"
|
||||
#include "vk_object.h"
|
||||
|
|
@ -18,90 +19,6 @@
|
|||
struct nvk_descriptor_set_layout;
|
||||
struct nvkmd_mem;
|
||||
|
||||
#define NVK_IMAGE_DESCRIPTOR_IMAGE_INDEX_MASK 0x000fffff
|
||||
#define NVK_IMAGE_DESCRIPTOR_SAMPLER_INDEX_MASK 0xfff00000
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_sampled_image_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned sampler_index:12;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_sampled_image_descriptor) == 4,
|
||||
"nvk_sampled_image_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_storage_image_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned sw_log2:2;
|
||||
unsigned sh_log2:2;
|
||||
unsigned pad:8;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_storage_image_descriptor) == 4,
|
||||
"nvk_storage_image_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_buffer_view_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned pad:12;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_buffer_view_descriptor) == 4,
|
||||
"nvk_buffer_view_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_bindless_cbuf {
|
||||
uint64_t base_addr_shift_4:45;
|
||||
uint64_t size_shift_4:19;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_bindless_cbuf) == 8,
|
||||
"nvk_bindless_cbuf has no holes");
|
||||
|
||||
/* This has to match nir_address_format_64bit_bounded_global */
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_buffer_address {
|
||||
uint64_t base_addr;
|
||||
uint32_t size;
|
||||
uint32_t zero; /* Must be zero! */
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_buffer_address) == 16,
|
||||
"nvk_buffer_address has no holes");
|
||||
|
||||
union nvk_buffer_descriptor {
|
||||
struct nvk_buffer_address addr;
|
||||
struct nvk_bindless_cbuf cbuf;
|
||||
};
|
||||
|
||||
static inline bool
|
||||
nvk_use_bindless_cbuf(const struct nv_device_info *info)
|
||||
{
|
||||
return info->cls_eng3d >= 0xC597 /* TURING_A */;
|
||||
}
|
||||
|
||||
static inline struct nvk_buffer_address
|
||||
nvk_ubo_descriptor_addr(const struct nvk_physical_device *pdev,
|
||||
union nvk_buffer_descriptor desc)
|
||||
{
|
||||
if (nvk_use_bindless_cbuf(&pdev->info)) {
|
||||
return (struct nvk_buffer_address) {
|
||||
.base_addr = desc.cbuf.base_addr_shift_4 << 4,
|
||||
.size = desc.cbuf.size_shift_4 << 4,
|
||||
};
|
||||
} else {
|
||||
return desc.addr;
|
||||
}
|
||||
}
|
||||
|
||||
#define NVK_BUFFER_ADDRESS_NULL ((struct nvk_buffer_address) { .size = 0 })
|
||||
|
||||
struct nvk_descriptor_pool {
|
||||
struct vk_object_base base;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "nvk_descriptor_set_layout.h"
|
||||
|
||||
#include "nvk_descriptor_set.h"
|
||||
#include "nvk_descriptor_types.h"
|
||||
#include "nvk_device.h"
|
||||
#include "nvk_entrypoints.h"
|
||||
#include "nvk_physical_device.h"
|
||||
|
|
|
|||
96
src/nouveau/vulkan/nvk_descriptor_types.h
Normal file
96
src/nouveau/vulkan/nvk_descriptor_types.h
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
/*
|
||||
* Copyright © 2024 Collabora Ltd. and Red Hat Inc.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
#ifndef NVK_DESCRIPTOR_TYPES
|
||||
#define NVK_DESCRIPTOR_TYPES 1
|
||||
|
||||
#include "nvk_private.h"
|
||||
|
||||
#include "nvk_physical_device.h"
|
||||
|
||||
#define NVK_IMAGE_DESCRIPTOR_IMAGE_INDEX_MASK 0x000fffff
|
||||
#define NVK_IMAGE_DESCRIPTOR_SAMPLER_INDEX_MASK 0xfff00000
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_sampled_image_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned sampler_index:12;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_sampled_image_descriptor) == 4,
|
||||
"nvk_sampled_image_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_storage_image_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned sw_log2:2;
|
||||
unsigned sh_log2:2;
|
||||
unsigned pad:8;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_storage_image_descriptor) == 4,
|
||||
"nvk_storage_image_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_buffer_view_descriptor {
|
||||
unsigned image_index:20;
|
||||
unsigned pad:12;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_buffer_view_descriptor) == 4,
|
||||
"nvk_buffer_view_descriptor has no holes");
|
||||
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_bindless_cbuf {
|
||||
uint64_t base_addr_shift_4:45;
|
||||
uint64_t size_shift_4:19;
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_bindless_cbuf) == 8,
|
||||
"nvk_bindless_cbuf has no holes");
|
||||
|
||||
/* This has to match nir_address_format_64bit_bounded_global */
|
||||
PRAGMA_DIAGNOSTIC_PUSH
|
||||
PRAGMA_DIAGNOSTIC_ERROR(-Wpadded)
|
||||
struct nvk_buffer_address {
|
||||
uint64_t base_addr;
|
||||
uint32_t size;
|
||||
uint32_t zero; /* Must be zero! */
|
||||
};
|
||||
PRAGMA_DIAGNOSTIC_POP
|
||||
static_assert(sizeof(struct nvk_buffer_address) == 16,
|
||||
"nvk_buffer_address has no holes");
|
||||
|
||||
#define NVK_BUFFER_ADDRESS_NULL ((struct nvk_buffer_address) { .size = 0 })
|
||||
|
||||
union nvk_buffer_descriptor {
|
||||
struct nvk_buffer_address addr;
|
||||
struct nvk_bindless_cbuf cbuf;
|
||||
};
|
||||
|
||||
static inline bool
|
||||
nvk_use_bindless_cbuf(const struct nv_device_info *info)
|
||||
{
|
||||
return info->cls_eng3d >= 0xC597 /* TURING_A */;
|
||||
}
|
||||
|
||||
static inline struct nvk_buffer_address
|
||||
nvk_ubo_descriptor_addr(const struct nvk_physical_device *pdev,
|
||||
union nvk_buffer_descriptor desc)
|
||||
{
|
||||
if (nvk_use_bindless_cbuf(&pdev->info)) {
|
||||
return (struct nvk_buffer_address) {
|
||||
.base_addr = desc.cbuf.base_addr_shift_4 << 4,
|
||||
.size = desc.cbuf.size_shift_4 << 4,
|
||||
};
|
||||
} else {
|
||||
return desc.addr;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* NVK_DESCRIPTOR_TYPES */
|
||||
|
|
@ -3,8 +3,8 @@
|
|||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
#include "nvk_cmd_buffer.h"
|
||||
#include "nvk_descriptor_set.h"
|
||||
#include "nvk_descriptor_set_layout.h"
|
||||
#include "nvk_descriptor_types.h"
|
||||
#include "nvk_shader.h"
|
||||
|
||||
#include "vk_pipeline.h"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue