SKIP: FAILED


@group(1) @binding(0) var arg_0 : texture_external;

fn textureLoad2d(tint_symbol : texture_external, coords : vec2<i32>) -> vec4<f32> {
  return textureLoad(tint_symbol, coords);
}

fn doTextureLoad() {
  var res : vec4<f32> = textureLoad2d(arg_0, vec2<i32>());
}

@vertex
fn vertex_main() -> @builtin(position) vec4<f32> {
  doTextureLoad();
  return vec4<f32>();
}

@fragment
fn fragment_main() {
  doTextureLoad();
}

@compute @workgroup_size(1)
fn compute_main() {
  doTextureLoad();
}

Failed to generate: error: ExternalTextureOptions missing binding entry for [group: 1, binding: 0]
