panfrost: Allocate UBOs on the stack, not the heap

Saves a call to calloc (the maximum size is small and known at
compile-time) and fixes a leak.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
Alyssa Rosenzweig
2019-07-15 11:30:35 -07:00
parent 0ba508d7a3
commit fae790ecfc
3 changed files with 5 additions and 2 deletions

View File

@@ -1283,7 +1283,7 @@ panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
assert(ubo_count >= 1);
size_t sz = sizeof(struct mali_uniform_buffer_meta) * ubo_count;
struct mali_uniform_buffer_meta *ubos = calloc(sz, 1);
struct mali_uniform_buffer_meta ubos[PAN_MAX_CONST_BUFFERS];
/* Upload uniforms as a UBO */
ubos[0].size = MALI_POSITIVE((2 + uniform_count));

View File

@@ -258,7 +258,7 @@ panfrost_get_shader_param(struct pipe_screen *screen,
return 16 * 1024 * sizeof(float);
case PIPE_SHADER_CAP_MAX_CONST_BUFFERS:
return 16;
return PAN_MAX_CONST_BUFFERS;
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
return 0;

View File

@@ -42,6 +42,9 @@ struct panfrost_context;
struct panfrost_resource;
struct panfrost_screen;
/* Driver limits */
#define PAN_MAX_CONST_BUFFERS 16
/* Flags for allocated memory */
/* This memory region is executable */