mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 13:30:12 +01:00
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:
parent
3dfe61ed6e
commit
e6428092f5
8 changed files with 41 additions and 33 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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) */
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue