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
37 lines
909 B
C++
37 lines
909 B
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_BindGroupLayout_H_
|
|
#define GPU_BindGroupLayout_H_
|
|
|
|
#include "nsWrapperCache.h"
|
|
#include "ObjectModel.h"
|
|
#include "mozilla/webgpu/WebGPUTypes.h"
|
|
|
|
namespace mozilla {
|
|
namespace webgpu {
|
|
|
|
class Device;
|
|
|
|
class BindGroupLayout final : public ObjectBase, public ChildOf<Device> {
|
|
public:
|
|
GPU_DECL_CYCLE_COLLECTION(BindGroupLayout)
|
|
GPU_DECL_JS_WRAP(BindGroupLayout)
|
|
|
|
BindGroupLayout(Device* const aParent, RawId aId, bool aOwning);
|
|
|
|
const RawId mId;
|
|
const bool mOwning;
|
|
|
|
private:
|
|
~BindGroupLayout();
|
|
void Cleanup();
|
|
};
|
|
|
|
} // namespace webgpu
|
|
} // namespace mozilla
|
|
|
|
#endif // GPU_BindGroupLayout_H_
|