No other path currently supports uploading data to these surfaces. Fixes the incorrect rendering in miplevels > 0 with YF/YS tiling.
Signed-off-by: Anuj Phogat <anuj.pho...@gmail.com> --- src/mesa/drivers/dri/i965/intel_tex_subimage.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_tex_subimage.c b/src/mesa/drivers/dri/i965/intel_tex_subimage.c index 909ff25..a7ad10e 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/i965/intel_tex_subimage.c @@ -200,8 +200,10 @@ intelTexSubImage(struct gl_context * ctx, const struct gl_pixelstore_attrib *packing) { struct intel_texture_image *intelImage = intel_texture_image(texImage); + struct brw_context *brw = brw_context(ctx); bool ok; - + bool create_pbo = false; + uint32_t tr_mode = INTEL_MIPTREE_TRMODE_NONE; bool tex_busy = intelImage->mt && drm_intel_bo_busy(intelImage->mt->bo); DBG("%s mesa_format %s target %s format %s type %s level %d %dx%dx%d\n", @@ -210,13 +212,30 @@ intelTexSubImage(struct gl_context * ctx, _mesa_lookup_enum_by_nr(format), _mesa_lookup_enum_by_nr(type), texImage->Level, texImage->Width, texImage->Height, texImage->Depth); + if (brw->gen >= 9) { + tr_mode = intelImage->mt->tr_mode; + /* Set create_pbo = true for surfaces with INTEL_MIPTREE_TRMODE_{YF/YS}. + * _mesa_meta_pbo_TexSubImage() is the only working path to upload data + * to such surfaces. + */ + create_pbo = tex_busy || (intelImage->mt && + intelImage->mt->tr_mode != INTEL_MIPTREE_TRMODE_NONE); + } else { + create_pbo = tex_busy; + } + ok = _mesa_meta_pbo_TexSubImage(ctx, dims, texImage, xoffset, yoffset, zoffset, width, height, depth, format, type, - pixels, false, tex_busy, packing); + pixels, false, create_pbo, packing); if (ok) return; + /* Currently there are no fallback paths to upload data to surfaces with + * tr_mode != INTEL_MIPTREE_TRMODE_NONE. + */ + assert(tr_mode == INTEL_MIPTREE_TRMODE_NONE); + ok = intel_texsubimage_tiled_memcpy(ctx, dims, texImage, xoffset, yoffset, zoffset, width, height, depth, -- 2.3.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev