[Mesa-stable] Request for backport of commit 0e9549e2bd57168
Carl Worth
cworth at cworth.org
Tue Jul 30 11:58:26 PDT 2013
Hi Ken,
My workqueue for 9.1 includes cherry-picking the below revert commit.
Unfortunately, it doesn't cherry-pick trivially, and I'm a bit nervous I
might botch the conflict resolution. Could you cook up a patch to apply
this revert to the 9.1 branch?
Thanks,
-Carl
commit 0e9549e2bd57168086421468cbf1db0821c36730
Author: Kenneth Graunke <kenneth at whitecape.org>
Date: Thu Jul 25 15:11:13 2013 -0700
Revert "i965: Delete pre-DRI2.3 viewport hacks."
This reverts commit c9db037dc999eadbcaa8816c814e6ec1776d1a40.
Eric believes that the viewport hacks are still necessary for EGL;
invalidate events aren't hooked up properly.
This commit caused a regression where EFL applications wouldn't show
anything other than window decorations; GLBenchmark also showed issues.
The revert had conflicts due to the intel_context/brw_context merge.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=66606
Cc: mesa-stable at lists.freedesktop.org
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 86f9f71..2ab150b 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -1239,6 +1239,8 @@ struct brw_context
__DRIcontext *driContext;
struct intel_screen *intelScreen;
+ void (*saved_viewport)(struct gl_context *ctx,
+ GLint x, GLint y, GLsizei width, GLsizei height);
};
/*======================================================================
diff --git a/src/mesa/drivers/dri/i965/intel_context.c b/src/mesa/drivers/dri/i965/intel_context.c
index 742bcc3..2e15a55 100644
--- a/src/mesa/drivers/dri/i965/intel_context.c
+++ b/src/mesa/drivers/dri/i965/intel_context.c
@@ -288,6 +288,21 @@ intel_prepare_render(struct brw_context *brw)
}
}
+static void
+intel_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
+{
+ struct brw_context *brw = brw_context(ctx);
+ __DRIcontext *driContext = brw->driContext;
+
+ if (brw->saved_viewport)
+ brw->saved_viewport(ctx, x, y, w, h);
+
+ if (_mesa_is_winsys_fbo(ctx->DrawBuffer)) {
+ dri2InvalidateDrawable(driContext->driDrawablePriv);
+ dri2InvalidateDrawable(driContext->driReadablePriv);
+ }
+}
+
static const struct dri_debug_control debug_control[] = {
{ "tex", DEBUG_TEXTURE},
{ "state", DEBUG_STATE},
@@ -454,6 +469,12 @@ intelInitContext(struct brw_context *brw,
dri_ctx_error))
return false;
+ /* Can't rely on invalidate events, fall back to glViewport hack */
+ if (!driContextPriv->driScreenPriv->dri2.useInvalidate) {
+ brw->saved_viewport = functions->Viewport;
+ functions->Viewport = intel_viewport;
+ }
+
if (mesaVis == NULL) {
memset(&visual, 0, sizeof visual);
mesaVis = &visual;
diff --git a/src/mesa/drivers/dri/i965/intel_tex_image.c b/src/mesa/drivers/dri/i965/intel_tex_image.c
index 9c5d234..4b551b7 100644
--- a/src/mesa/drivers/dri/i965/intel_tex_image.c
+++ b/src/mesa/drivers/dri/i965/intel_tex_image.c
@@ -307,7 +307,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
if (!intelObj)
return;
- if (dPriv->lastStamp != dPriv->dri2.stamp)
+ if (dPriv->lastStamp != dPriv->dri2.stamp ||
+ !pDRICtx->driScreenPriv->dri2.useInvalidate)
intel_update_renderbuffers(pDRICtx, dPriv);
rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-stable/attachments/20130730/f78133af/attachment-0001.pgp>
More information about the mesa-stable
mailing list