On Tue, Feb 16, 2016 at 4:53 PM, Nicolai Hähnle <nhaeh...@gmail.com> wrote: > On 15.02.2016 18:59, Marek Olšák wrote: >> >> From: Marek Olšák <marek.ol...@amd.com> >> >> --- >> src/gallium/drivers/radeonsi/si_shader.c | 35 >> ++++++++++++++++++++++++-------- >> src/gallium/drivers/radeonsi/si_shader.h | 9 ++++++++ >> 2 files changed, 36 insertions(+), 8 deletions(-) >> >> diff --git a/src/gallium/drivers/radeonsi/si_shader.c >> b/src/gallium/drivers/radeonsi/si_shader.c >> index dbb9217..a6a0984 100644 >> --- a/src/gallium/drivers/radeonsi/si_shader.c >> +++ b/src/gallium/drivers/radeonsi/si_shader.c >> @@ -4036,26 +4036,45 @@ void si_shader_apply_scratch_relocs(struct >> si_context *sctx, >> >> int si_shader_binary_upload(struct si_screen *sscreen, struct si_shader >> *shader) >> { >> - const struct radeon_shader_binary *binary = &shader->binary; >> - unsigned code_size = binary->code_size + binary->rodata_size; >> + const struct radeon_shader_binary *prolog = >> + shader->prolog ? &shader->prolog->binary : NULL; >> + const struct radeon_shader_binary *epilog = >> + shader->epilog ? &shader->epilog->binary : NULL; >> + const struct radeon_shader_binary *mainb = &shader->binary; >> + unsigned bo_size = >> + (prolog ? prolog->code_size : 0) + >> + mainb->code_size + >> + (epilog ? epilog->code_size : mainb->rodata_size); >> unsigned char *ptr; >> >> + assert(!prolog || !prolog->rodata_size); >> + assert((!prolog && !epilog) || !mainb->rodata_size); >> + assert(!epilog || !epilog->rodata_size); > > > Strictly speaking it should be possible for main to have rodata if there is > a prolog but no epilog, right? In any case, patches 1-9 are
Yes. The thing is, the epilog is always present and can't be removed. If it's empty, it must contain s_endpgm at least. On the other hand, empty prologs aren't even compiled and shader->prolog is NULL in that case. We could support rodata for main if the compiler reserved some free space for the epilog between the code and rodata. Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev