glsl: don't use ralloc for blob creation

There is no need to use ralloc here.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Timothy Arceri
2017-03-10 11:30:01 +11:00
parent ca76a2ba1b
commit df1d5fc442
5 changed files with 17 additions and 22 deletions

View File

@@ -24,7 +24,6 @@
#include <string.h> #include <string.h>
#include "main/macros.h" #include "main/macros.h"
#include "util/ralloc.h"
#include "blob.h" #include "blob.h"
#define BLOB_INITIAL_SIZE 4096 #define BLOB_INITIAL_SIZE 4096
@@ -49,7 +48,7 @@ grow_to_fit(struct blob *blob, size_t additional)
to_allocate = MAX2(to_allocate, blob->allocated + additional); to_allocate = MAX2(to_allocate, blob->allocated + additional);
new_data = reralloc_size(blob, blob->data, to_allocate); new_data = realloc(blob->data, to_allocate);
if (new_data == NULL) if (new_data == NULL)
return false; return false;
@@ -88,11 +87,9 @@ align_blob_reader(struct blob_reader *blob, size_t alignment)
} }
struct blob * struct blob *
blob_create(void *mem_ctx) blob_create()
{ {
struct blob *blob; struct blob *blob = (struct blob *) malloc(sizeof(struct blob));
blob = ralloc(mem_ctx, struct blob);
if (blob == NULL) if (blob == NULL)
return NULL; return NULL;

View File

@@ -73,12 +73,12 @@ struct blob_reader {
}; };
/** /**
* Create a new, empty blob, belonging to \mem_ctx. * Create a new, empty blob.
* *
* \return The new blob, (or NULL in case of allocation failure). * \return The new blob, (or NULL in case of allocation failure).
*/ */
struct blob * struct blob *
blob_create(void *mem_ctx); blob_create(void);
/** /**
* Add some unstructured, fixed-size data to a blob. * Add some unstructured, fixed-size data to a blob.

View File

@@ -1224,7 +1224,7 @@ shader_cache_write_program_metadata(struct gl_context *ctx,
if (*prog->data->sha1 == 0) if (*prog->data->sha1 == 0)
return; return;
struct blob *metadata = blob_create(NULL); struct blob *metadata = blob_create();
write_uniforms(metadata, prog); write_uniforms(metadata, prog);
@@ -1272,7 +1272,7 @@ shader_cache_write_program_metadata(struct gl_context *ctx,
disk_cache_put(cache, prog->data->sha1, metadata->data, metadata->size); disk_cache_put(cache, prog->data->sha1, metadata->data, metadata->size);
ralloc_free(metadata); free(metadata);
if (ctx->_Shader->Flags & GLSL_CACHE_INFO) { if (ctx->_Shader->Flags & GLSL_CACHE_INFO) {
fprintf(stderr, "putting program metadata in cache: %s\n", fprintf(stderr, "putting program metadata in cache: %s\n",

View File

@@ -118,14 +118,13 @@ expect_equal_bytes(uint8_t *expected, uint8_t *actual,
static void static void
test_write_and_read_functions (void) test_write_and_read_functions (void)
{ {
void *ctx = ralloc_context(NULL);
struct blob *blob; struct blob *blob;
struct blob_reader reader; struct blob_reader reader;
uint8_t *reserved; uint8_t *reserved;
size_t str_offset, uint_offset; size_t str_offset, uint_offset;
uint8_t reserve_buf[sizeof(reserve_test_str)]; uint8_t reserve_buf[sizeof(reserve_test_str)];
blob = blob_create(ctx); blob = blob_create();
/*** Test blob by writing one of every possible kind of value. */ /*** Test blob by writing one of every possible kind of value. */
@@ -185,20 +184,19 @@ test_write_and_read_functions (void)
"read_consumes_all_bytes"); "read_consumes_all_bytes");
expect_equal(false, reader.overrun, "read_does_not_overrun"); expect_equal(false, reader.overrun, "read_does_not_overrun");
ralloc_free(ctx); free(blob);
} }
/* Test that data values are written and read with proper alignment. */ /* Test that data values are written and read with proper alignment. */
static void static void
test_alignment(void) test_alignment(void)
{ {
void *ctx = ralloc_context(NULL);
struct blob *blob; struct blob *blob;
struct blob_reader reader; struct blob_reader reader;
uint8_t bytes[] = "ABCDEFGHIJKLMNOP"; uint8_t bytes[] = "ABCDEFGHIJKLMNOP";
size_t delta, last, num_bytes; size_t delta, last, num_bytes;
blob = blob_create(ctx); blob = blob_create();
/* First, write an intptr value to the blob and capture that size. This is /* First, write an intptr value to the blob and capture that size. This is
* the expected offset between any pair of intptr values (if written with * the expected offset between any pair of intptr values (if written with
@@ -244,19 +242,18 @@ test_alignment(void)
"aligned read of intptr_t"); "aligned read of intptr_t");
} }
ralloc_free(ctx); free(blob);
} }
/* Test that we detect overrun. */ /* Test that we detect overrun. */
static void static void
test_overrun(void) test_overrun(void)
{ {
void *ctx =ralloc_context(NULL);
struct blob *blob; struct blob *blob;
struct blob_reader reader; struct blob_reader reader;
uint32_t value = 0xdeadbeef; uint32_t value = 0xdeadbeef;
blob = blob_create(ctx); blob = blob_create();
blob_write_uint32(blob, value); blob_write_uint32(blob, value);
@@ -267,7 +264,7 @@ test_overrun(void)
expect_equal(0, blob_read_uint32(&reader), "read at overrun"); expect_equal(0, blob_read_uint32(&reader), "read at overrun");
expect_equal(true, reader.overrun, "overrun flag set"); expect_equal(true, reader.overrun, "overrun flag set");
ralloc_free(ctx); free(blob);
} }
/* Test that we can read and write some large objects, (exercising the code in /* Test that we can read and write some large objects, (exercising the code in
@@ -284,7 +281,7 @@ test_big_objects(void)
size_t i; size_t i;
char *buf; char *buf;
blob = blob_create(ctx); blob = blob_create();
/* Initialize our buffer. */ /* Initialize our buffer. */
buf = ralloc_size(ctx, size); buf = ralloc_size(ctx, size);
@@ -311,6 +308,7 @@ test_big_objects(void)
expect_equal(false, reader.overrun, expect_equal(false, reader.overrun,
"overrun flag not set reading large objects"); "overrun flag not set reading large objects");
free(blob);
ralloc_free(ctx); ralloc_free(ctx);
} }

View File

@@ -68,7 +68,7 @@ st_store_tgsi_in_disk_cache(struct st_context *st, struct gl_program *prog,
return; return;
unsigned char *sha1; unsigned char *sha1;
struct blob *blob = blob_create(NULL); struct blob *blob = blob_create();
switch (prog->info.stage) { switch (prog->info.stage) {
case MESA_SHADER_VERTEX: { case MESA_SHADER_VERTEX: {
@@ -134,7 +134,7 @@ st_store_tgsi_in_disk_cache(struct st_context *st, struct gl_program *prog,
_mesa_shader_stage_to_string(prog->info.stage), sha1_buf); _mesa_shader_stage_to_string(prog->info.stage), sha1_buf);
} }
ralloc_free(blob); free(blob);
} }
static void static void