From e6428092f5e1f5e2dc59601487096fd0ebb3ba6c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 2 Apr 2017 02:13:12 +0200 Subject: [PATCH] gallium: decrease the size of pipe_resource - 64 -> 48 bytes MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Some other changes needed here. Reviewed-by: Nicolai Hähnle Reviewed-by: Brian Paul --- src/gallium/auxiliary/rbug/rbug_texture.c | 4 ++-- src/gallium/auxiliary/rbug/rbug_texture.h | 4 ++-- src/gallium/auxiliary/vl/vl_video_buffer.c | 6 ++++-- src/gallium/drivers/rbug/rbug_core.c | 2 +- src/gallium/include/pipe/p_state.h | 12 ++++++------ src/mesa/state_tracker/st_cb_texture.c | 15 ++++++++++----- src/mesa/state_tracker/st_texture.c | 17 +++++++++-------- src/mesa/state_tracker/st_texture.h | 14 +++++++------- 8 files changed, 41 insertions(+), 33 deletions(-) diff --git a/src/gallium/auxiliary/rbug/rbug_texture.c b/src/gallium/auxiliary/rbug/rbug_texture.c index ca051473504..3ee5e142b76 100644 --- a/src/gallium/auxiliary/rbug/rbug_texture.c +++ b/src/gallium/auxiliary/rbug/rbug_texture.c @@ -283,9 +283,9 @@ int rbug_send_texture_info_reply(struct rbug_connection *__con, uint32_t format, uint32_t *width, uint32_t width_len, - uint32_t *height, + uint16_t *height, uint32_t height_len, - uint32_t *depth, + uint16_t *depth, uint32_t depth_len, uint32_t blockw, uint32_t blockh, diff --git a/src/gallium/auxiliary/rbug/rbug_texture.h b/src/gallium/auxiliary/rbug/rbug_texture.h index 59c914053ad..269e5961148 100644 --- a/src/gallium/auxiliary/rbug/rbug_texture.h +++ b/src/gallium/auxiliary/rbug/rbug_texture.h @@ -166,9 +166,9 @@ int rbug_send_texture_info_reply(struct rbug_connection *__con, uint32_t format, uint32_t *width, uint32_t width_len, - uint32_t *height, + uint16_t *height, uint32_t height_len, - uint32_t *depth, + uint16_t *depth, uint32_t depth_len, uint32_t blockw, uint32_t blockh, diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.c b/src/gallium/auxiliary/vl/vl_video_buffer.c index f6b3cb5e9f9..3b97ac81af9 100644 --- a/src/gallium/auxiliary/vl/vl_video_buffer.c +++ b/src/gallium/auxiliary/vl/vl_video_buffer.c @@ -248,6 +248,8 @@ vl_video_buffer_template(struct pipe_resource *templ, unsigned depth, unsigned array_size, unsigned usage, unsigned plane) { + unsigned height = tmpl->height; + memset(templ, 0, sizeof(*templ)); if (depth > 1) templ->target = PIPE_TEXTURE_3D; @@ -257,14 +259,14 @@ vl_video_buffer_template(struct pipe_resource *templ, templ->target = PIPE_TEXTURE_2D; templ->format = resource_format; templ->width0 = tmpl->width; - templ->height0 = tmpl->height; templ->depth0 = depth; templ->array_size = array_size; templ->bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET | tmpl->bind; 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); + templ->height0 = height; } static void diff --git a/src/gallium/drivers/rbug/rbug_core.c b/src/gallium/drivers/rbug/rbug_core.c index 64c2d63a789..82bcef8d03b 100644 --- a/src/gallium/drivers/rbug/rbug_core.c +++ b/src/gallium/drivers/rbug/rbug_core.c @@ -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_list *ptr; struct pipe_resource *t; - unsigned num_layers; + uint16_t num_layers; mtx_lock(&rb_screen->list_mutex); foreach(ptr, &rb_screen->resources) { diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index dc2b329f7a2..79c76484513 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -497,14 +497,14 @@ struct pipe_resource { struct pipe_reference reference; 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 height0; - unsigned depth0; - unsigned array_size; + unsigned width0; /**< Used by both buffers and textures. */ + uint16_t height0; /* Textures: The maximum height/depth/array_size is 16k. */ + uint16_t depth0; + 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 nr_samples:8; /**< for multisampled surfaces, nr of samples */ unsigned usage:8; /**< PIPE_USAGE_x (not a bitmask) */ diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 1b486d7c3c8..99c59f77a37 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -497,7 +497,8 @@ guess_and_alloc_texture(struct st_context *st, const struct gl_texture_image *firstImage; GLuint lastLevel, width, height, depth; GLuint bindings; - GLuint ptWidth, ptHeight, ptDepth, ptLayers; + unsigned ptWidth; + uint16_t ptHeight, ptDepth, ptLayers; enum pipe_format fmt; bool guessed_box = false; @@ -649,7 +650,8 @@ st_AllocTextureImageBuffer(struct gl_context *ctx, enum pipe_format format = st_mesa_format_to_pipe_format(st, texImage->TexFormat); 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, width, height, depth, @@ -2443,7 +2445,8 @@ st_finalize_texture(struct gl_context *ctx, GLuint face; const struct st_texture_image *firstImage; enum pipe_format firstImageFormat; - GLuint ptWidth, ptHeight, ptDepth, ptLayers, ptNumSamples; + unsigned ptWidth; + uint16_t ptHeight, ptDepth, ptLayers, ptNumSamples; if (tObj->Immutable) 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 */ { - GLuint width, height, depth; + unsigned width; + uint16_t height, depth; st_gl_texture_dims_to_pipe_dims(stObj->base.Target, firstImage->base.Width2, @@ -2646,7 +2650,8 @@ st_AllocTextureStorage(struct gl_context *ctx, struct st_context *st = st_context(ctx); struct st_texture_object *stObj = st_texture_object(texObj); 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; GLint level; GLuint num_samples = texImage->NumSamples; diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c index 7b72ffd0501..2e9856dcdfd 100644 --- a/src/mesa/state_tracker/st_texture.c +++ b/src/mesa/state_tracker/st_texture.c @@ -111,13 +111,13 @@ st_texture_create(struct st_context *st, */ void st_gl_texture_dims_to_pipe_dims(GLenum texture, - GLuint widthIn, - GLuint heightIn, - GLuint depthIn, - GLuint *widthOut, - GLuint *heightOut, - GLuint *depthOut, - GLuint *layersOut) + unsigned widthIn, + uint16_t heightIn, + uint16_t depthIn, + unsigned *widthOut, + uint16_t *heightOut, + uint16_t *depthOut, + uint16_t *layersOut) { switch (texture) { case GL_TEXTURE_1D: @@ -202,7 +202,8 @@ st_texture_match_image(struct st_context *st, const struct pipe_resource *pt, 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. */ diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index 00c30f06cf3..44b07da10bc 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -202,13 +202,13 @@ st_texture_create(struct st_context *st, extern void st_gl_texture_dims_to_pipe_dims(GLenum texture, - GLuint widthIn, - GLuint heightIn, - GLuint depthIn, - GLuint *widthOut, - GLuint *heightOut, - GLuint *depthOut, - GLuint *layersOut); + unsigned widthIn, + uint16_t heightIn, + uint16_t depthIn, + unsigned *widthOut, + uint16_t *heightOut, + uint16_t *depthOut, + uint16_t *layersOut); /* Check if an image fits into an existing texture object. */ -- 2.30.2