radeonsi: don't create temporary user buffer for r600_upload_const_buffer
This commit is contained in:
parent
0b7d48cbad
commit
65d451d9fa
|
@ -216,12 +216,9 @@ void r600_upload_index_buffer(struct r600_context *rctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **rbuffer,
|
void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **rbuffer,
|
||||||
|
const uint8_t *ptr, unsigned size,
|
||||||
uint32_t *const_offset)
|
uint32_t *const_offset)
|
||||||
{
|
{
|
||||||
if ((*rbuffer)->b.b.user_ptr) {
|
|
||||||
uint8_t *ptr = (*rbuffer)->b.b.user_ptr;
|
|
||||||
unsigned size = (*rbuffer)->b.b.width0;
|
|
||||||
|
|
||||||
*rbuffer = NULL;
|
*rbuffer = NULL;
|
||||||
|
|
||||||
if (R600_BIG_ENDIAN) {
|
if (R600_BIG_ENDIAN) {
|
||||||
|
@ -245,7 +242,4 @@ void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **
|
||||||
u_upload_data(rctx->uploader, 0, size, ptr, const_offset,
|
u_upload_data(rctx->uploader, 0, size, ptr, const_offset,
|
||||||
(struct pipe_resource**)rbuffer);
|
(struct pipe_resource**)rbuffer);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
*const_offset = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,6 +99,8 @@ void r600_texture_transfer_unmap(struct pipe_context *ctx,
|
||||||
|
|
||||||
struct r600_context;
|
struct r600_context;
|
||||||
|
|
||||||
void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **rbuffer, uint32_t *offset);
|
void r600_upload_const_buffer(struct r600_context *rctx, struct r600_resource **rbuffer,
|
||||||
|
const uint8_t *ptr, unsigned size,
|
||||||
|
uint32_t *const_offset);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -439,15 +439,12 @@ void r600_set_constant_buffer(struct pipe_context *ctx, uint shader, uint index,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cb->user_buffer) {
|
|
||||||
rbuffer = pipe_user_buffer_create(ctx->screen, cb->user_buffer,
|
|
||||||
cb->buffer_size,
|
|
||||||
PIPE_BIND_CONSTANT_BUFFER);
|
|
||||||
}
|
|
||||||
|
|
||||||
r600_inval_shader_cache(rctx);
|
r600_inval_shader_cache(rctx);
|
||||||
|
|
||||||
r600_upload_const_buffer(rctx, &rbuffer, &offset);
|
if (cb->user_buffer)
|
||||||
|
r600_upload_const_buffer(rctx, &rbuffer, cb->user_buffer, cb->buffer_size, &offset);
|
||||||
|
else
|
||||||
|
offset = 0;
|
||||||
va_offset = r600_resource_va(ctx->screen, (void*)rbuffer);
|
va_offset = r600_resource_va(ctx->screen, (void*)rbuffer);
|
||||||
va_offset += offset;
|
va_offset += offset;
|
||||||
//va_offset >>= 8;
|
//va_offset >>= 8;
|
||||||
|
|
Loading…
Reference in New Issue