[Mesa-dev] [PATCH] r600g: Fix flush issue with llvm on r700

Marek Olšák maraeo at gmail.com
Tue Nov 20 15:19:06 PST 2012


It's not really a flush fix, you're just fixing wrong RESOURCE_ID in shaders.

The best solution would be not to add 2 in LLVM and not to subtract 2
here. Other than that, it looks good.

Marek

On Tue, Nov 20, 2012 at 11:26 PM, Vincent Lejeune <vljn at ovi.com> wrote:
> ---
>  src/gallium/drivers/r600/r600_llvm.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/r600/r600_llvm.c b/src/gallium/drivers/r600/r600_llvm.c
> index b3d4e6b..170dac7 100644
> --- a/src/gallium/drivers/r600/r600_llvm.c
> +++ b/src/gallium/drivers/r600/r600_llvm.c
> @@ -11,6 +11,7 @@
>  #include "r600_asm.h"
>  #include "r600_opcodes.h"
>  #include "r600_shader.h"
> +#include "r600_pipe.h"
>  #include "radeon_llvm.h"
>  #include "radeon_llvm_emit.h"
>
> @@ -324,8 +325,10 @@ static void llvm_emit_tex(
>
>         sampler_src = emit_data->inst->Instruction.NumSrcRegs-1;
>
> +       // XXX: Resource ID offset is R600_MAX_CONST_BUFFERS but LLVM already adds 2
> +       // to the generated machine resource id
>         args[c++] = lp_build_const_int32(gallivm,
> -                                       emit_data->inst->Src[sampler_src].Register.Index);
> +                                       emit_data->inst->Src[sampler_src].Register.Index + R600_MAX_CONST_BUFFERS - 2);
>         args[c++] = lp_build_const_int32(gallivm,
>                                         emit_data->inst->Texture.Texture);
>
> --
> 1.7.11.7
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list