instead of _mesa_meta_pbo_TexSubImage(). While the newly introduced intel_texsubimage_gpu_copy() is capable of handling all the cases _mesa_meta_pbo_TexSubImage() can, it is also capable of handling everything intel_texsubimage_tiled_memcpy() does. And in addition part of the cases left to _mesa_store_teximage() as well. This, however, leads to performance regressions in few benchmarks, especially with Synmark OglDrvRes. Therefore intel_texsubimage_gpu_copy is only used to replace the meta path for now.
Signed-off-by: Topi Pohjolainen <topi.pohjolai...@intel.com> --- src/mesa/drivers/dri/i965/intel_tex_image.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c index 141996f..67f83db 100644 --- a/src/mesa/drivers/dri/i965/intel_tex_image.c +++ b/src/mesa/drivers/dri/i965/intel_tex_image.c @@ -125,6 +125,7 @@ intelTexImage(struct gl_context * ctx, GLenum format, GLenum type, const void *pixels, const struct gl_pixelstore_attrib *unpack) { + struct brw_context *brw = brw_context(ctx); struct intel_texture_image *intelImage = intel_texture_image(texImage); bool ok; @@ -147,12 +148,20 @@ intelTexImage(struct gl_context * ctx, if (intelImage->mt->format == MESA_FORMAT_S_UINT8) intelImage->mt->r8stencil_needs_update = true; - ok = _mesa_meta_pbo_TexSubImage(ctx, dims, texImage, 0, 0, 0, - texImage->Width, texImage->Height, - texImage->Depth, - format, type, pixels, - tex_busy, unpack); - if (ok) + const bool is_src_bo = _mesa_is_bufferobj(unpack->BufferObj); + if (brw->gen >= 6 && (tex_busy || is_src_bo) && + intel_texsubimage_gpu_copy(brw, dims, texImage, 0, 0, 0, + texImage->Width, texImage->Height, + texImage->Depth, + format, type, pixels, unpack)) + return; + + if (brw->gen < 6 && + _mesa_meta_pbo_TexSubImage(ctx, dims, texImage, 0, 0, 0, + texImage->Width, texImage->Height, + texImage->Depth, + format, type, pixels, + tex_busy, unpack)) return; ok = intel_texsubimage_tiled_memcpy(ctx, dims, texImage, -- 2.5.5 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev