mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
radeonsi: fix shader size and handling
We should always upload the shader here. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
parent
fe41287ffa
commit
d51b9b70d5
1 changed files with 15 additions and 15 deletions
|
|
@ -554,6 +554,7 @@ int si_pipe_shader_create(
|
|||
unsigned char * inst_bytes;
|
||||
unsigned inst_byte_count;
|
||||
unsigned i;
|
||||
uint32_t *ptr;
|
||||
bool dump;
|
||||
|
||||
dump = debug_get_bool_option("RADEON_DUMP_SHADERS", FALSE);
|
||||
|
|
@ -608,24 +609,23 @@ int si_pipe_shader_create(
|
|||
tgsi_parse_free(&si_shader_ctx.parse);
|
||||
|
||||
/* copy new shader */
|
||||
si_resource_reference(&shader->bo, NULL);
|
||||
shader->bo = si_resource_create_custom(ctx->screen, PIPE_USAGE_IMMUTABLE,
|
||||
inst_byte_count - 12);
|
||||
if (shader->bo == NULL) {
|
||||
uint32_t *ptr;
|
||||
|
||||
shader->bo = si_resource_create_custom(ctx->screen, PIPE_USAGE_IMMUTABLE, inst_byte_count);
|
||||
if (shader->bo == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
ptr = (uint32_t*)rctx->ws->buffer_map(shader->bo->cs_buf, rctx->cs, PIPE_TRANSFER_WRITE);
|
||||
if (0 /*R600_BIG_ENDIAN*/) {
|
||||
for (i = 0; i < (inst_byte_count-12)/4; ++i) {
|
||||
ptr[i] = util_bswap32(*(uint32_t*)(inst_bytes+12 + i*4));
|
||||
}
|
||||
} else {
|
||||
memcpy(ptr, inst_bytes + 12, inst_byte_count - 12);
|
||||
}
|
||||
rctx->ws->buffer_unmap(shader->bo->cs_buf);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
ptr = (uint32_t*)rctx->ws->buffer_map(shader->bo->cs_buf, rctx->cs, PIPE_TRANSFER_WRITE);
|
||||
if (0 /*R600_BIG_ENDIAN*/) {
|
||||
for (i = 0; i < (inst_byte_count-12)/4; ++i) {
|
||||
ptr[i] = util_bswap32(*(uint32_t*)(inst_bytes+12 + i*4));
|
||||
}
|
||||
} else {
|
||||
memcpy(ptr, inst_bytes + 12, inst_byte_count - 12);
|
||||
}
|
||||
rctx->ws->buffer_unmap(shader->bo->cs_buf);
|
||||
|
||||
free(inst_bytes);
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue