diff options
author | Vinson Lee <vlee@vmware.com> | 2010-02-21 01:19:47 -0800 |
---|---|---|
committer | Vinson Lee <vlee@vmware.com> | 2010-02-21 01:19:47 -0800 |
commit | 0b83f48e8263ab9ea7c30a929f1d5764b9c61d2a (patch) | |
tree | 1a0ce87f456d8011192ffbf2a1be7cd5262d7020 /src/gallium | |
parent | d1aafb33b5193db351ece5887edad1c908cbf36b (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')
-rw-r--r-- | src/gallium/drivers/i965/brw_screen_texture.c | 14 |
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 feb9d5f765..8bdd43cf14 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: */ |