summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/i965
diff options
context:
space:
mode:
authorVinson Lee <[email protected]>2010-02-21 01:19:47 -0800
committerVinson Lee <[email protected]>2010-02-21 01:19:47 -0800
commit0b83f48e8263ab9ea7c30a929f1d5764b9c61d2a (patch)
tree1a0ce87f456d8011192ffbf2a1be7cd5262d7020 /src/gallium/drivers/i965
parentd1aafb33b5193db351ece5887edad1c908cbf36b (diff)
i965g: Fix assertions that were always true.
The surface_format field is 9 bits wide which has a maximum value of 511. BRW_SURFACEFORMAT_INVALID has a value of 4095 which exceeds the width of the surface_format field. This patch asserts that the format is not BRW_SURFACEFORMAT_INVALID before assignment to the surface_format field.
Diffstat (limited to 'src/gallium/drivers/i965')
-rw-r--r--src/gallium/drivers/i965/brw_screen_texture.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/gallium/drivers/i965/brw_screen_texture.c b/src/gallium/drivers/i965/brw_screen_texture.c
index feb9d5f7657..8bdd43cf140 100644
--- a/src/gallium/drivers/i965/brw_screen_texture.c
+++ b/src/gallium/drivers/i965/brw_screen_texture.c
@@ -191,6 +191,7 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,
struct brw_texture *tex;
enum brw_buffer_type buffer_type;
enum pipe_error ret;
+ GLuint format;
tex = CALLOC_STRUCT(brw_texture);
if (tex == NULL)
@@ -248,8 +249,10 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,
tex->ss.ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
tex->ss.ss0.surface_type = translate_tex_target(tex->base.target);
- tex->ss.ss0.surface_format = translate_tex_format(tex->base.format);
- assert(tex->ss.ss0.surface_format != BRW_SURFACEFORMAT_INVALID);
+
+ format = translate_tex_target(tex->base.format);
+ assert(format != BRW_SURFACEFORMAT_INVALID);
+ tex->ss.ss0.surface_format = format;
/* This is ok for all textures with channel width 8bit or less:
*/
@@ -474,6 +477,7 @@ brw_texture_blanket_winsys_buffer(struct pipe_screen *screen,
{
struct brw_screen *bscreen = brw_screen(screen);
struct brw_texture *tex;
+ GLuint format;
if (templ->target != PIPE_TEXTURE_2D ||
templ->last_level != 0 ||
@@ -518,8 +522,10 @@ brw_texture_blanket_winsys_buffer(struct pipe_screen *screen,
tex->ss.ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW;
tex->ss.ss0.surface_type = translate_tex_target(tex->base.target);
- tex->ss.ss0.surface_format = translate_tex_format(tex->base.format);
- assert(tex->ss.ss0.surface_format != BRW_SURFACEFORMAT_INVALID);
+
+ format = translate_tex_format(tex->base.format);
+ assert(format != BRW_SURFACEFORMAT_INVALID);
+ tex->ss.ss0.surface_format = format;
/* This is ok for all textures with channel width 8bit or less:
*/