Bug 1743667 - Fix GPUSupportedFeatures on WebGPU device r=jimb

Differential Revision: https://phabricator.services.mozilla.com/D133907
This commit is contained in:
Dzmitry Malyshau 2021-12-15 20:31:34 +00:00
parent 7ec3a677e7
commit 3e51a513a1
3 changed files with 8 additions and 11 deletions

View File

@ -89,14 +89,13 @@ already_AddRefed<dom::Promise> Adapter::RequestDevice(
Maybe<RawId> id = mBridge->AdapterRequestDevice(mId, aDesc, &limits);
if (id.isSome()) {
RefPtr<Device> device =
new Device(this, id.value(), aDesc.mRequiredFeatures,
MakeUnique<ffi::WGPULimits>(limits));
new Device(this, id.value(), MakeUnique<ffi::WGPULimits>(limits));
// copy over the features
for (const auto& feature : aDesc.mRequiredFeatures) {
NS_ConvertASCIItoUTF16 string(
dom::GPUFeatureNameValues::GetString(feature));
dom::GPUSupportedFeatures_Binding::SetlikeHelpers::Add(mFeatures, string,
aRv);
dom::GPUSupportedFeatures_Binding::SetlikeHelpers::Add(device->mFeatures,
string, aRv);
}
promise->MaybeResolve(device);
} else {

View File

@ -54,15 +54,14 @@ JSObject* Device::CreateExternalArrayBuffer(JSContext* aCx, size_t aOffset,
}
Device::Device(Adapter* const aParent, RawId aId,
const dom::Sequence<dom::GPUFeatureName>& aRequiredFeatures,
UniquePtr<ffi::WGPULimits> aRawLimits)
: DOMEventTargetHelper(aParent->GetParentObject()),
mId(aId),
mBridge(aParent->mBridge),
mQueue(new class Queue(this, aParent->mBridge, aId)),
// features are filled in Adapter::RequestDevice
mFeatures(new SupportedFeatures(aParent)),
mLimits(new SupportedLimits(aParent, std::move(aRawLimits))) {
mLimits(new SupportedLimits(aParent, std::move(aRawLimits))),
mBridge(aParent->mBridge),
mQueue(new class Queue(this, aParent->mBridge, aId)) {
mBridge->RegisterDevice(mId, this);
}

View File

@ -84,9 +84,10 @@ class Device final : public DOMEventTargetHelper {
GPU_DECL_JS_WRAP(Device)
const RawId mId;
RefPtr<SupportedFeatures> mFeatures;
RefPtr<SupportedLimits> mLimits;
explicit Device(Adapter* const aParent, RawId aId,
const dom::Sequence<dom::GPUFeatureName>& aRequiredFeatures,
UniquePtr<ffi::WGPULimits> aRawLimits);
RefPtr<WebGPUChild> GetBridge();
@ -113,8 +114,6 @@ class Device final : public DOMEventTargetHelper {
nsString mLabel;
RefPtr<Queue> mQueue;
nsTHashSet<nsCString> mKnownWarnings;
RefPtr<SupportedFeatures> mFeatures;
RefPtr<SupportedLimits> mLimits;
public:
void GetLabel(nsAString& aValue) const;