forked from mirrors/gecko-dev
This change updates and enables Naga to get the SPIRV shaders parsed, validated, and reflected back into implicit bind group layouts. WebGPU examples heavily rely on the implicit layouts now, and the PR also updates the WebIDL to make that possible. With the change, we are able to run most of the examples again! Differential Revision: https://phabricator.services.mozilla.com/D96850
39 lines
1 KiB
C++
39 lines
1 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef GPU_ComputePipeline_H_
|
|
#define GPU_ComputePipeline_H_
|
|
|
|
#include "nsWrapperCache.h"
|
|
#include "ObjectModel.h"
|
|
|
|
namespace mozilla {
|
|
namespace webgpu {
|
|
|
|
class BindGroupLayout;
|
|
class Device;
|
|
|
|
class ComputePipeline final : public ObjectBase, public ChildOf<Device> {
|
|
const nsTArray<RawId> mImplicitBindGroupLayoutIds;
|
|
|
|
public:
|
|
GPU_DECL_CYCLE_COLLECTION(ComputePipeline)
|
|
GPU_DECL_JS_WRAP(ComputePipeline)
|
|
|
|
const RawId mId;
|
|
|
|
ComputePipeline(Device* const aParent, RawId aId,
|
|
nsTArray<RawId>&& aImplicitBindGroupLayoutIds);
|
|
already_AddRefed<BindGroupLayout> GetBindGroupLayout(uint32_t index) const;
|
|
|
|
private:
|
|
~ComputePipeline();
|
|
void Cleanup();
|
|
};
|
|
|
|
} // namespace webgpu
|
|
} // namespace mozilla
|
|
|
|
#endif // GPU_ComputePipeline_H_
|