Bladeren bron

i965: Use meta for pixel ops on gen6+

Using meta for anything is fairly aweful and definitely has more CPU
overhead.  However, it also uses the 3D pipe and is therefore likely
faster in terms of GPU time than the blitter.  Also, the blitter code
has so many early returns that it's probably not buying us that much.
We may as well just use meta all the time instead of working over-time
to find the tiny case where we can use the blitter.  We keep gen4-5
using the old blit paths to avoid perturbing old hardware too much.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
tags/18.2-branchpoint
Jason Ekstrand 7 jaren geleden
bovenliggende
commit
7fd962093f

+ 4
- 2
src/mesa/drivers/dri/i965/intel_pixel_bitmap.c Bestand weergeven

@@ -348,11 +348,13 @@ intelBitmap(struct gl_context * ctx,
const struct gl_pixelstore_attrib *unpack,
const GLubyte * pixels)
{
struct brw_context *brw = brw_context(ctx);

if (!_mesa_check_conditional_render(ctx))
return;

if (do_blit_bitmap(ctx, x, y, width, height,
unpack, pixels))
if (brw->screen->devinfo.gen < 6 &&
do_blit_bitmap(ctx, x, y, width, height, unpack, pixels))
return;

_mesa_meta_Bitmap(ctx, x, y, width, height, unpack, pixels);

+ 4
- 1
src/mesa/drivers/dri/i965/intel_pixel_copy.c Bestand weergeven

@@ -196,12 +196,15 @@ intelCopyPixels(struct gl_context * ctx,
GLsizei width, GLsizei height,
GLint destx, GLint desty, GLenum type)
{
struct brw_context *brw = brw_context(ctx);

DBG("%s\n", __func__);

if (!_mesa_check_conditional_render(ctx))
return;

if (do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type))
if (brw->screen->devinfo.gen < 6 &&
do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type))
return;

/* this will use swrast if needed */

+ 2
- 1
src/mesa/drivers/dri/i965/intel_pixel_draw.c Bestand weergeven

@@ -163,7 +163,8 @@ intelDrawPixels(struct gl_context * ctx,
return;
}

if (_mesa_is_bufferobj(unpack->BufferObj)) {
if (brw->screen->devinfo.gen < 6 &&
_mesa_is_bufferobj(unpack->BufferObj)) {
if (do_blit_drawpixels(ctx, x, y, width, height, format, type, unpack,
pixels)) {
return;

Laden…
Annuleren
Opslaan