rpms/mesa/F-11 radeon-rewrite-fixes.patch, NONE, 1.1 mesa.spec, 1.242, 1.243
Dave Airlie
airlied at fedoraproject.org
Thu Apr 16 09:07:42 UTC 2009
Author: airlied
Update of /cvs/pkgs/rpms/mesa/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv10037
Modified Files:
mesa.spec
Added Files:
radeon-rewrite-fixes.patch
Log Message:
* Thu Apr 16 2009 Dave Airlie <airlied at redhat.com> 7.5-0.11
- radeon-rewrite-fixes.patch: fix context crash in compiz + r200 fixes
radeon-rewrite-fixes.patch:
--- NEW FILE radeon-rewrite-fixes.patch ---
diff -up mesa-20090322/src/mesa/drivers/dri/common/dri_util.c.dave mesa-20090322/src/mesa/drivers/dri/common/dri_util.c
--- mesa-20090322/src/mesa/drivers/dri/common/dri_util.c.dave 2009-03-21 21:26:15.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/common/dri_util.c 2009-04-16 18:59:17.000000000 +1000
@@ -37,6 +37,9 @@
typedef GLboolean ( * PFNGLXGETMSCRATEOMLPROC) (__DRIdrawable *drawable, int32_t *numerator, int32_t *denominator);
#endif
+static void dri_get_drawable(__DRIdrawable *pdp);
+static void dri_put_drawable(__DRIdrawable *pdp);
+
/**
* This is just a token extension used to signal that the driver
* supports setting a read drawable.
@@ -127,7 +130,7 @@ static int driUnbindContext(__DRIcontext
return GL_FALSE;
}
- pdp->refcount--;
+ dri_put_drawable(pdp);
if (prp != pdp) {
if (prp->refcount == 0) {
@@ -135,7 +138,7 @@ static int driUnbindContext(__DRIcontext
return GL_FALSE;
}
- prp->refcount--;
+ dri_put_drawable(prp);
}
@@ -175,9 +178,9 @@ static int driBindContext(__DRIcontext *
pcp->driDrawablePriv = pdp;
pcp->driReadablePriv = prp;
pdp->driContextPriv = pcp;
- pdp->refcount++;
+ dri_get_drawable(pdp);
if ( pdp != prp ) {
- prp->refcount++;
+ dri_get_drawable(prp);
}
/*
@@ -435,7 +438,7 @@ driCreateNewDrawable(__DRIscreen *psp, c
pdp->loaderPrivate = data;
pdp->hHWDrawable = hwDrawable;
- pdp->refcount = 0;
+ pdp->refcount = 1;
pdp->pStamp = NULL;
pdp->lastStamp = 0;
pdp->index = 0;
@@ -488,12 +491,19 @@ dri2CreateNewDrawable(__DRIscreen *scree
return pdraw;
}
-
-static void
-driDestroyDrawable(__DRIdrawable *pdp)
+static void dri_get_drawable(__DRIdrawable *pdp)
+{
+ pdp->refcount++;
+}
+
+static void dri_put_drawable(__DRIdrawable *pdp)
{
__DRIscreenPrivate *psp;
+ pdp->refcount--;
+ if (pdp->refcount)
+ return;
+
if (pdp) {
psp = pdp->driScreenPriv;
(*psp->DriverAPI.DestroyBuffer)(pdp);
@@ -509,6 +519,12 @@ driDestroyDrawable(__DRIdrawable *pdp)
}
}
+static void
+driDestroyDrawable(__DRIdrawable *pdp)
+{
+ dri_put_drawable(pdp);
+}
+
/*@}*/
diff -up mesa-20090322/src/mesa/drivers/dri/r200/r200_cmdbuf.c.dave mesa-20090322/src/mesa/drivers/dri/r200/r200_cmdbuf.c
--- mesa-20090322/src/mesa/drivers/dri/r200/r200_cmdbuf.c.dave 2009-04-16 18:58:14.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/r200/r200_cmdbuf.c 2009-04-16 18:58:32.000000000 +1000
@@ -209,6 +209,11 @@ GLushort *r200AllocEltsOpenEnded( r200Co
rmesa->radeon.tcl.elt_dma_offset = 0;
rmesa->tcl.elt_used = min_nr * 2;
+ radeon_validate_bo(&rmesa->radeon, rmesa->radeon.tcl.elt_dma_bo,
+ RADEON_GEM_DOMAIN_GTT, 0);
+ if (radeon_revalidate_bos(rmesa->radeon.glCtx) == GL_FALSE)
+ fprintf(stderr,"failure to revalidate BOs - badness\n");
+
radeon_bo_map(rmesa->radeon.tcl.elt_dma_bo, 1);
retval = rmesa->radeon.tcl.elt_dma_bo->ptr + rmesa->radeon.tcl.elt_dma_offset;
diff -up mesa-20090322/src/mesa/drivers/dri/r200/r200_texstate.c.dave mesa-20090322/src/mesa/drivers/dri/r200/r200_texstate.c
--- mesa-20090322/src/mesa/drivers/dri/r200/r200_texstate.c.dave 2009-04-16 18:58:14.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/r200/r200_texstate.c 2009-04-16 18:58:32.000000000 +1000
@@ -1422,8 +1422,8 @@ void set_re_cntl_d3d( GLcontext *ctx, in
*/
static void setup_hardware_state(r200ContextPtr rmesa, radeonTexObj *t)
{
- const struct gl_texture_image *firstImage =
- t->base.Image[0][t->mt->firstLevel];
+ int firstlevel = t->mt ? t->mt->firstLevel : 0;
+ const struct gl_texture_image *firstImage = t->base.Image[0][firstlevel];
GLint log2Width, log2Height, log2Depth, texelBytes;
if ( t->bo ) {
diff -up mesa-20090322/src/mesa/drivers/dri/r300/r300_cmdbuf.c.dave mesa-20090322/src/mesa/drivers/dri/r300/r300_cmdbuf.c
--- mesa-20090322/src/mesa/drivers/dri/r300/r300_cmdbuf.c.dave 2009-04-16 18:58:14.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/r300/r300_cmdbuf.c 2009-04-16 18:58:32.000000000 +1000
@@ -214,6 +214,7 @@ static void emit_cb_offset(GLcontext *ct
struct radeon_renderbuffer *rrb;
uint32_t cbpitch;
uint32_t offset = r300->radeon.state.color.draw_offset;
+ uint32_t dw = 6;
rrb = radeon_get_colorbuffer(&r300->radeon);
if (!rrb || !rrb->bo) {
@@ -230,11 +231,16 @@ static void emit_cb_offset(GLcontext *ct
if (rrb->bo->flags & RADEON_BO_FLAGS_MACRO_TILE)
cbpitch |= R300_COLOR_TILE_ENABLE;
- BEGIN_BATCH_NO_AUTOSTATE(8);
+ if (r300->radeon.radeonScreen->kernel_mm)
+ dw += 2;
+ BEGIN_BATCH_NO_AUTOSTATE(dw);
OUT_BATCH_REGSEQ(R300_RB3D_COLOROFFSET0, 1);
OUT_BATCH_RELOC(offset, rrb->bo, offset, 0, RADEON_GEM_DOMAIN_VRAM, 0);
OUT_BATCH_REGSEQ(R300_RB3D_COLORPITCH0, 1);
- OUT_BATCH_RELOC(cbpitch, rrb->bo, cbpitch, 0, RADEON_GEM_DOMAIN_VRAM, 0);
+ if (!r300->radeon.radeonScreen->kernel_mm)
+ OUT_BATCH(cbpitch);
+ else
+ OUT_BATCH_RELOC(cbpitch, rrb->bo, cbpitch, 0, RADEON_GEM_DOMAIN_VRAM, 0);
END_BATCH();
if (r300->radeon.radeonScreen->driScreen->dri2.enabled) {
if (r300->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV515) {
diff -up mesa-20090322/src/mesa/drivers/dri/radeon/radeon_common.c.dave mesa-20090322/src/mesa/drivers/dri/radeon/radeon_common.c
--- mesa-20090322/src/mesa/drivers/dri/radeon/radeon_common.c.dave 2009-04-16 18:58:14.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/radeon/radeon_common.c 2009-04-16 18:58:32.000000000 +1000
@@ -928,6 +928,7 @@ void radeon_validate_reset_bos(radeonCon
int i;
for (i = 0; i < radeon->state.validated_bo_count; i++) {
+ radeon_bo_unref(radeon->state.bos[i].bo);
radeon->state.bos[i].bo = NULL;
radeon->state.bos[i].read_domains = 0;
radeon->state.bos[i].write_domain = 0;
@@ -938,6 +939,7 @@ void radeon_validate_reset_bos(radeonCon
void radeon_validate_bo(radeonContextPtr radeon, struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain)
{
+ radeon_bo_ref(bo);
radeon->state.bos[radeon->state.validated_bo_count].bo = bo;
radeon->state.bos[radeon->state.validated_bo_count].read_domains = read_domains;
radeon->state.bos[radeon->state.validated_bo_count].write_domain = write_domain;
diff -up mesa-20090322/src/mesa/drivers/dri/radeon/radeon_state_init.c.dave mesa-20090322/src/mesa/drivers/dri/radeon/radeon_state_init.c
--- mesa-20090322/src/mesa/drivers/dri/radeon/radeon_state_init.c.dave 2009-04-16 18:58:14.000000000 +1000
+++ mesa-20090322/src/mesa/drivers/dri/radeon/radeon_state_init.c 2009-04-16 18:58:32.000000000 +1000
@@ -448,6 +448,17 @@ static void ctx_emit_cs(GLcontext *ctx,
// }
END_BATCH();
+ BEGIN_BATCH_NO_AUTOSTATE(4);
+ OUT_BATCH(CP_PACKET0(RADEON_RE_TOP_LEFT, 0));
+ OUT_BATCH(0);
+ OUT_BATCH(CP_PACKET0(RADEON_RE_WIDTH_HEIGHT, 0));
+ if (rrb) {
+ OUT_BATCH(((rrb->width - 1) << RADEON_RE_WIDTH_SHIFT) |
+ ((rrb->height - 1) << RADEON_RE_HEIGHT_SHIFT));
+ } else {
+ OUT_BATCH(0);
+ }
+ END_BATCH();
}
static void cube_emit(GLcontext *ctx, struct radeon_state_atom *atom)
Index: mesa.spec
===================================================================
RCS file: /cvs/pkgs/rpms/mesa/F-11/mesa.spec,v
retrieving revision 1.242
retrieving revision 1.243
diff -u -r1.242 -r1.243
--- mesa.spec 15 Apr 2009 15:19:12 -0000 1.242
+++ mesa.spec 16 Apr 2009 09:07:11 -0000 1.243
@@ -20,7 +20,7 @@
Summary: Mesa graphics libraries
Name: mesa
Version: 7.5
-Release: 0.10%{?dist}
+Release: 0.11%{?dist}
License: MIT
Group: System Environment/Libraries
URL: http://www.mesa3d.org
@@ -49,6 +49,7 @@
Patch13: mesa-7.5-sparc64.patch
Patch20: mesa-7.5-get-driver-name.patch
+Patch21: radeon-rewrite-fixes.patch
BuildRequires: pkgconfig autoconf automake
%if %{with_dri}
@@ -178,6 +179,7 @@
%patch12 -p1 -b .intel-nowarn
%patch13 -p1 -b .sparc64
%patch20 -p1 -b .get-driver-name
+%patch21 -p1 -b .radfixes
# Hack the demos to use installed data files
sed -i 's,../images,%{_libdir}/mesa-demos-data,' progs/demos/*.c
@@ -434,6 +436,9 @@
%{_libdir}/mesa-demos-data
%changelog
+* Thu Apr 16 2009 Dave Airlie <airlied at redhat.com> 7.5-0.11
+- radeon-rewrite-fixes.patch: fix context crash in compiz + r200 fixes
+
* Tue Apr 14 2009 Adam Jackson <ajax at redhat.com> 7.5-0.10
- mesa-7.5-get-driver-name.patch: Fix glXGetScreenDriver for DRI2 (#495342)
More information about the scm-commits
mailing list