From aa29fdef732fa2e56943b982a8643d579d2f3714 Mon Sep 17 00:00:00 2001 From: Joel Liang Date: Wed, 15 Nov 2017 12:13:59 +0800 Subject: APPBROWSER-298: Workaround Bifrost shader compiler issue On Bifrost platform, we got this compile error for statement "data = unpack8_half(src_ptr[0])" Error: Compiler log: 2:532: S0001: Function call discards 'readonly' access qualifier. And we need to change it to "data = unpack8_half(uvec4(src_ptr[0]))" Change-Id: I1b4cc66f88a57cf06275a74c796e89ed6043d2e5 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95773 Tested-by: Kaizen Reviewed-by: Stephen Li (cherry picked from commit b2572a8de01cddc7adeacb2eed6a7ba7b8a6cc2d) Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95952 Reviewed-by: Anthony Barbier --- src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h') diff --git a/src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h b/src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h index ad67681067..55a598354a 100644 --- a/src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h +++ b/src/core/GLES_COMPUTE/cs_shaders/helpers_cs.h @@ -361,7 +361,7 @@ mediump vec4[2] unpack8_half(highp uvec4 packed_data) } // For half-precision (16-bits) floating point packed into a "uint" element -#define LOAD_UNPACK2_HALF(tensor_ptr, offset) unpackHalf2x16(LOAD(tensor_ptr, offset)) +#define LOAD_UNPACK2_HALF(tensor_ptr, offset) unpackHalf2x16(uint(LOAD(tensor_ptr, offset))) #define STORE_PACK2_HALF(tensor_ptr, offset, data) STORE(tensor_ptr, offset, packHalf2x16(data)) #define LOAD_UNPACK2_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter) LOAD_UNPACK2_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter)) #define STORE_PACK2_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter, data) STORE_PACK2_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter), data) @@ -377,7 +377,7 @@ mediump vec4[2] unpack8_half(highp uvec4 packed_data) #define VSTORE4_PACK8_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter, data) VSTORE4_PACK8_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter), data) // For half-precision (16-bits) floating point packed into a "uvec2" element -#define LOAD_UNPACK4_HALF(tensor_ptr, offset) unpack4_half(LOAD(tensor_ptr, offset)) +#define LOAD_UNPACK4_HALF(tensor_ptr, offset) unpack4_half(uvec2(LOAD(tensor_ptr, offset))) #define STORE_PACK4_HALF(tensor_ptr, offset, data) STORE(tensor_ptr, offset, pack4_half(data)) #define LOAD_UNPACK4_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter) LOAD_UNPACK4_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter)) #define STORE_PACK4_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter, data) STORE_PACK4_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter), data) @@ -388,7 +388,7 @@ mediump vec4[2] unpack8_half(highp uvec4 packed_data) #define VSTORE2_PACK8_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter, data) VSTORE2_PACK8_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter), data) // For half-precision (16-bits) floating point packed into a "uvec4" element -#define LOAD_UNPACK8_HALF(tensor_ptr, offset) unpack8_half(LOAD(tensor_ptr, offset)) +#define LOAD_UNPACK8_HALF(tensor_ptr, offset) unpack8_half(uvec4(LOAD(tensor_ptr, offset))) #define STORE_PACK8_HALF(tensor_ptr, offset, data) STORE(tensor_ptr, offset, pack8_half(data)) #define LOAD_UNPACK8_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter) LOAD_UNPACK8_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter)) #define STORE_PACK8_CURRENT_ITEM_HALF(tensor_ptr, tensor_iter, data) STORE_PACK8_HALF(tensor_ptr, CURRENT_ITEM_OFFSET(tensor_iter), data) -- cgit v1.2.1