Browse Source

softpipe: Implement texture blankets.

tags/mesa_20090313
José Fonseca 17 years ago
parent
commit
1942e29bf7
1 changed files with 34 additions and 0 deletions
  1. 34
    0
      src/gallium/drivers/softpipe/sp_texture.c

+ 34
- 0
src/gallium/drivers/softpipe/sp_texture.c View File

@@ -162,6 +162,39 @@ softpipe_texture_create(struct pipe_screen *screen,
}


static struct pipe_texture *
softpipe_texture_blanket(struct pipe_screen * screen,
const struct pipe_texture *base,
const unsigned *stride,
struct pipe_buffer *buffer)
{
struct softpipe_texture *spt;
assert(screen);

/* Only supports one type */
if (base->target != PIPE_TEXTURE_2D ||
base->last_level != 0 ||
base->depth[0] != 1) {
return NULL;
}

spt = CALLOC_STRUCT(softpipe_texture);
if (!spt)
return NULL;

spt->base = *base;
spt->base.refcount = 1;
spt->base.screen = screen;
spt->base.nblocksx[0] = pf_get_nblocksx(&spt->base.block, spt->base.width[0]);
spt->base.nblocksy[0] = pf_get_nblocksy(&spt->base.block, spt->base.height[0]);
spt->stride[0] = stride[0];

pipe_buffer_reference(screen->winsys, &spt->buffer, buffer);

return &spt->base;
}


static void
softpipe_texture_release(struct pipe_screen *screen,
struct pipe_texture **pt)
@@ -309,6 +342,7 @@ void
softpipe_init_screen_texture_funcs(struct pipe_screen *screen)
{
screen->texture_create = softpipe_texture_create;
screen->texture_blanket = softpipe_texture_blanket;
screen->texture_release = softpipe_texture_release;

screen->get_tex_surface = softpipe_get_tex_surface;

Loading…
Cancel
Save