winsys/amdgpu: fix infinite loop w/ RADEON_NOOP=1 caused by unsubmitted fences
authorMarek Olšák <marek.olsak@amd.com>
Mon, 10 Oct 2016 20:24:27 +0000 (22:24 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 12 Oct 2016 16:29:40 +0000 (18:29 +0200)
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/winsys/amdgpu/drm/amdgpu_cs.c

index c0e810c31c11c9cfb784f6247485e634f535e435..2b86827ff5343fff2588b3fc66de8436dd1fb642 100644 (file)
@@ -37,6 +37,8 @@
 
 #include "amd/common/sid.h"
 
+DEBUG_GET_ONCE_BOOL_OPTION(noop, "RADEON_NOOP", false)
+
 /* FENCES */
 
 static struct pipe_fence_handle *
@@ -143,6 +145,9 @@ amdgpu_cs_get_next_fence(struct radeon_winsys_cs *rcs)
    struct amdgpu_cs *cs = amdgpu_cs(rcs);
    struct pipe_fence_handle *fence = NULL;
 
+   if (debug_get_option_noop())
+      return NULL;
+
    if (cs->next_fence) {
       amdgpu_fence_reference(&fence, cs->next_fence);
       return fence;
@@ -1069,8 +1074,6 @@ void amdgpu_cs_sync_flush(struct radeon_winsys_cs *rcs)
       util_queue_job_wait(&cs->flush_completed);
 }
 
-DEBUG_GET_ONCE_BOOL_OPTION(noop, "RADEON_NOOP", false)
-
 static int amdgpu_cs_flush(struct radeon_winsys_cs *rcs,
                            unsigned flags,
                            struct pipe_fence_handle **fence)