blob: 1895fc2b92a69352ebf8d3dfbe819a0d45cefc1f [file]
<!-- webkit-test-runner [ enableMetalShaderValidation=true ] -->
<style>
:root { background: #102030e0; color: #99ddbbcc; font-size: 15px; }
</style>
<script src="../../../resources/js-test-pre.js"></script>
<script id="shared">
const log = console.log;
</script>
<script>
globalThis.testRunner?.dumpAsText();
globalThis.testRunner?.waitUntilDone();
async function window0() {
let promise0 = navigator.gpu.requestAdapter({});
let promise1 = navigator.gpu.requestAdapter({});
let adapter0 = await promise0;
let device0 = await adapter0.requestDevice({
defaultQueue: {},
requiredFeatures: [
'depth-clip-control',
'depth32float-stencil8',
'texture-compression-etc2',
'indirect-first-instance',
'rg11b10ufloat-renderable',
'bgra8unorm-storage',
'float32-blendable',
],
requiredLimits: {
maxUniformBufferBindingSize: 13240071,
maxStorageBufferBindingSize: 141623714,
maxSampledTexturesPerShaderStage: 16,
},
});
// START
veryExplicitBindGroupLayout0 = device0.createBindGroupLayout({
entries : [ {
binding : 478, visibility : GPUShaderStage.FRAGMENT, buffer : {
}
}
]}
);
buffer0 = device0.createBuffer({
label : '\u9cf1\u0a5e\u0b34\ue493', size : 14850, usage : GPUBufferUsage.STORAGE | GPUBufferUsage.UNIFORM}
);
pipelineLayout1 = device0.createPipelineLayout( {
bindGroupLayouts : [ veryExplicitBindGroupLayout0 ]}
);
bindGroup0 = device0.createBindGroup({
layout : veryExplicitBindGroupLayout0, entries : [ {
binding : 478, resource : {
buffer : buffer0, offset : 4608, size : 5803}
}
]}
);
shaderModule0 = device0.createShaderModule({
label : '\u01ca\u024b\u1f904', code : ` enable f16;
struct S0 {
@location(12) f0: vec4i, @location(3) f1: vec4i, @location(0) f2: vec4u}
struct FragmentOutput0 {
@location(0) f0: vec2i, @location(2) f1: vec4u, @location(6) @interpolate(perspective) f2: f32}
fn fn7(a0: i32) {
vp0 = S0(bitcast<vec4i>((buffer1)[1][8]), bitcast<vec4i>((buffer1)[1][8]), vec4u((buffer1)[1][8]));
let ptr10: ptr<uniform, vec4f> = &buffer1[1][unconst_u32(394)];
var vf34 = fn5();
var vf35 = fn2((mat2x4h() * mat2x2h())[unconst_i32(0)].r);
while bool((mat2x4h((2640.6), (11877.4), (37888.7), (18686.1), (3473.3), (24355.4), (7694.0), (3896.5)) * mat2x2h((7520.7), (2421.4), (4808.6), unconst_f16(17626.4)))[(0)].g) {
}
vf35 += (*ptr10);
}
fn unconst_i32(v: i32) -> i32 {
return v;
}
var<private> vp0: S0 = S0();
fn unconst_f32(v: f32) -> f32 {
return v;
}
fn unconst_u32(v: u32) -> u32 {
return v;
}
@must_use fn fn2(a0: f16) -> vec4f {
var out: vec4f;
let vf12i32 = vp0.f0[unconst_u32(83)];
return out;
}
struct VertexOutput0 {
@builtin(position) f0: vec4f, @location(3) @interpolate(flat, either) f1: u32, @location(13) @interpolate(flat, centroid) f2: vec2u}
override override2: f32;
struct S1 {
@builtin(local_invocation_index) f0: u32, @builtin(local_invocation_id) @size(16) f1: vec3u}
override override4: f16;
override override0: f32;
fn fn5() -> S1 {
var out: S1;
var vf27 = fn4();
_ = fn2(f16((vec2f((0.08689), unconst_f32(0.4009)))[0]));
out.f0 = u32(vp0.f0[unconst_u32(207)]);
return out;
}
var<private> vp1 = modf(vec4f());
@group(0) @binding(478) var<uniform> buffer1: array<array<vec4f, 9>, 2>;
@must_use fn fn4() -> FragmentOutput0 {
var out: FragmentOutput0;
loop {
break;
}
switch bitcast<i32>(override0) {
default {
vp0.f2 = unpack4xU8(u32(vp0.f0[unconst_u32(233)]));
_ = fn2(vec2h((vec2f((0.2101), unconst_f32(0.04690))))[1]);
var vf17 = fn2(f16());
var vf18 = fn2(f16());
let vf19: vec2f = acos(vec2f(vf17[unconst_u32(342)]));
}
}
vp1 = modf(vec4f(f32(override4)));
var vf20 = fn2(vec4h().y);
out.f0 = vec2i(i32(override2));
while bool(vp0.f0.z) {
}
if bool(vf20[unconst_u32(294)]) {
}
return out;
}
fn unconst_f16(v: f16) -> f16 {
return v;
}
@vertex fn vertex0() -> VertexOutput0 {
var out: VertexOutput0;
_ = fn4();
return out;
}
@fragment fn fragment0() -> FragmentOutput0 {
var out: FragmentOutput0;
for (var it2=u32((*&buffer1)[1][unconst_u32(122)][0]);
it2<firstLeadingBit(vec2u()).y;
it2++) {
for (var it1=pack4xI8((vec4i() << vec4u()));
it1<pack4x8snorm((*&buffer1)[1][unconst_u32(127)]);
it1++) {
}
return out;
}
fn7(i32());
var vf51 = fn4();
switch i32() {
default {
fn7(bitcast<i32>(saturate((*&buffer1)[1][8].g)));
}
}
return out;
}
`, }
);
let querySet0 = device0.createQuerySet0;
let texture12 = device0.createTexture({
size : {
width : 1200, height : 1, depthOrArrayLayers : 1}
, sampleCount : 4, format : 'r16sint', usage : GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING, viewFormats : [], }
);
let textureView17 = texture12.createView();
try {
}
catch {
}
let pipeline2 = await device0.createRenderPipelineAsync({
layout : pipelineLayout1, multisample : {
count : 4, mask : 0x2bb3f243}
, fragment : {
module : shaderModule0, constants : {
override4 : 1, override0 : 1, override2 : 1}
, targets : [ {
format : 'r16sint', writeMask : 0}
], }
, vertex : {
module : shaderModule0, constants : {
override0 : 1, override4 : 1, override2 : 1}
, buffers : [], }
, primitive : {
topology : 'point-list', frontFace : 'cw', unclippedDepth : true}
, }
);
try {
}
catch {
}
let commandEncoder29 = device0.createCommandEncoder();
let renderPassEncoder2 = commandEncoder29.beginRenderPass({
colorAttachments : [ {
view : textureView17, clearValue : {
r : 562.0, g : 421.8, b : -672.4, a : 694.7, }
, loadOp : 'load', storeOp : 'store', }
], occlusionQuerySet : querySet0, }
);
try {
renderPassEncoder2.setBindGroup(0, bindGroup0, new Uint32Array(1234), 47, 0);
renderPassEncoder2.setPipeline(pipeline2);
}
catch {
}
try {
renderPassEncoder2.draw(17, 68, 12, 542_724_990);
renderPassEncoder2.end();
}
catch {
}
let commandBuffer0 = commandEncoder29.finish();
try {
device0.queue.submit([ commandBuffer0 ]);
}
catch {
}
// END
await device0.queue.onSubmittedWorkDone();
}
onload = async () => {
try {
let sharedScript = document.querySelector('#shared').textContent;
let workers = [
];
let promises = [ window0() ];
debug('promises created');
let results = await Promise.allSettled(promises);
for (let result of results) {
if (result.status === 'rejected') { throw result.reason; }
}
debug('Pass')
} catch (e) {
log('error');
log(e);
log(e[Symbol.toStringTag]);
log(e.stack);
if (e instanceof GPUPipelineError) {
log(`${e} - ${e.reason}`);
} else if (e instanceof DOMException) {
if (e.name === 'OperationError') {
log(e.message);
} else if (e.name === 'InvalidStateError') {
} else {
log(e);
}
} else if (e instanceof GPUValidationError) {
} else if (e instanceof GPUOutOfMemoryError) {
} else if (e instanceof TypeError) {
log(e);
} else {
log('unexpected error type');
log(e);
}
}
globalThis.testRunner?.notifyDone();
};
</script>