mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-31 16:20:13 +01:00
gallium: change pipe->texture_create() to operate like the CSO functions
Now, pass in a template object and return a new object.
This commit is contained in:
parent
20f16a6ae4
commit
64ca0678ee
10 changed files with 72 additions and 76 deletions
|
|
@ -79,31 +79,30 @@ cell_texture_layout(struct cell_texture * spt)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
cell_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
struct pipe_texture *
|
||||
cell_texture_create(struct pipe_context *pipe, const struct pipe_texture *templat)
|
||||
{
|
||||
struct cell_texture *spt = REALLOC(*pt, sizeof(struct pipe_texture),
|
||||
sizeof(struct cell_texture));
|
||||
struct cell_texture *spt = CALLOC_STRUCT(cell_texture);
|
||||
if (!spt)
|
||||
return NULL;
|
||||
|
||||
if (spt) {
|
||||
memset(&spt->base + 1, 0,
|
||||
sizeof(struct cell_texture) - sizeof(struct pipe_texture));
|
||||
spt->base = *templat;
|
||||
|
||||
cell_texture_layout(spt);
|
||||
cell_texture_layout(spt);
|
||||
|
||||
spt->buffer = pipe->winsys->buffer_create(pipe->winsys, 32,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
spt->buffer_size);
|
||||
spt->buffer = pipe->winsys->buffer_create(pipe->winsys, 32,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
spt->buffer_size);
|
||||
|
||||
if (!spt->buffer) {
|
||||
FREE(spt);
|
||||
spt = NULL;
|
||||
}
|
||||
if (!spt->buffer) {
|
||||
FREE(spt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*pt = &spt->base;
|
||||
return &spt->base;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
cell_texture_release(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -60,8 +60,9 @@ cell_texture(struct pipe_texture *pt)
|
|||
|
||||
|
||||
|
||||
extern void
|
||||
cell_texture_create(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
extern struct pipe_texture *
|
||||
cell_texture_create(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat);
|
||||
|
||||
extern void
|
||||
cell_texture_release(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
|
|
|
|||
|
|
@ -477,17 +477,17 @@ i945_miptree_layout(struct pipe_context *pipe, struct i915_texture * tex)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
i915_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
|
||||
struct pipe_texture *
|
||||
i915_texture_create(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat)
|
||||
{
|
||||
struct i915_texture *tex = REALLOC(*pt, sizeof(struct pipe_texture),
|
||||
sizeof(struct i915_texture));
|
||||
struct i915_texture *tex = CALLOC_STRUCT(i915_texture);
|
||||
|
||||
if (tex) {
|
||||
struct i915_context *i915 = i915_context(pipe);
|
||||
|
||||
memset(&tex->base + 1, 0,
|
||||
sizeof(struct i915_texture) - sizeof(struct pipe_texture));
|
||||
tex->base = *templat;
|
||||
|
||||
if (i915->flags.is_i945 ? i945_miptree_layout(pipe, tex) :
|
||||
i915_miptree_layout(pipe, tex))
|
||||
|
|
@ -498,13 +498,14 @@ i915_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
|||
|
||||
if (!tex->buffer) {
|
||||
FREE(tex);
|
||||
tex = NULL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
*pt = &tex->base;
|
||||
return &tex->base;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
i915_texture_release(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,8 +6,9 @@ struct pipe_context;
|
|||
struct pipe_texture;
|
||||
|
||||
|
||||
extern void
|
||||
i915_texture_create(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
struct pipe_texture *
|
||||
i915_texture_create(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat);
|
||||
|
||||
extern void
|
||||
i915_texture_release(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
|
|
|
|||
|
|
@ -299,15 +299,14 @@ static boolean brw_miptree_layout(struct pipe_context *pipe, struct brw_texture
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
brw_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
|
||||
struct pipe_texture *
|
||||
brw_texture_create(struct pipe_context *pipe, const struct pipe_texture *templat)
|
||||
{
|
||||
struct brw_texture *tex = REALLOC(*pt, sizeof(struct pipe_texture),
|
||||
sizeof(struct brw_texture));
|
||||
struct brw_texture *tex = CALLOC_STRUCT(brw_texture);
|
||||
|
||||
if (tex) {
|
||||
memset(&tex->base + 1, 0,
|
||||
sizeof(struct brw_texture) - sizeof(struct pipe_texture));
|
||||
tex->base = *templat;
|
||||
|
||||
if (brw_miptree_layout(pipe, tex))
|
||||
tex->buffer = pipe->winsys->buffer_create(pipe->winsys, 64,
|
||||
|
|
@ -317,11 +316,11 @@ brw_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
|||
|
||||
if (!tex->buffer) {
|
||||
FREE(tex);
|
||||
tex = NULL;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
*pt = &tex->base;
|
||||
return &tex->base;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
struct pipe_context;
|
||||
struct pipe_texture;
|
||||
|
||||
extern void
|
||||
brw_texture_create(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
extern struct pipe_texture *
|
||||
brw_texture_create(struct pipe_context *pipe, const struct pipe_texture *templat);
|
||||
|
||||
extern void
|
||||
brw_texture_release(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
|
|
|
|||
|
|
@ -199,8 +199,8 @@ struct pipe_context {
|
|||
/*
|
||||
* Texture functions
|
||||
*/
|
||||
void (*texture_create)(struct pipe_context *pipe,
|
||||
struct pipe_texture **pt);
|
||||
struct pipe_texture * (*texture_create)(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat);
|
||||
|
||||
void (*texture_release)(struct pipe_context *pipe,
|
||||
struct pipe_texture **pt);
|
||||
|
|
|
|||
|
|
@ -79,31 +79,30 @@ softpipe_texture_layout(struct softpipe_texture * spt)
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
softpipe_texture_create(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
struct pipe_texture *
|
||||
softpipe_texture_create(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat)
|
||||
{
|
||||
struct softpipe_texture *spt = REALLOC(*pt, sizeof(struct pipe_texture),
|
||||
sizeof(struct softpipe_texture));
|
||||
struct softpipe_texture *spt = CALLOC_STRUCT(softpipe_texture);
|
||||
if (!spt)
|
||||
return NULL;
|
||||
|
||||
if (spt) {
|
||||
memset(&spt->base + 1, 0,
|
||||
sizeof(struct softpipe_texture) - sizeof(struct pipe_texture));
|
||||
spt->base = *templat;
|
||||
|
||||
softpipe_texture_layout(spt);
|
||||
softpipe_texture_layout(spt);
|
||||
|
||||
spt->buffer = pipe->winsys->buffer_create(pipe->winsys, 32,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
spt->buffer_size);
|
||||
|
||||
if (!spt->buffer) {
|
||||
FREE(spt);
|
||||
spt = NULL;
|
||||
}
|
||||
spt->buffer = pipe->winsys->buffer_create(pipe->winsys, 32,
|
||||
PIPE_BUFFER_USAGE_PIXEL,
|
||||
spt->buffer_size);
|
||||
if (!spt->buffer) {
|
||||
FREE(spt);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
*pt = &spt->base;
|
||||
return &spt->base;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
softpipe_texture_release(struct pipe_context *pipe, struct pipe_texture **pt)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,8 +55,9 @@ softpipe_texture(struct pipe_texture *pt)
|
|||
|
||||
|
||||
|
||||
extern void
|
||||
softpipe_texture_create(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
extern struct pipe_texture *
|
||||
softpipe_texture_create(struct pipe_context *pipe,
|
||||
const struct pipe_texture *templat);
|
||||
|
||||
extern void
|
||||
softpipe_texture_release(struct pipe_context *pipe, struct pipe_texture **pt);
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ st_texture_create(struct st_context *st,
|
|||
GLuint depth0,
|
||||
GLuint compress_byte)
|
||||
{
|
||||
struct pipe_texture *pt = CALLOC_STRUCT(pipe_texture);
|
||||
struct pipe_texture pt;
|
||||
|
||||
assert(target <= PIPE_TEXTURE_CUBE);
|
||||
|
||||
|
|
@ -82,25 +82,20 @@ st_texture_create(struct st_context *st,
|
|||
_mesa_lookup_enum_by_nr(target),
|
||||
_mesa_lookup_enum_by_nr(format), first_level, last_level);
|
||||
|
||||
if (!pt)
|
||||
return NULL;
|
||||
|
||||
assert(format);
|
||||
|
||||
pt->target = target;
|
||||
pt->format = format;
|
||||
pt->first_level = first_level;
|
||||
pt->last_level = last_level;
|
||||
pt->width[0] = width0;
|
||||
pt->height[0] = height0;
|
||||
pt->depth[0] = depth0;
|
||||
pt->compressed = compress_byte ? 1 : 0;
|
||||
pt->cpp = pt->compressed ? compress_byte : st_sizeof_format(format);
|
||||
pt->refcount = 1;
|
||||
pt.target = target;
|
||||
pt.format = format;
|
||||
pt.first_level = first_level;
|
||||
pt.last_level = last_level;
|
||||
pt.width[0] = width0;
|
||||
pt.height[0] = height0;
|
||||
pt.depth[0] = depth0;
|
||||
pt.compressed = compress_byte ? 1 : 0;
|
||||
pt.cpp = pt.compressed ? compress_byte : st_sizeof_format(format);
|
||||
pt.refcount = 1;
|
||||
|
||||
st->pipe->texture_create(st->pipe, &pt);
|
||||
|
||||
return pt;
|
||||
return st->pipe->texture_create(st->pipe, &pt);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue