Mesa (master): r600: make sure bos are valid before usign that

Alex Deucher agd5f at kemper.freedesktop.org
Fri Jul 31 19:12:21 UTC 2009


Module: Mesa
Branch: master
Commit: 95b64c0ed20725db2722314d527d63aace6b7f7a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=95b64c0ed20725db2722314d527d63aace6b7f7a

Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Fri Jul 31 15:11:41 2009 -0400

r600: make sure bos are valid before usign that

---

 src/mesa/drivers/dri/r600/r700_chip.c   |   12 ++++++++++++
 src/mesa/drivers/dri/r600/r700_render.c |    3 +++
 2 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c
index ad4f29b..78779e8 100644
--- a/src/mesa/drivers/dri/r600/r700_chip.c
+++ b/src/mesa/drivers/dri/r600/r700_chip.c
@@ -321,6 +321,9 @@ void r700SetupVTXConstants(GLcontext  * ctx,
     unsigned int uSQ_VTX_CONSTANT_WORD3_0 = 0;
     unsigned int uSQ_VTX_CONSTANT_WORD6_0 = 0;
 
+    if (!paos->bo)
+	    return GL_FALSE;
+
     if ((context->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV610) ||
 	(context->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV620) ||
 	(context->radeon.radeonScreen->chip_family == CHIP_FAMILY_RS780) ||
@@ -594,6 +597,9 @@ GLboolean r700SendPSState(context_t *context)
 
 	pbo = (struct radeon_bo *)r700GetActiveFpShaderBo(GL_CONTEXT(context));
 
+	if (!pbo)
+		return GL_FALSE;
+
 	r700SyncSurf(context, pbo, RADEON_GEM_DOMAIN_GTT, 0, SH_ACTION_ENA_bit);
 
         BEGIN_BATCH_NO_AUTOSTATE(3);
@@ -623,6 +629,9 @@ GLboolean r700SendVSState(context_t *context)
 
 	pbo = (struct radeon_bo *)r700GetActiveVpShaderBo(GL_CONTEXT(context));
 
+	if (!pbo)
+		return GL_FALSE;
+
 	r700SyncSurf(context, pbo, RADEON_GEM_DOMAIN_GTT, 0, SH_ACTION_ENA_bit);
 
         BEGIN_BATCH_NO_AUTOSTATE(3);
@@ -660,6 +669,9 @@ GLboolean r700SendFSState(context_t *context)
 	r700->fs.SQ_PGM_CF_OFFSET_FS.u32All = 0;
 	/* XXX */
 
+	if (!pbo)
+		return GL_FALSE;
+
 	r700SyncSurf(context, pbo, RADEON_GEM_DOMAIN_GTT, 0, SH_ACTION_ENA_bit);
 
         BEGIN_BATCH_NO_AUTOSTATE(3);
diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c
index 5a1f04f..2592d7d 100644
--- a/src/mesa/drivers/dri/r600/r700_render.c
+++ b/src/mesa/drivers/dri/r600/r700_render.c
@@ -151,6 +151,9 @@ GLboolean r700SyncSurf(context_t *context,
     BATCH_LOCALS(&context->radeon);
     uint32_t cp_coher_size;
 
+    if (!pbo)
+	    return GL_FALSE;
+
     if (pbo->size == 0xffffffff)
 	    cp_coher_size = 0xffffffff;
     else




More information about the mesa-commit mailing list