mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-16 14:55:47 +00:00
163a4a7ed8
When the pipeline layout is implicit at pipeline creation, we collect the IDs of BGLs, to be able to produce GPUBindGroupLayout object upon user request. However, the produced object didn't know if it owns the ID or borrows it, so it would issue a "drop" when going out of scope. This change establishes this distinction. In addition, it gets the Pipeline Layout ID, and together with the BGL ids, they are sent to GPU process upon pipeline destruction. When the GPU process is done with these IDs used, it will kick back a message to the Content process, allowing the IDs to be reclaimed. Differential Revision: https://phabricator.services.mozilla.com/D114649
44 lines
1.2 KiB
C++
44 lines
1.2 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_RenderPipeline_H_
|
|
#define GPU_RenderPipeline_H_
|
|
|
|
#include "nsWrapperCache.h"
|
|
#include "ObjectModel.h"
|
|
#include "mozilla/webgpu/WebGPUTypes.h"
|
|
#include "nsTArray.h"
|
|
|
|
namespace mozilla {
|
|
namespace webgpu {
|
|
|
|
class BindGroupLayout;
|
|
class Device;
|
|
|
|
class RenderPipeline final : public ObjectBase, public ChildOf<Device> {
|
|
const RawId mImplicitPipelineLayoutId;
|
|
const nsTArray<RawId> mImplicitBindGroupLayoutIds;
|
|
|
|
public:
|
|
GPU_DECL_CYCLE_COLLECTION(RenderPipeline)
|
|
GPU_DECL_JS_WRAP(RenderPipeline)
|
|
|
|
const RawId mId;
|
|
|
|
RenderPipeline(Device* const aParent, RawId aId,
|
|
RawId aImplicitPipelineLayoutId,
|
|
nsTArray<RawId>&& aImplicitBindGroupLayoutIds);
|
|
already_AddRefed<BindGroupLayout> GetBindGroupLayout(uint32_t index) const;
|
|
|
|
private:
|
|
virtual ~RenderPipeline();
|
|
void Cleanup();
|
|
};
|
|
|
|
} // namespace webgpu
|
|
} // namespace mozilla
|
|
|
|
#endif // GPU_RenderPipeline_H_
|