On Thu, Jul 3, 2014 at 11:46 AM, Aaron Watry <awa...@gmail.com> wrote:
> On Thu, Jul 3, 2014 at 9:56 AM, Tom Stellard <t...@stellard.net> wrote:
>> On Wed, Jul 02, 2014 at 04:34:24PM -0500, Aaron Watry wrote:
>>> Previously, we were assuming that kernel metadata nodes only had 1 operand.
>>>
>>> Kernels which have attributes can have more than 1, e.g.:
>>> !0 = metadata !{void (i32 addrspace(1)*)* @testKernel, metadata !1}
>>> !1 = metadata !{metadata !"work_group_size_hint", i32 4, i32 1, i32 1}
>>>
>>> Attempting to get the kernel without the correct number of attributes led
>>> to memory corruption and luxrays crashing out.
>>>
>>> Fixes the cl/program/execute/attributes.cl piglit test.
>>>
>>
>> Thanks for tracking this down.
>>
>
> no problem.  It was driving me nuts.  I've now got the luxmark kernels
> building successfully on evergreen (followed by a machine hang and
> loss of signal to the monitor, but that could be the kernel or the
> fact that CEDAR seems extra crashy compared to my other EG/NI cards)

Someone mentioned stability issues with cedar with the golden register
kernel patch.  Can you see if skipping the golden register setup
helps?  If so can you narrow down which registers are problematic?

Alex

> and I'm getting an instruction selection error on radeonsi.  Haven't
> managed to track that down yet, but at least it means that all
> required built-ins/defines for luxrays are now present (at least with
> my own libclc tree), at least with image support disabled in luxrays.
>
> If you enable image support, I believe that it is still going to fail
> due to mismatches/oddness with the number of supported pixel formats.
>
> --Aaron
>
>> Reviewed-by: Tom Stellard <thomas.stell...@amd.com>
>>
>>> Signed-off-by: Aaron Watry <awa...@gmail.com>
>>> CC: Tom Stellard <thomas.stell...@amd.com>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76223
>>> ---
>>>  src/gallium/drivers/radeon/radeon_llvm_util.c | 10 +++++++---
>>>  1 file changed, 7 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.c 
>>> b/src/gallium/drivers/radeon/radeon_llvm_util.c
>>> index 2ace91f..ec11559 100644
>>> --- a/src/gallium/drivers/radeon/radeon_llvm_util.c
>>> +++ b/src/gallium/drivers/radeon/radeon_llvm_util.c
>>> @@ -100,13 +100,17 @@ LLVMModuleRef 
>>> radeon_llvm_get_kernel_module(LLVMContextRef ctx, unsigned index,
>>>       kernel_metadata = MALLOC(num_kernels * sizeof(LLVMValueRef));
>>>       LLVMGetNamedMetadataOperands(mod, "opencl.kernels", kernel_metadata);
>>>       for (i = 0; i < num_kernels; i++) {
>>> -             LLVMValueRef kernel_signature, kernel_function;
>>> +             LLVMValueRef kernel_signature, *kernel_function;
>>> +             unsigned num_kernel_md_operands;
>>>               if (i == index) {
>>>                       continue;
>>>               }
>>>               kernel_signature = kernel_metadata[i];
>>> -             LLVMGetMDNodeOperands(kernel_signature, &kernel_function);
>>> -             LLVMDeleteFunction(kernel_function);
>>> +             num_kernel_md_operands = 
>>> LLVMGetMDNodeNumOperands(kernel_signature);
>>> +             kernel_function = MALLOC(num_kernel_md_operands * sizeof 
>>> (LLVMValueRef));
>>> +             LLVMGetMDNodeOperands(kernel_signature, kernel_function);
>>> +             LLVMDeleteFunction(*kernel_function);
>>> +             FREE(kernel_function);
>>>       }
>>>       FREE(kernel_metadata);
>>>       radeon_llvm_optimize(mod);
>>> --
>>> 1.9.1
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev@lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to