blob: 3a1af1be0e487e79c0822bdeff0f5cf3c4f0a2d6 [file] [log] [blame]
<!DOCTYPE html>
<html>
<script src="../resources/js-test-pre.js"></script>
<script src="js/set-up-webgpu-contexts.js"></script>
<script id="library" type="x-shader/x-metal">
#include <metal_stdlib>
using namespace metal;
struct Vertex
{
float4 position [[position]];
};
vertex Vertex vertex_main(uint vid [[vertex_id]])
{
Vertex v;
switch (vid) {
case 0:
v.position = float4(-.75, -.75, 0, 1);
break;
case 1:
v.position = float4(.75, -.75, 0, 1);
break;
case 2:
v.position = float4(0, .75, 0, 1);
break;
default:
v.position = float4(0, 0, 0, 1);
}
return v;
}
fragment float4 fragment_main(Vertex vertexIn [[stage_in]])
{
return float4(1.0, 0.0, 0.0, 1.0);
}
</script>
<script>
'use strict';
if (window.testRunner)
window.testRunner.dumpAsText();
let renderPipeline;
function setUpPipeline() {
let shaderDescriptor = {
code: document.getElementById("library").text
};
let shaderModule = defaultDevice.createShaderModule(shaderDescriptor);
if (!shaderModule) {
testFailed("Could not create WebGPUShaderModule!");
return;
}
let vertexStageDescriptor = {
module: shaderModule,
stage: WebGPUShaderStage.VERTEX,
entryPoint: "vertex_main"
};
let fragmentStageDescriptor = {
module: shaderModule,
stage: WebGPUShaderStage.FRAGMENT,
entryPoint: "fragment_main"
};
if (!vertexStageDescriptor || !fragmentStageDescriptor) {
testFailed("Could not create WebGPUPipelineStageDescriptor!");
return;
}
let pipelineDescriptor = {
stages: [vertexStageDescriptor, fragmentStageDescriptor],
primitiveTopology: "triangleList"
};
if (!pipelineDescriptor) {
testFailed("Could not create WebGPURenderPipelineDescriptor!");
return;
}
renderPipeline = defaultDevice.createRenderPipeline(pipelineDescriptor);
if (!renderPipeline) {
testFailed("Could not create WebGPURenderPipeline!");
return;
}
}
runWebGPUTests([setUpPipeline]);
successfullyParsed = true;
</script>
<script src="../resources/js-test-post.js"></script>
</html>