anv: rename host only descriptor internal flag
We add an assert to verify that those are not bound. v2: Drop != 0 (Tapani) Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Rohan Garg <rohan.garg@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15241>
This commit is contained in:

committed by
Marge Bot

parent
87f59b18cf
commit
e12698724e
@@ -993,6 +993,17 @@ anv_cmd_buffer_bind_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
|
|||||||
uint32_t *dynamic_offset_count,
|
uint32_t *dynamic_offset_count,
|
||||||
const uint32_t **dynamic_offsets)
|
const uint32_t **dynamic_offsets)
|
||||||
{
|
{
|
||||||
|
/* Either we have no pool because it's a push descriptor or the pool is not
|
||||||
|
* host only :
|
||||||
|
*
|
||||||
|
* VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616:
|
||||||
|
*
|
||||||
|
* "Each element of pDescriptorSets must not have been allocated from a
|
||||||
|
* VkDescriptorPool with the
|
||||||
|
* VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE flag set"
|
||||||
|
*/
|
||||||
|
assert(!set->pool || !set->pool->host_only);
|
||||||
|
|
||||||
struct anv_descriptor_set_layout *set_layout =
|
struct anv_descriptor_set_layout *set_layout =
|
||||||
layout->set[set_index].layout;
|
layout->set[set_index].layout;
|
||||||
|
|
||||||
|
@@ -944,7 +944,7 @@ VkResult anv_CreateDescriptorPool(
|
|||||||
pool->size = pool_size;
|
pool->size = pool_size;
|
||||||
pool->next = 0;
|
pool->next = 0;
|
||||||
pool->free_list = EMPTY;
|
pool->free_list = EMPTY;
|
||||||
pool->allocate_surface_states = (pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE) == 0;
|
pool->host_only = pCreateInfo->flags & VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE;
|
||||||
|
|
||||||
if (descriptor_bo_size > 0) {
|
if (descriptor_bo_size > 0) {
|
||||||
VkResult result = anv_device_alloc_bo(device,
|
VkResult result = anv_device_alloc_bo(device,
|
||||||
@@ -1091,7 +1091,7 @@ struct surface_state_free_list_entry {
|
|||||||
static struct anv_state
|
static struct anv_state
|
||||||
anv_descriptor_pool_alloc_state(struct anv_descriptor_pool *pool)
|
anv_descriptor_pool_alloc_state(struct anv_descriptor_pool *pool)
|
||||||
{
|
{
|
||||||
assert(pool->allocate_surface_states);
|
assert(!pool->host_only);
|
||||||
|
|
||||||
struct surface_state_free_list_entry *entry =
|
struct surface_state_free_list_entry *entry =
|
||||||
pool->surface_state_free_list;
|
pool->surface_state_free_list;
|
||||||
@@ -1174,7 +1174,7 @@ anv_descriptor_set_create(struct anv_device *device,
|
|||||||
anv_isl_format_for_descriptor_type(device,
|
anv_isl_format_for_descriptor_type(device,
|
||||||
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
|
VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER);
|
||||||
|
|
||||||
if (pool->allocate_surface_states) {
|
if (!pool->host_only) {
|
||||||
set->desc_surface_state = anv_descriptor_pool_alloc_state(pool);
|
set->desc_surface_state = anv_descriptor_pool_alloc_state(pool);
|
||||||
anv_fill_buffer_surface_state(device, set->desc_surface_state, format,
|
anv_fill_buffer_surface_state(device, set->desc_surface_state, format,
|
||||||
ISL_SURF_USAGE_CONSTANT_BUFFER_BIT,
|
ISL_SURF_USAGE_CONSTANT_BUFFER_BIT,
|
||||||
@@ -1230,7 +1230,7 @@ anv_descriptor_set_create(struct anv_device *device,
|
|||||||
/* Allocate null surface state for the buffer views since
|
/* Allocate null surface state for the buffer views since
|
||||||
* we lazy allocate this in the write anyway.
|
* we lazy allocate this in the write anyway.
|
||||||
*/
|
*/
|
||||||
if (pool->allocate_surface_states) {
|
if (!pool->host_only) {
|
||||||
for (uint32_t b = 0; b < set->buffer_view_count; b++) {
|
for (uint32_t b = 0; b < set->buffer_view_count; b++) {
|
||||||
set->buffer_views[b].surface_state =
|
set->buffer_views[b].surface_state =
|
||||||
anv_descriptor_pool_alloc_state(pool);
|
anv_descriptor_pool_alloc_state(pool);
|
||||||
@@ -1259,7 +1259,7 @@ anv_descriptor_set_destroy(struct anv_device *device,
|
|||||||
anv_descriptor_pool_free_state(pool, set->desc_surface_state);
|
anv_descriptor_pool_free_state(pool, set->desc_surface_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pool->allocate_surface_states) {
|
if (!pool->host_only) {
|
||||||
for (uint32_t b = 0; b < set->buffer_view_count; b++) {
|
for (uint32_t b = 0; b < set->buffer_view_count; b++) {
|
||||||
if (set->buffer_views[b].surface_state.alloc_size)
|
if (set->buffer_views[b].surface_state.alloc_size)
|
||||||
anv_descriptor_pool_free_state(pool, set->buffer_views[b].surface_state);
|
anv_descriptor_pool_free_state(pool, set->buffer_views[b].surface_state);
|
||||||
@@ -1417,7 +1417,7 @@ anv_descriptor_set_write_image_view(struct anv_device *device,
|
|||||||
.sampler = sampler,
|
.sampler = sampler,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (set->pool && !set->pool->allocate_surface_states)
|
if (set->pool && set->pool->host_only)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
void *desc_map = set->desc_mem.map + bind_layout->descriptor_offset +
|
void *desc_map = set->desc_mem.map + bind_layout->descriptor_offset +
|
||||||
@@ -1522,7 +1522,7 @@ anv_descriptor_set_write_buffer_view(struct anv_device *device,
|
|||||||
.buffer_view = buffer_view,
|
.buffer_view = buffer_view,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (set->pool && !set->pool->allocate_surface_states)
|
if (set->pool && set->pool->host_only)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
enum anv_descriptor_data data =
|
enum anv_descriptor_data data =
|
||||||
@@ -1590,7 +1590,7 @@ anv_descriptor_set_write_buffer(struct anv_device *device,
|
|||||||
.buffer = buffer,
|
.buffer = buffer,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (set->pool && !set->pool->allocate_surface_states)
|
if (set->pool && set->pool->host_only)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
void *desc_map = set->desc_mem.map + bind_layout->descriptor_offset +
|
void *desc_map = set->desc_mem.map + bind_layout->descriptor_offset +
|
||||||
@@ -1693,7 +1693,7 @@ anv_descriptor_set_write_acceleration_structure(struct anv_device *device,
|
|||||||
.accel_struct = accel,
|
.accel_struct = accel,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (set->pool && !set->pool->allocate_surface_states)
|
if (set->pool && set->pool->host_only)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
struct anv_address_range_descriptor desc_data = { };
|
struct anv_address_range_descriptor desc_data = { };
|
||||||
|
@@ -2021,7 +2021,7 @@ struct anv_descriptor_pool {
|
|||||||
|
|
||||||
struct list_head desc_sets;
|
struct list_head desc_sets;
|
||||||
|
|
||||||
bool allocate_surface_states;
|
bool host_only;
|
||||||
|
|
||||||
char data[0];
|
char data[0];
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user