radeonsi: Add config parameter to si_shader_apply_scratch_relocs.
shader->config is not updated for compute kernels. Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
This commit is contained in:
parent
1bc983cd64
commit
38f4cee3ff
|
@ -221,7 +221,7 @@ static bool si_setup_compute_scratch_buffer(struct si_context *sctx,
|
||||||
if (sctx->compute_scratch_buffer != shader->scratch_bo && scratch_needed) {
|
if (sctx->compute_scratch_buffer != shader->scratch_bo && scratch_needed) {
|
||||||
uint64_t scratch_va = sctx->compute_scratch_buffer->gpu_address;
|
uint64_t scratch_va = sctx->compute_scratch_buffer->gpu_address;
|
||||||
|
|
||||||
si_shader_apply_scratch_relocs(sctx, shader, scratch_va);
|
si_shader_apply_scratch_relocs(sctx, shader, config, scratch_va);
|
||||||
|
|
||||||
if (si_shader_binary_upload(sctx->screen, shader))
|
if (si_shader_binary_upload(sctx->screen, shader))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -5394,13 +5394,14 @@ void si_shader_binary_read_config(struct radeon_shader_binary *binary,
|
||||||
|
|
||||||
void si_shader_apply_scratch_relocs(struct si_context *sctx,
|
void si_shader_apply_scratch_relocs(struct si_context *sctx,
|
||||||
struct si_shader *shader,
|
struct si_shader *shader,
|
||||||
|
struct si_shader_config *config,
|
||||||
uint64_t scratch_va)
|
uint64_t scratch_va)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
uint32_t scratch_rsrc_dword0 = scratch_va;
|
uint32_t scratch_rsrc_dword0 = scratch_va;
|
||||||
uint32_t scratch_rsrc_dword1 =
|
uint32_t scratch_rsrc_dword1 =
|
||||||
S_008F04_BASE_ADDRESS_HI(scratch_va >> 32)
|
S_008F04_BASE_ADDRESS_HI(scratch_va >> 32)
|
||||||
| S_008F04_STRIDE(shader->config.scratch_bytes_per_wave / 64);
|
| S_008F04_STRIDE(config->scratch_bytes_per_wave / 64);
|
||||||
|
|
||||||
for (i = 0 ; i < shader->binary.reloc_count; i++) {
|
for (i = 0 ; i < shader->binary.reloc_count; i++) {
|
||||||
const struct radeon_shader_reloc *reloc =
|
const struct radeon_shader_reloc *reloc =
|
||||||
|
|
|
@ -478,6 +478,7 @@ void si_shader_dump(struct si_screen *sscreen, struct si_shader *shader,
|
||||||
FILE *f);
|
FILE *f);
|
||||||
void si_shader_apply_scratch_relocs(struct si_context *sctx,
|
void si_shader_apply_scratch_relocs(struct si_context *sctx,
|
||||||
struct si_shader *shader,
|
struct si_shader *shader,
|
||||||
|
struct si_shader_config *config,
|
||||||
uint64_t scratch_va);
|
uint64_t scratch_va);
|
||||||
void si_shader_binary_read_config(struct radeon_shader_binary *binary,
|
void si_shader_binary_read_config(struct radeon_shader_binary *binary,
|
||||||
struct si_shader_config *conf,
|
struct si_shader_config *conf,
|
||||||
|
|
|
@ -1634,7 +1634,7 @@ static int si_update_scratch_buffer(struct si_context *sctx,
|
||||||
|
|
||||||
assert(sctx->scratch_buffer);
|
assert(sctx->scratch_buffer);
|
||||||
|
|
||||||
si_shader_apply_scratch_relocs(sctx, shader, scratch_va);
|
si_shader_apply_scratch_relocs(sctx, shader, &shader->config, scratch_va);
|
||||||
|
|
||||||
/* Replace the shader bo with a new bo that has the relocs applied. */
|
/* Replace the shader bo with a new bo that has the relocs applied. */
|
||||||
r = si_shader_binary_upload(sctx->screen, shader);
|
r = si_shader_binary_upload(sctx->screen, shader);
|
||||||
|
|
Loading…
Reference in New Issue