vk-gl-cts/rasterization/line_continuity/line-strip/1.wgsl:9:26 warning: use of deprecated intrinsic
  let x_22 : vec4<f32> = textureLoad(texture, vec2<i32>(vec2<f32>(x_19.x, x_19.y)));
                         ^^^^^^^^^^^

#include <metal_stdlib>

using namespace metal;
struct main_out {
  float4 color_out_1;
};
struct tint_symbol_3 {
  float4 color_out_1 [[color(0)]];
};

void main_1(thread float4* const tint_symbol_6, texture2d<float, access::read> tint_symbol_7, thread float4* const tint_symbol_8) {
  float4 const x_19 = *(tint_symbol_6);
  float4 const x_22 = tint_symbol_7.read(uint2(int2(float2(x_19.x, x_19.y))));
  *(tint_symbol_8) = x_22;
  return;
}

fragment tint_symbol_3 tint_symbol_1(texture2d<float, access::read> tint_symbol_10 [[texture(0)]], float4 gl_FragCoord_param [[position]]) {
  thread float4 tint_symbol_9 = 0.0f;
  thread float4 tint_symbol_11 = 0.0f;
  tint_symbol_9 = gl_FragCoord_param;
  main_1(&(tint_symbol_9), tint_symbol_10, &(tint_symbol_11));
  main_out const tint_symbol_4 = {.color_out_1=tint_symbol_11};
  tint_symbol_3 const tint_symbol_5 = {.color_out_1=tint_symbol_4.color_out_1};
  return tint_symbol_5;
}

