iris: handle aux properly in iris_resource_get_handle
authorTapani Pälli <tapani.palli@intel.com>
Fri, 5 Apr 2019 05:55:18 +0000 (08:55 +0300)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 5 Apr 2019 06:35:24 +0000 (23:35 -0700)
Disable aux when resource seen the first time and EXPLICIT_FLUSH
not being set. This fixes issues seen when launching Xorg and
CCS_E getting utilized.

Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/gallium/drivers/iris/iris_resource.c

index d0a473fd72af71b6500e458a785c64e18be6c3a4..fc093110fb27902e3323536d0592d0c9ea36bc32 100644 (file)
@@ -839,6 +839,14 @@ iris_resource_get_handle(struct pipe_screen *pscreen,
 {
    struct iris_resource *res = (struct iris_resource *)resource;
 
+   /* Disable aux usage if explicit flush not set and this is the
+    * first time we are dealing with this resource.
+    */
+   if ((!(usage & PIPE_HANDLE_USAGE_EXPLICIT_FLUSH) && res->aux.usage != 0)) {
+      if (p_atomic_read(&resource->reference.count) == 1)
+         iris_resource_disable_aux(res);
+   }
+
    /* If this is a buffer, stride should be 0 - no need to special case */
    whandle->stride = res->surf.row_pitch_B;
    whandle->modifier =