<!DOCTYPE html>
<meta charset=utf-8>
<title>Get the GPUDevice and ask for the GPUQueue</title>
<body>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="js/webgpu-functions.js"></script>
<script>
const shaders = `
struct Vertex
{
    float4 position : SV_Position;
    float4 attributePosition : attribute(0);
};

vertex Vertex vertex_main()
{
    Vertex result;
    result.position = float4(0, 0, 0, 1);
    result.attributePosition = result.position;
    return result;
}

fragment float4 fragment_main(float4 position : attribute(0)) : SV_Target 0
{
    return position;
}
`

promise_test(() => {
    return getBasicDevice().then(function(device) {
        const canvas = document.createElement("canvas");
        const swapChain = createBasicSwapChain(canvas, device);
        const shaderModule = device.createShaderModule({ code: shaders });
        const pipeline = createBasicPipeline(shaderModule, device);

        const commandEncoder = device.createCommandEncoder();
        assert_true(commandEncoder instanceof GPUCommandEncoder, "createCommandEncoder returned a GPUCommandEncoder");

        const encoder = beginBasicRenderPass(swapChain, commandEncoder);
        assert_true(encoder instanceof GPURenderPassEncoder, "beginRenderPass() returned a GPURenderPassEncoder");

        encoder.setPipeline(pipeline);
        encoder.endPass();
    }, function() {
    });
}, "GPURenderPassEncoder created and successfully ended");

</script>
</body>
