On 26.02.2017 02:58, Marek Olšák wrote: > From: Marek Olšák <marek.ol...@amd.com> > > --- > src/amd/common/ac_llvm_build.c | 11 +++++++++-- > src/amd/common/ac_llvm_build.h | 3 ++- > src/gallium/drivers/radeonsi/si_shader.c | 20 ++++++++++---------- > 3 files changed, 21 insertions(+), 13 deletions(-) > > diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c > index 42965b6..f0ab9cb 100644 > --- a/src/amd/common/ac_llvm_build.c > +++ b/src/amd/common/ac_llvm_build.c > @@ -612,21 +612,22 @@ ac_build_tbuffer_store_dwords(struct ac_llvm_context > *ctx, > > LLVMValueRef > ac_build_buffer_load(struct ac_llvm_context *ctx, > LLVMValueRef rsrc, > int num_channels, > LLVMValueRef vindex, > LLVMValueRef voffset, > LLVMValueRef soffset, > unsigned inst_offset, > unsigned glc, > - unsigned slc) > + unsigned slc, > + bool readonly_memory) > { > unsigned func = CLAMP(num_channels, 1, 3) - 1; > > if (HAVE_LLVM >= 0x309) { > LLVMValueRef args[] = { > LLVMBuildBitCast(ctx->builder, rsrc, ctx->v4i32, ""), > vindex ? vindex : LLVMConstInt(ctx->i32, 0, 0), > LLVMConstInt(ctx->i32, inst_offset, 0), > LLVMConstInt(ctx->i1, glc, 0), > LLVMConstInt(ctx->i1, slc, 0) > @@ -644,21 +645,27 @@ ac_build_buffer_load(struct ac_llvm_context *ctx, > > if (soffset) { > args[2] = LLVMBuildAdd(ctx->builder, args[2], soffset, > ""); > } > > snprintf(name, sizeof(name), "llvm.amdgcn.buffer.load.%s", > type_names[func]); > > return ac_emit_llvm_intrinsic(ctx, name, types[func], args, > - ARRAY_SIZE(args), > AC_FUNC_ATTR_READONLY); > + ARRAY_SIZE(args), > + /* READNONE means writes can't > + * affect it, while READONLY means > + * that writes can affect it. */ > + readonly_memory ? > + AC_FUNC_ATTR_READNONE : > + AC_FUNC_ATTR_READONLY);
You probably swapped the arguments, i.e. when "readonly_memory == true", you're passing AC_FUNC_ATTR_READNONE instead of AC_FUNC_ATTR_READONLY. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev