mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 13:28:06 +02:00
iris: Add and use use_surface_state
This helper simplifies some repeated logic. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14806>
This commit is contained in:
parent
89ebdd67c4
commit
eb51fd0414
1 changed files with 16 additions and 23 deletions
|
|
@ -4878,6 +4878,18 @@ update_clear_value(struct iris_context *ice,
|
|||
#endif
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
use_surface_state(struct iris_batch *batch,
|
||||
struct iris_surface_state *surf_state,
|
||||
enum isl_aux_usage aux_usage)
|
||||
{
|
||||
iris_use_pinned_bo(batch, iris_resource_bo(surf_state->ref.res), false,
|
||||
IRIS_DOMAIN_NONE);
|
||||
|
||||
return surf_state->ref.offset +
|
||||
surf_state_offset_for_aux(surf_state->aux_usages, aux_usage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a surface to the validation list, as well as the buffer containing
|
||||
* the corresponding SURFACE_STATE.
|
||||
|
|
@ -4895,7 +4907,6 @@ use_surface(struct iris_context *ice,
|
|||
{
|
||||
struct iris_surface *surf = (void *) p_surf;
|
||||
struct iris_resource *res = (void *) p_surf->texture;
|
||||
uint32_t offset = 0;
|
||||
|
||||
if (GFX_VER == 8 && is_read_surface && !surf->surface_state_read.ref.res) {
|
||||
upload_surface_states(ice->state.surface_uploader,
|
||||
|
|
@ -4926,22 +4937,10 @@ use_surface(struct iris_context *ice,
|
|||
iris_use_pinned_bo(batch, res->bo, writeable, access);
|
||||
|
||||
if (GFX_VER == 8 && is_read_surface) {
|
||||
iris_use_pinned_bo(batch, iris_resource_bo(surf->surface_state_read.ref.res), false,
|
||||
IRIS_DOMAIN_NONE);
|
||||
return use_surface_state(batch, &surf->surface_state_read, aux_usage);
|
||||
} else {
|
||||
iris_use_pinned_bo(batch, iris_resource_bo(surf->surface_state.ref.res), false,
|
||||
IRIS_DOMAIN_NONE);
|
||||
return use_surface_state(batch, &surf->surface_state, aux_usage);
|
||||
}
|
||||
|
||||
offset = (GFX_VER == 8 && is_read_surface)
|
||||
? surf->surface_state_read.ref.offset
|
||||
: surf->surface_state.ref.offset;
|
||||
|
||||
return offset +
|
||||
surf_state_offset_for_aux((GFX_VER == 8 && is_read_surface)
|
||||
? surf->surface_state_read.aux_usages
|
||||
: surf->surface_state.aux_usages,
|
||||
aux_usage);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
|
|
@ -4973,11 +4972,8 @@ use_sampler_view(struct iris_context *ice,
|
|||
}
|
||||
|
||||
iris_use_pinned_bo(batch, isv->res->bo, false, IRIS_DOMAIN_OTHER_READ);
|
||||
iris_use_pinned_bo(batch, iris_resource_bo(isv->surface_state.ref.res), false,
|
||||
IRIS_DOMAIN_NONE);
|
||||
|
||||
return isv->surface_state.ref.offset +
|
||||
surf_state_offset_for_aux(isv->surface_state.aux_usages, aux_usage);
|
||||
return use_surface_state(batch, &isv->surface_state, aux_usage);
|
||||
}
|
||||
|
||||
static uint32_t
|
||||
|
|
@ -5011,8 +5007,6 @@ use_image(struct iris_batch *batch, struct iris_context *ice,
|
|||
bool write = iv->base.shader_access & PIPE_IMAGE_ACCESS_WRITE;
|
||||
|
||||
iris_use_pinned_bo(batch, res->bo, write, IRIS_DOMAIN_NONE);
|
||||
iris_use_pinned_bo(batch, iris_resource_bo(iv->surface_state.ref.res),
|
||||
false, IRIS_DOMAIN_NONE);
|
||||
|
||||
if (res->aux.bo)
|
||||
iris_use_pinned_bo(batch, res->aux.bo, write, IRIS_DOMAIN_NONE);
|
||||
|
|
@ -5020,8 +5014,7 @@ use_image(struct iris_batch *batch, struct iris_context *ice,
|
|||
enum isl_aux_usage aux_usage =
|
||||
iris_image_view_aux_usage(ice, &iv->base, info);
|
||||
|
||||
return iv->surface_state.ref.offset +
|
||||
surf_state_offset_for_aux(iv->surface_state.aux_usages, aux_usage);
|
||||
return use_surface_state(batch, &iv->surface_state, aux_usage);
|
||||
}
|
||||
|
||||
#define push_bt_entry(addr) \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue