export function doResourcesMatch()

in src/webgpu/api/validation/utils.ts [230:275]


export function doResourcesMatch(api: Resource, wgsl: Resource): boolean {
  if (api.buffer) {
    if (!wgsl.buffer) {
      return false;
    }
    return api.buffer.type === wgsl.buffer.type;
  }
  if (api.sampler) {
    if (!wgsl.sampler) {
      return false;
    }
    return (
      api.sampler.type === wgsl.sampler.type ||
      (api.sampler.type !== 'comparison' && wgsl.sampler.type !== 'comparison')
    );
  }
  if (api.texture) {
    if (!wgsl.texture) {
      return false;
    }
    const aType = api.texture.sampleType as GPUTextureSampleType;
    const wType = wgsl.texture.sampleType as GPUTextureSampleType;
    return (
      doSampleTypesMatch(aType, wType) &&
      api.texture.viewDimension === wgsl.texture.viewDimension &&
      api.texture.multisampled === wgsl.texture.multisampled
    );
  }
  if (api.storageTexture) {
    if (!wgsl.storageTexture) {
      return false;
    }
    const aAccess = api.storageTexture.access as GPUStorageTextureAccess;
    const wAccess = wgsl.storageTexture.access as GPUStorageTextureAccess;
    return (
      doAccessesMatch(aAccess, wAccess) &&
      api.storageTexture.format === wgsl.storageTexture.format &&
      api.storageTexture.viewDimension === wgsl.storageTexture.viewDimension
    );
  }
  if (api.externalTexture) {
    return wgsl.externalTexture !== undefined;
  }

  return false;
}