gallium: decrease the size of pipe_resource - 64 -> 48 bytes

Some other changes needed here.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Marek Olšák 2017-04-02 02:13:12 +02:00
parent 3dfe61ed6e
commit e6428092f5
8 changed files with 41 additions and 33 deletions

View file

@ -283,9 +283,9 @@ int rbug_send_texture_info_reply(struct rbug_connection *__con,
uint32_t format, uint32_t format,
uint32_t *width, uint32_t *width,
uint32_t width_len, uint32_t width_len,
uint32_t *height, uint16_t *height,
uint32_t height_len, uint32_t height_len,
uint32_t *depth, uint16_t *depth,
uint32_t depth_len, uint32_t depth_len,
uint32_t blockw, uint32_t blockw,
uint32_t blockh, uint32_t blockh,

View file

@ -166,9 +166,9 @@ int rbug_send_texture_info_reply(struct rbug_connection *__con,
uint32_t format, uint32_t format,
uint32_t *width, uint32_t *width,
uint32_t width_len, uint32_t width_len,
uint32_t *height, uint16_t *height,
uint32_t height_len, uint32_t height_len,
uint32_t *depth, uint16_t *depth,
uint32_t depth_len, uint32_t depth_len,
uint32_t blockw, uint32_t blockw,
uint32_t blockh, uint32_t blockh,

View file

@ -248,6 +248,8 @@ vl_video_buffer_template(struct pipe_resource *templ,
unsigned depth, unsigned array_size, unsigned depth, unsigned array_size,
unsigned usage, unsigned plane) unsigned usage, unsigned plane)
{ {
unsigned height = tmpl->height;
memset(templ, 0, sizeof(*templ)); memset(templ, 0, sizeof(*templ));
if (depth > 1) if (depth > 1)
templ->target = PIPE_TEXTURE_3D; templ->target = PIPE_TEXTURE_3D;
@ -257,14 +259,14 @@ vl_video_buffer_template(struct pipe_resource *templ,
templ->target = PIPE_TEXTURE_2D; templ->target = PIPE_TEXTURE_2D;
templ->format = resource_format; templ->format = resource_format;
templ->width0 = tmpl->width; templ->width0 = tmpl->width;
templ->height0 = tmpl->height;
templ->depth0 = depth; templ->depth0 = depth;
templ->array_size = array_size; templ->array_size = array_size;
templ->bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET | tmpl->bind; templ->bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET | tmpl->bind;
templ->usage = usage; templ->usage = usage;
vl_video_buffer_adjust_size(&templ->width0, &templ->height0, plane, vl_video_buffer_adjust_size(&templ->width0, &height, plane,
tmpl->chroma_format, false); tmpl->chroma_format, false);
templ->height0 = height;
} }
static void static void

View file

@ -205,7 +205,7 @@ rbug_texture_info(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_
struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header; struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header;
struct rbug_list *ptr; struct rbug_list *ptr;
struct pipe_resource *t; struct pipe_resource *t;
unsigned num_layers; uint16_t num_layers;
mtx_lock(&rb_screen->list_mutex); mtx_lock(&rb_screen->list_mutex);
foreach(ptr, &rb_screen->resources) { foreach(ptr, &rb_screen->resources) {

View file

@ -497,14 +497,14 @@ struct pipe_resource
{ {
struct pipe_reference reference; struct pipe_reference reference;
struct pipe_screen *screen; /**< screen that this texture belongs to */ struct pipe_screen *screen; /**< screen that this texture belongs to */
enum pipe_texture_target target; /**< PIPE_TEXTURE_x */
enum pipe_format format; /**< PIPE_FORMAT_x */
unsigned width0; unsigned width0; /**< Used by both buffers and textures. */
unsigned height0; uint16_t height0; /* Textures: The maximum height/depth/array_size is 16k. */
unsigned depth0; uint16_t depth0;
unsigned array_size; uint16_t array_size;
enum pipe_format format:16; /**< PIPE_FORMAT_x */
enum pipe_texture_target target:8; /**< PIPE_TEXTURE_x */
unsigned last_level:8; /**< Index of last mipmap level present/defined */ unsigned last_level:8; /**< Index of last mipmap level present/defined */
unsigned nr_samples:8; /**< for multisampled surfaces, nr of samples */ unsigned nr_samples:8; /**< for multisampled surfaces, nr of samples */
unsigned usage:8; /**< PIPE_USAGE_x (not a bitmask) */ unsigned usage:8; /**< PIPE_USAGE_x (not a bitmask) */

View file

@ -497,7 +497,8 @@ guess_and_alloc_texture(struct st_context *st,
const struct gl_texture_image *firstImage; const struct gl_texture_image *firstImage;
GLuint lastLevel, width, height, depth; GLuint lastLevel, width, height, depth;
GLuint bindings; GLuint bindings;
GLuint ptWidth, ptHeight, ptDepth, ptLayers; unsigned ptWidth;
uint16_t ptHeight, ptDepth, ptLayers;
enum pipe_format fmt; enum pipe_format fmt;
bool guessed_box = false; bool guessed_box = false;
@ -649,7 +650,8 @@ st_AllocTextureImageBuffer(struct gl_context *ctx,
enum pipe_format format = enum pipe_format format =
st_mesa_format_to_pipe_format(st, texImage->TexFormat); st_mesa_format_to_pipe_format(st, texImage->TexFormat);
GLuint bindings = default_bindings(st, format); GLuint bindings = default_bindings(st, format);
GLuint ptWidth, ptHeight, ptDepth, ptLayers; unsigned ptWidth;
uint16_t ptHeight, ptDepth, ptLayers;
st_gl_texture_dims_to_pipe_dims(stObj->base.Target, st_gl_texture_dims_to_pipe_dims(stObj->base.Target,
width, height, depth, width, height, depth,
@ -2443,7 +2445,8 @@ st_finalize_texture(struct gl_context *ctx,
GLuint face; GLuint face;
const struct st_texture_image *firstImage; const struct st_texture_image *firstImage;
enum pipe_format firstImageFormat; enum pipe_format firstImageFormat;
GLuint ptWidth, ptHeight, ptDepth, ptLayers, ptNumSamples; unsigned ptWidth;
uint16_t ptHeight, ptDepth, ptLayers, ptNumSamples;
if (tObj->Immutable) if (tObj->Immutable)
return GL_TRUE; return GL_TRUE;
@ -2505,7 +2508,8 @@ st_finalize_texture(struct gl_context *ctx,
/* Find size of level=0 Gallium mipmap image, plus number of texture layers */ /* Find size of level=0 Gallium mipmap image, plus number of texture layers */
{ {
GLuint width, height, depth; unsigned width;
uint16_t height, depth;
st_gl_texture_dims_to_pipe_dims(stObj->base.Target, st_gl_texture_dims_to_pipe_dims(stObj->base.Target,
firstImage->base.Width2, firstImage->base.Width2,
@ -2646,7 +2650,8 @@ st_AllocTextureStorage(struct gl_context *ctx,
struct st_context *st = st_context(ctx); struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(texObj); struct st_texture_object *stObj = st_texture_object(texObj);
struct pipe_screen *screen = st->pipe->screen; struct pipe_screen *screen = st->pipe->screen;
GLuint ptWidth, ptHeight, ptDepth, ptLayers, bindings; unsigned ptWidth, bindings;
uint16_t ptHeight, ptDepth, ptLayers;
enum pipe_format fmt; enum pipe_format fmt;
GLint level; GLint level;
GLuint num_samples = texImage->NumSamples; GLuint num_samples = texImage->NumSamples;

View file

@ -111,13 +111,13 @@ st_texture_create(struct st_context *st,
*/ */
void void
st_gl_texture_dims_to_pipe_dims(GLenum texture, st_gl_texture_dims_to_pipe_dims(GLenum texture,
GLuint widthIn, unsigned widthIn,
GLuint heightIn, uint16_t heightIn,
GLuint depthIn, uint16_t depthIn,
GLuint *widthOut, unsigned *widthOut,
GLuint *heightOut, uint16_t *heightOut,
GLuint *depthOut, uint16_t *depthOut,
GLuint *layersOut) uint16_t *layersOut)
{ {
switch (texture) { switch (texture) {
case GL_TEXTURE_1D: case GL_TEXTURE_1D:
@ -202,7 +202,8 @@ st_texture_match_image(struct st_context *st,
const struct pipe_resource *pt, const struct pipe_resource *pt,
const struct gl_texture_image *image) const struct gl_texture_image *image)
{ {
GLuint ptWidth, ptHeight, ptDepth, ptLayers; unsigned ptWidth;
uint16_t ptHeight, ptDepth, ptLayers;
/* Images with borders are never pulled into mipmap textures. /* Images with borders are never pulled into mipmap textures.
*/ */

View file

@ -202,13 +202,13 @@ st_texture_create(struct st_context *st,
extern void extern void
st_gl_texture_dims_to_pipe_dims(GLenum texture, st_gl_texture_dims_to_pipe_dims(GLenum texture,
GLuint widthIn, unsigned widthIn,
GLuint heightIn, uint16_t heightIn,
GLuint depthIn, uint16_t depthIn,
GLuint *widthOut, unsigned *widthOut,
GLuint *heightOut, uint16_t *heightOut,
GLuint *depthOut, uint16_t *depthOut,
GLuint *layersOut); uint16_t *layersOut);
/* Check if an image fits into an existing texture object. /* Check if an image fits into an existing texture object.
*/ */