This commit is contained in:
parent
bcca5ca8d5
commit
94a9ca698d
237
Mesa-6.5.2-fix_radeon_cliprect.diff
Normal file
237
Mesa-6.5.2-fix_radeon_cliprect.diff
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
|
||||||
|
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
|
||||||
|
@@ -594,12 +594,14 @@ radeonMakeCurrent( __DRIcontextPrivate *
|
||||||
|
driDrawableInitVBlank( driDrawPriv, newCtx->vblank_flags,
|
||||||
|
&newCtx->vbl_seq );
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- if ( (newCtx->dri.drawable != driDrawPriv)
|
||||||
|
- || (newCtx->dri.readable != driReadPriv) ) {
|
||||||
|
+
|
||||||
|
+ newCtx->dri.readable = driReadPriv;
|
||||||
|
+
|
||||||
|
+ if ( (newCtx->dri.drawable != driDrawPriv) ||
|
||||||
|
+ newCtx->lastStamp != driDrawPriv->lastStamp ) {
|
||||||
|
newCtx->dri.drawable = driDrawPriv;
|
||||||
|
- newCtx->dri.readable = driReadPriv;
|
||||||
|
|
||||||
|
+ radeonSetCliprects(newCtx);
|
||||||
|
radeonUpdateWindow( newCtx->glCtx );
|
||||||
|
radeonUpdateViewportOffset( newCtx->glCtx );
|
||||||
|
}
|
||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/radeon/radeon_lock.c
|
||||||
|
+++ b/src/mesa/drivers/dri/radeon/radeon_lock.c
|
||||||
|
@@ -96,7 +96,6 @@ void radeonGetLock( radeonContextPtr rme
|
||||||
|
radeonSetCliprects( rmesa );
|
||||||
|
radeonUpdateViewportOffset( rmesa->glCtx );
|
||||||
|
driUpdateFramebufferSize(rmesa->glCtx, drawable);
|
||||||
|
- rmesa->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
RADEON_STATECHANGE( rmesa, ctx );
|
||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/radeon/radeon_state.c
|
||||||
|
+++ b/src/mesa/drivers/dri/radeon/radeon_state.c
|
||||||
|
@@ -1675,6 +1675,8 @@ void radeonSetCliprects( radeonContextPt
|
||||||
|
|
||||||
|
if (rmesa->state.scissor.enabled)
|
||||||
|
radeonRecalcScissorRects( rmesa );
|
||||||
|
+
|
||||||
|
+ rmesa->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unchanged:
|
||||||
|
--- b/src/mesa/drivers/dri/r200/r200_context.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r200/r200_context.c
|
||||||
|
@@ -673,11 +673,13 @@
|
||||||
|
&newCtx->vbl_seq );
|
||||||
|
}
|
||||||
|
|
||||||
|
+ newCtx->dri.readable = driReadPriv;
|
||||||
|
+
|
||||||
|
if ( newCtx->dri.drawable != driDrawPriv ||
|
||||||
|
- newCtx->dri.readable != driReadPriv ) {
|
||||||
|
+ newCtx->lastStamp != driDrawPriv->lastStamp ) {
|
||||||
|
newCtx->dri.drawable = driDrawPriv;
|
||||||
|
- newCtx->dri.readable = driReadPriv;
|
||||||
|
|
||||||
|
+ r200SetCliprects(newCtx);
|
||||||
|
r200UpdateWindow( newCtx->glCtx );
|
||||||
|
r200UpdateViewportOffset( newCtx->glCtx );
|
||||||
|
}
|
||||||
|
unchanged:
|
||||||
|
--- b/src/mesa/drivers/dri/r200/r200_lock.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r200/r200_lock.c
|
||||||
|
@@ -92,13 +92,9 @@
|
||||||
|
|
||||||
|
if ( rmesa->lastStamp != drawable->lastStamp ) {
|
||||||
|
r200UpdatePageFlipping( rmesa );
|
||||||
|
- if (rmesa->glCtx->DrawBuffer->_ColorDrawBufferMask[0] == BUFFER_BIT_BACK_LEFT)
|
||||||
|
- r200SetCliprects( rmesa, GL_BACK_LEFT );
|
||||||
|
- else
|
||||||
|
- r200SetCliprects( rmesa, GL_FRONT_LEFT );
|
||||||
|
+ r200SetCliprects( rmesa );
|
||||||
|
r200UpdateViewportOffset( rmesa->glCtx );
|
||||||
|
driUpdateFramebufferSize(rmesa->glCtx, drawable);
|
||||||
|
- rmesa->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
R200_STATECHANGE( rmesa, ctx );
|
||||||
|
unchanged:
|
||||||
|
--- b/src/mesa/drivers/dri/r200/r200_state.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r200/r200_state.c
|
||||||
|
@@ -1691,6 +1691,11 @@
|
||||||
|
#define SUBPIXEL_X 0.125
|
||||||
|
#define SUBPIXEL_Y 0.125
|
||||||
|
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Called when window size or position changes or viewport or depth range
|
||||||
|
+ * state is changed. We update the hardware viewport state here.
|
||||||
|
+ */
|
||||||
|
void r200UpdateWindow( GLcontext *ctx )
|
||||||
|
{
|
||||||
|
r200ContextPtr rmesa = R200_CONTEXT(ctx);
|
||||||
|
@@ -1843,19 +1848,18 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-void r200SetCliprects( r200ContextPtr rmesa, GLenum mode )
|
||||||
|
+/*
|
||||||
|
+ * Set up the cliprects for either front or back-buffer drawing.
|
||||||
|
+ */
|
||||||
|
+void r200SetCliprects( r200ContextPtr rmesa )
|
||||||
|
{
|
||||||
|
__DRIdrawablePrivate *const drawable = rmesa->dri.drawable;
|
||||||
|
__DRIdrawablePrivate *const readable = rmesa->dri.readable;
|
||||||
|
GLframebuffer *const draw_fb = (GLframebuffer*) drawable->driverPrivate;
|
||||||
|
GLframebuffer *const read_fb = (GLframebuffer*) readable->driverPrivate;
|
||||||
|
|
||||||
|
- switch ( mode ) {
|
||||||
|
- case GL_FRONT_LEFT:
|
||||||
|
- rmesa->numClipRects = drawable->numClipRects;
|
||||||
|
- rmesa->pClipRects = drawable->pClipRects;
|
||||||
|
- break;
|
||||||
|
- case GL_BACK_LEFT:
|
||||||
|
+ if (draw_fb->_ColorDrawBufferMask[0]
|
||||||
|
+ == BUFFER_BIT_BACK_LEFT) {
|
||||||
|
/* Can't ignore 2d windows if we are page flipping.
|
||||||
|
*/
|
||||||
|
if ( drawable->numBackClipRects == 0 || rmesa->doPageFlip ) {
|
||||||
|
@@ -1866,11 +1870,12 @@
|
||||||
|
rmesa->numClipRects = drawable->numBackClipRects;
|
||||||
|
rmesa->pClipRects = drawable->pBackClipRects;
|
||||||
|
}
|
||||||
|
- break;
|
||||||
|
- default:
|
||||||
|
- fprintf(stderr, "bad mode in r200SetCliprects\n");
|
||||||
|
- return;
|
||||||
|
}
|
||||||
|
+ else {
|
||||||
|
+ /* front buffer (or none, or multiple buffers) */
|
||||||
|
+ rmesa->numClipRects = drawable->numClipRects;
|
||||||
|
+ rmesa->pClipRects = drawable->pClipRects;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if ((draw_fb->Width != drawable->w) || (draw_fb->Height != drawable->h)) {
|
||||||
|
_mesa_resize_framebuffer(rmesa->glCtx, draw_fb,
|
||||||
|
@@ -1889,6 +1894,8 @@
|
||||||
|
|
||||||
|
if (rmesa->state.scissor.enabled)
|
||||||
|
r200RecalcScissorRects( rmesa );
|
||||||
|
+
|
||||||
|
+ rmesa->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1908,19 +1915,17 @@
|
||||||
|
*/
|
||||||
|
switch ( ctx->DrawBuffer->_ColorDrawBufferMask[0] ) {
|
||||||
|
case BUFFER_BIT_FRONT_LEFT:
|
||||||
|
- FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE );
|
||||||
|
- r200SetCliprects( rmesa, GL_FRONT_LEFT );
|
||||||
|
- break;
|
||||||
|
case BUFFER_BIT_BACK_LEFT:
|
||||||
|
FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_FALSE );
|
||||||
|
- r200SetCliprects( rmesa, GL_BACK_LEFT );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
- /* GL_NONE or GL_FRONT_AND_BACK or stereo left&right, etc */
|
||||||
|
+ /* 0 (GL_NONE) buffers or multiple color drawing buffers */
|
||||||
|
FALLBACK( rmesa, R200_FALLBACK_DRAW_BUFFER, GL_TRUE );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ r200SetCliprects( rmesa );
|
||||||
|
+
|
||||||
|
/* We'll set the drawing engine's offset/pitch parameters later
|
||||||
|
* when we update other state.
|
||||||
|
*/
|
||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/r200/r200_state.h
|
||||||
|
+++ b/src/mesa/drivers/dri/r200/r200_state.h
|
||||||
|
@@ -44,7 +44,7 @@ extern void r200InitTnlFuncs( GLcontext
|
||||||
|
|
||||||
|
extern void r200UpdateMaterial( GLcontext *ctx );
|
||||||
|
|
||||||
|
-extern void r200SetCliprects( r200ContextPtr rmesa, GLenum mode );
|
||||||
|
+extern void r200SetCliprects( r200ContextPtr rmesa );
|
||||||
|
extern void r200RecalcScissorRects( r200ContextPtr rmesa );
|
||||||
|
extern void r200UpdateViewportOffset( GLcontext *ctx );
|
||||||
|
extern void r200UpdateWindow( GLcontext *ctx );
|
||||||
|
only in patch2:
|
||||||
|
unchanged:
|
||||||
|
--- b/src/mesa/drivers/dri/r300/radeon_context.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r300/radeon_context.c
|
||||||
|
@@ -51,6 +51,7 @@
|
||||||
|
#include "radeon_macros.h"
|
||||||
|
#include "radeon_reg.h"
|
||||||
|
|
||||||
|
+#include "radeon_state.h"
|
||||||
|
#include "r300_state.h"
|
||||||
|
|
||||||
|
#include "utils.h"
|
||||||
|
@@ -272,11 +273,13 @@
|
||||||
|
&radeon->vbl_seq);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ radeon->dri.readable = driReadPriv;
|
||||||
|
+
|
||||||
|
if (radeon->dri.drawable != driDrawPriv ||
|
||||||
|
- radeon->dri.readable != driReadPriv) {
|
||||||
|
+ radeon->lastStamp != driDrawPriv->lastStamp) {
|
||||||
|
radeon->dri.drawable = driDrawPriv;
|
||||||
|
- radeon->dri.readable = driReadPriv;
|
||||||
|
|
||||||
|
+ radeonSetCliprects(radeon);
|
||||||
|
r300UpdateWindow(radeon->glCtx);
|
||||||
|
r300UpdateViewportOffset(radeon->glCtx);
|
||||||
|
}
|
||||||
|
only in patch2:
|
||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/r300/radeon_lock.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r300/radeon_lock.c
|
||||||
|
@@ -90,7 +90,6 @@ static void r300RegainedLock(radeonConte
|
||||||
|
#else
|
||||||
|
radeonUpdateScissor(radeon->glCtx);
|
||||||
|
#endif
|
||||||
|
- radeon->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sarea->ctx_owner != radeon->dri.hwContext) {
|
||||||
|
only in patch2:
|
||||||
|
unchanged:
|
||||||
|
--- a/src/mesa/drivers/dri/r300/radeon_state.c
|
||||||
|
+++ b/src/mesa/drivers/dri/r300/radeon_state.c
|
||||||
|
@@ -185,6 +185,8 @@ void radeonSetCliprects(radeonContextPtr
|
||||||
|
|
||||||
|
if (radeon->state.scissor.enabled)
|
||||||
|
radeonRecalcScissorRects(radeon);
|
||||||
|
+
|
||||||
|
+ radeon->lastStamp = drawable->lastStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Apr 10 15:29:53 CEST 2007 - sndirsch@suse.de
|
||||||
|
|
||||||
|
- Mesa-6.5.2-fix_radeon_cliprect.diff:
|
||||||
|
* fixes X.Org Bug #9876
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Apr 4 22:03:24 CEST 2007 - sndirsch@suse.de
|
Wed Apr 4 22:03:24 CEST 2007 - sndirsch@suse.de
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ Provides: xorg-x11-Mesa
|
|||||||
Obsoletes: xorg-x11-Mesa
|
Obsoletes: xorg-x11-Mesa
|
||||||
Autoreqprov: on
|
Autoreqprov: on
|
||||||
Version: 6.5.2
|
Version: 6.5.2
|
||||||
Release: 25
|
Release: 27
|
||||||
Summary: Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL.*
|
Summary: Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL.*
|
||||||
Source: Mesa-%{version}.tar.bz2
|
Source: Mesa-%{version}.tar.bz2
|
||||||
Source3: README.updates
|
Source3: README.updates
|
||||||
@ -45,6 +45,7 @@ Patch16: bug-211314-patch-9.diff
|
|||||||
Patch17: bug-211314-patch-10.diff
|
Patch17: bug-211314-patch-10.diff
|
||||||
Patch18: bug-211314-patch-11.diff
|
Patch18: bug-211314-patch-11.diff
|
||||||
Patch19: bug-211314_mesa-refcount-memleak-fixes.diff
|
Patch19: bug-211314_mesa-refcount-memleak-fixes.diff
|
||||||
|
Patch20: Mesa-6.5.2-fix_radeon_cliprect.diff
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -142,6 +143,7 @@ rm -rf src/glw/
|
|||||||
%patch17 -p1
|
%patch17 -p1
|
||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
|
%patch20 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -260,6 +262,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
/usr/%{_lib}/libMesaGL.a
|
/usr/%{_lib}/libMesaGL.a
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 10 2007 - sndirsch@suse.de
|
||||||
|
- Mesa-6.5.2-fix_radeon_cliprect.diff:
|
||||||
|
* fixes X.Org Bug #9876
|
||||||
* Wed Apr 04 2007 - sndirsch@suse.de
|
* Wed Apr 04 2007 - sndirsch@suse.de
|
||||||
- bug-211314_mesa-refcount-memleak-fixes.diff:
|
- bug-211314_mesa-refcount-memleak-fixes.diff:
|
||||||
* Fix for memleaks and refount bugs (Bug #211314)
|
* Fix for memleaks and refount bugs (Bug #211314)
|
||||||
|
Loading…
Reference in New Issue
Block a user