Mesa (7.10): st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
Marek Olšák
mareko at kemper.freedesktop.org
Sat Mar 12 21:25:35 UTC 2011
Module: Mesa
Branch: 7.10
Commit: 3a02a2bf25945d4afbb72add08d7d7b983e77ee8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3a02a2bf25945d4afbb72add08d7d7b983e77ee8
Author: Marek Olšák <maraeo at gmail.com>
Date: Sun Feb 20 16:50:48 2011 +0100
st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL
This fixes the game Tiny and Big.
(cherry picked from commit 7942e6a5ae0113f1cbdf62b772849cf6cdd4eca1)
---
src/mesa/state_tracker/st_cb_clear.c | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
index c2d554d..5aedeb2 100644
--- a/src/mesa/state_tracker/st_cb_clear.c
+++ b/src/mesa/state_tracker/st_cb_clear.c
@@ -297,9 +297,11 @@ clear_with_quad(struct gl_context *ctx,
cso_set_fragment_shader_handle(st->cso_context, st->clear.fs);
cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);
- st_translate_color(ctx->Color.ClearColor,
- ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
- clearColor);
+ if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
+ st_translate_color(ctx->Color.ClearColor,
+ ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
+ clearColor);
+ }
/* draw quad matching scissor rect */
draw_quad(st, x0, y0, x1, y1, (GLfloat) ctx->Depth.Clear, clearColor);
@@ -551,9 +553,11 @@ st_Clear(struct gl_context *ctx, GLbitfield mask)
ctx->DrawBuffer->Visual.stencilBits == 0))
clear_buffers |= PIPE_CLEAR_DEPTHSTENCIL;
- st_translate_color(ctx->Color.ClearColor,
- ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
- clearColor);
+ if (ctx->DrawBuffer->_ColorDrawBuffers[0]) {
+ st_translate_color(ctx->Color.ClearColor,
+ ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat,
+ clearColor);
+ }
st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
ctx->Depth.Clear, ctx->Stencil.Clear);
More information about the mesa-commit
mailing list