message: Use macros instead of functions for float16 buffer access.
  Significantly faster on Adreno devices.
diff: @@ -577,24 +577,16 @@ std::string ObjectAccessor::GetObjectDeclarations() const {
  }
  std::string ObjectAccessor::GetFunctionsDeclarations() const {
  - std::string modifier = "";
  - // Mali compiler does not want to compile a function without readonly
  - // modifier. See b/111601761 for the context.
  - if (is_mali_) {
  - modifier = "readonly ";
  - }
  - // If there is a single object SSBO with F16, then we need to output functions
  + // If there is a single object SSBO with F16, then we need to output macros
  // as well.
  for (const auto& o : name_to_object_) {
  if (o.second.data_type == DataType::FLOAT16 &&
  o.second.object_type == ObjectType::BUFFER) {
  - return absl::StrCat("vec4 Vec4FromHalf(in ", modifier,
  - "uvec2 v) { return vec4(unpackHalf2x16(v.x), "
  - "unpackHalf2x16(v.y)); }\n"
  - "uvec2 Vec4ToHalf(in ",
  - modifier,
  - "vec4 v) { return uvec2(packHalf2x16(v.xy), "
  - "packHalf2x16(v.zw)); }\n");
  + return absl::StrCat(
  + "#define Vec4FromHalf(v) vec4(unpackHalf2x16(v.x), "
  + "unpackHalf2x16(v.y))\n",
  + "#define Vec4ToHalf(v) uvec2(packHalf2x16(v.xy), "
  + "packHalf2x16(v.zw))");
  }
  }
  return "";
  