mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
iris: disable aux on first get_param if not created with aux
This moves the fix from commit361f3d19f1to happen in get_param (used now instead of get_handle by st/dri). This fixes artifacts seen with Xorg and CCS_E. Fixes:fc12fd05f5"iris: Implement pipe_screen::resource_get_param" Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
88f909eb37
commit
f4d9169204
1 changed files with 22 additions and 9 deletions
|
|
@ -1023,6 +1023,25 @@ iris_flush_resource(struct pipe_context *ctx, struct pipe_resource *resource)
|
|||
mod ? mod->supports_clear_color : false);
|
||||
}
|
||||
|
||||
static void
|
||||
iris_resource_disable_aux_on_first_query(struct pipe_resource *resource,
|
||||
unsigned usage)
|
||||
{
|
||||
struct iris_resource *res = (struct iris_resource *)resource;
|
||||
bool mod_with_aux =
|
||||
res->mod_info && res->mod_info->aux_usage != ISL_AUX_USAGE_NONE;
|
||||
|
||||
/* Disable aux usage if explicit flush not set and this is the first time
|
||||
* we are dealing with this resource and the resource was not created with
|
||||
* a modifier with aux.
|
||||
*/
|
||||
if (!mod_with_aux &&
|
||||
(!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) && res->aux.usage != 0) &&
|
||||
p_atomic_read(&resource->reference.count) == 1) {
|
||||
iris_resource_disable_aux(res);
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
iris_resource_get_param(struct pipe_screen *screen,
|
||||
struct pipe_context *context,
|
||||
|
|
@ -1041,6 +1060,8 @@ iris_resource_get_param(struct pipe_screen *screen,
|
|||
bool result;
|
||||
unsigned handle;
|
||||
|
||||
iris_resource_disable_aux_on_first_query(resource, handle_usage);
|
||||
|
||||
switch (param) {
|
||||
case PIPE_RESOURCE_PARAM_NPLANES:
|
||||
if (mod_with_aux) {
|
||||
|
|
@ -1091,15 +1112,7 @@ iris_resource_get_handle(struct pipe_screen *pscreen,
|
|||
bool mod_with_aux =
|
||||
res->mod_info && res->mod_info->aux_usage != ISL_AUX_USAGE_NONE;
|
||||
|
||||
/* Disable aux usage if explicit flush not set and this is the first time
|
||||
* we are dealing with this resource and the resource was not created with
|
||||
* a modifier with aux.
|
||||
*/
|
||||
if (!mod_with_aux &&
|
||||
(!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) && res->aux.usage != 0) &&
|
||||
p_atomic_read(&resource->reference.count) == 1) {
|
||||
iris_resource_disable_aux(res);
|
||||
}
|
||||
iris_resource_disable_aux_on_first_query(resource, usage);
|
||||
|
||||
struct iris_bo *bo;
|
||||
if (mod_with_aux && whandle->plane > 0) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue