i965: Use brw_batch_references in tex_busy check
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 29 Jan 2020 08:22:02 +0000 (00:22 -0800)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Jan 2020 10:01:21 +0000 (10:01 +0000)
If the batch references the buffer, we will have to flush the batch
immediately before mapping it, at which point it will be busy.

(This bug has existed for a long time...even going back to BLT-era...)

Fixes: 779923194c6 ("i965/tex_image: Use meta for instead of the blitter PBO TexImage and GetTexImage")
Fixes: d5d4ba9139a ("i965/tex_subimage: use meta instead of the blitter for PBO TexSubImage")
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3616>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3616>

src/mesa/drivers/dri/i965/intel_tex_image.c

index fba925dee5aaab971e032e6762baa3bb17cd3cc4..bc72827802c394b11b2bf1f2170cc3264d12403e 100644 (file)
@@ -325,7 +325,8 @@ intel_upload_tex(struct gl_context * ctx,
    if (pixels == NULL && !_mesa_is_bufferobj(packing->BufferObj))
       return;
 
-   bool tex_busy = mt && brw_bo_busy(mt->bo);
+   bool tex_busy = mt &&
+      (brw_batch_references(&brw->batch, mt->bo) || brw_bo_busy(mt->bo));
 
    if (_mesa_is_bufferobj(packing->BufferObj) || tex_busy ||
        mt->aux_usage == ISL_AUX_USAGE_CCS_E) {