mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-17 15:00:31 +01:00
softpipe: Implement texture blankets.
This commit is contained in:
parent
194cfc7a4e
commit
1942e29bf7
1 changed files with 34 additions and 0 deletions
|
|
@ -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…
Add table
Reference in a new issue