diff options
| author | Keith Whitwell <keithw@vmware.com> | 2009-11-04 16:42:44 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2009-11-04 16:42:44 +0000 | 
| commit | 99394a737a46999a2fc08915e9f1408246109c4a (patch) | |
| tree | cf13e775a88bd3ffa727a9246e626b8e28c88cd7 | |
| parent | 5f8dde99ed62beaf1c2590515c33ed8b5076ed8d (diff) | |
i965g: add some missing texture creation code
| -rw-r--r-- | src/gallium/drivers/i965/brw_context.c | 1 | ||||
| -rw-r--r-- | src/gallium/drivers/i965/brw_screen_texture.c | 32 | 
2 files changed, 32 insertions, 1 deletions
| diff --git a/src/gallium/drivers/i965/brw_context.c b/src/gallium/drivers/i965/brw_context.c index 30cc243255..0692412b32 100644 --- a/src/gallium/drivers/i965/brw_context.c +++ b/src/gallium/drivers/i965/brw_context.c @@ -107,6 +107,7 @@ struct pipe_context *brw_create_context(struct pipe_screen *screen)     //ctx->Shader.EmitCondCodes = GL_TRUE;     //ctx->Shader.EmitNVTempInitialization = GL_TRUE; +   brw->base.screen = screen;     brw->base.destroy = brw_destroy_context;     brw_pipe_blend_init( brw ); diff --git a/src/gallium/drivers/i965/brw_screen_texture.c b/src/gallium/drivers/i965/brw_screen_texture.c index 48b3451bfc..fe3e57da90 100644 --- a/src/gallium/drivers/i965/brw_screen_texture.c +++ b/src/gallium/drivers/i965/brw_screen_texture.c @@ -30,6 +30,7 @@    */  #include "util/u_memory.h" +#include "util/u_simple_list.h"  #include "brw_screen.h"  #include "brw_defines.h" @@ -190,8 +191,18 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,     if (tex == NULL)        return NULL; +   memcpy(&tex->base, templ, sizeof *templ); +   pipe_reference_init(&tex->base.reference, 1); +   tex->base.screen = screen; + +   /* XXX: compressed textures need special treatment here +    */ +   tex->cpp = pf_get_size(tex->base.format);     tex->compressed = pf_is_compressed(tex->base.format); +   make_empty_list(&tex->views[0]); +   make_empty_list(&tex->views[1]); +     /* XXX: No tiling with compressed textures??      */     if (tex->compressed == 0  @@ -209,11 +220,30 @@ static struct pipe_texture *brw_texture_create( struct pipe_screen *screen,     } -   memcpy(&tex->base, templ, sizeof *templ); +     if (!brw_texture_layout( bscreen, tex ))        goto fail; +    +   if (templ->tex_usage & PIPE_TEXTURE_USAGE_RENDER_TARGET) { +   }  +   else if (templ->tex_usage & (PIPE_TEXTURE_USAGE_DISPLAY_TARGET | +                            PIPE_TEXTURE_USAGE_PRIMARY)) { +   } +   else if (templ->tex_usage & PIPE_TEXTURE_USAGE_DEPTH_STENCIL) { +   } +   else if (templ->tex_usage & PIPE_TEXTURE_USAGE_SAMPLER) { +   } +    +   if (templ->tex_usage & PIPE_TEXTURE_USAGE_DYNAMIC) { +   } + +   tex->bo = bscreen->sws->bo_alloc( bscreen->sws, +                                     BRW_USAGE_SAMPLER, +                                     tex->pitch * tex->total_height * tex->cpp, +                                     64 ); +     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); | 
