summaryrefslogtreecommitdiff
path: root/src/mesa/drivers
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2018-05-11 16:22:47 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2018-05-22 15:46:20 -0700
commit7fd962093f71d83ffc74962a8f7572b493d9030f (patch)
treee2a11a14da18c2277a6a5a884f88306012ea21ef /src/mesa/drivers
parent92f01fc5f914fd500497d0c3aed75f3ac8dc054d (diff)
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>
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r--src/mesa/drivers/dri/i965/intel_pixel_bitmap.c6
-rw-r--r--src/mesa/drivers/dri/i965/intel_pixel_copy.c5
-rw-r--r--src/mesa/drivers/dri/i965/intel_pixel_draw.c3
3 files changed, 10 insertions, 4 deletions
diff --git a/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c b/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
index 5bc341bfc0a..f9d48294168 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_bitmap.c
@@ -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);
diff --git a/src/mesa/drivers/dri/i965/intel_pixel_copy.c b/src/mesa/drivers/dri/i965/intel_pixel_copy.c
index 8029ffbeddc..31838cce13c 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_copy.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_copy.c
@@ -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 */
diff --git a/src/mesa/drivers/dri/i965/intel_pixel_draw.c b/src/mesa/drivers/dri/i965/intel_pixel_draw.c
index 82dca4a2ebc..d5d1b99e69b 100644
--- a/src/mesa/drivers/dri/i965/intel_pixel_draw.c
+++ b/src/mesa/drivers/dri/i965/intel_pixel_draw.c
@@ -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;