Dawn: Deprecate DawnTogglesDeviceDescriptor with DawnTogglesDescriptor

This CL deprecates DawnTogglesDeviceDescriptor and replace it with
DawnTogglesDescriptor, which will be also used to provide instance
and adapter toggles with future CLs.

Bug: dawn:1495
Change-Id: I5f5cfdf38dcbcd237727a7f921462597b9301f1f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/117174
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Kokoro: Zhaoming Jiang <zhaoming.jiang@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Zhaoming Jiang
2023-01-30 09:16:51 +00:00
committed by Dawn LUCI CQ
parent 64d8d18a93
commit a12ff9abd1
18 changed files with 170 additions and 128 deletions

View File

@@ -19,6 +19,7 @@
#include "dawn/common/Constants.h"
#include "dawn/common/GPUInfo.h"
#include "dawn/common/Log.h"
#include "dawn/native/ChainUtils_autogen.h"
#include "dawn/native/Device.h"
#include "dawn/native/Instance.h"
@@ -233,10 +234,38 @@ ResultOrError<Ref<DeviceBase>> AdapterBase::CreateDeviceInternal(
// Check overriden toggles before creating device, as some device features may be guarded by
// toggles, and requiring such features without using corresponding toggles should fails the
// device creating.
const DawnTogglesDeviceDescriptor* togglesDesc = nullptr;
FindInChain(descriptor->nextInChain, &togglesDesc);
const DawnTogglesDescriptor* deviceTogglesDesc = nullptr;
FindInChain(descriptor->nextInChain, &deviceTogglesDesc);
// Handle the deprecated DawnTogglesDeviceDescriptor
// TODO(dawn:1495): Remove this fallback once Chromium is changed to use DawnToggleDescriptor
// and DawnTogglesDeviceDescriptor is removed.
const DawnTogglesDeviceDescriptor* deprecatedTogglesDeviceDesc = nullptr;
DawnTogglesDescriptor convertedDeviceTogglesDesc = {};
FindInChain(descriptor->nextInChain, &deprecatedTogglesDeviceDesc);
if (deprecatedTogglesDeviceDesc) {
// Emit the deprecation warning.
dawn::WarningLog()
<< "DawnTogglesDeviceDescriptor is deprecated and replaced by DawnTogglesDescriptor.";
// Ensure that at most one toggles descriptor is used.
DAWN_INVALID_IF(
deviceTogglesDesc && deprecatedTogglesDeviceDesc,
"DawnTogglesDeviceDescriptor should not be used together with DawnTogglesDescriptor.");
convertedDeviceTogglesDesc.enabledToggles =
deprecatedTogglesDeviceDesc->forceEnabledToggles;
convertedDeviceTogglesDesc.enabledTogglesCount =
deprecatedTogglesDeviceDesc->forceEnabledTogglesCount;
convertedDeviceTogglesDesc.disabledToggles =
deprecatedTogglesDeviceDesc->forceDisabledToggles;
convertedDeviceTogglesDesc.disabledTogglesCount =
deprecatedTogglesDeviceDesc->forceDisabledTogglesCount;
deviceTogglesDesc = &convertedDeviceTogglesDesc;
}
TripleStateTogglesSet userProvidedToggles =
TripleStateTogglesSet::CreateFromTogglesDeviceDescriptor(togglesDesc);
TripleStateTogglesSet::CreateFromTogglesDescriptor(deviceTogglesDesc);
// Validate all required features are supported by the adapter and suitable under given toggles.
for (uint32_t i = 0; i < descriptor->requiredFeaturesCount; ++i) {

View File

@@ -38,10 +38,10 @@ struct ComboDeprecatedDawnDeviceDescriptor : DeviceDescriptor {
if (deviceDescriptor != nullptr) {
desc->nextInChain = &mTogglesDesc;
mTogglesDesc.forceEnabledToggles = deviceDescriptor->forceEnabledToggles.data();
mTogglesDesc.forceEnabledTogglesCount = deviceDescriptor->forceEnabledToggles.size();
mTogglesDesc.forceDisabledToggles = deviceDescriptor->forceDisabledToggles.data();
mTogglesDesc.forceDisabledTogglesCount = deviceDescriptor->forceDisabledToggles.size();
mTogglesDesc.enabledToggles = deviceDescriptor->forceEnabledToggles.data();
mTogglesDesc.enabledTogglesCount = deviceDescriptor->forceEnabledToggles.size();
mTogglesDesc.disabledToggles = deviceDescriptor->forceDisabledToggles.data();
mTogglesDesc.disabledTogglesCount = deviceDescriptor->forceDisabledToggles.size();
desc->requiredLimits =
reinterpret_cast<const RequiredLimits*>(deviceDescriptor->requiredLimits);
@@ -55,7 +55,7 @@ struct ComboDeprecatedDawnDeviceDescriptor : DeviceDescriptor {
}
}
DawnTogglesDeviceDescriptor mTogglesDesc = {};
DawnTogglesDescriptor mTogglesDesc = {};
std::vector<wgpu::FeatureName> mRequiredFeatures = {};
};
} // namespace

View File

@@ -400,20 +400,20 @@ std::vector<const char*> TogglesSet::GetContainedToggleNames() const {
return togglesNameInUse;
}
TripleStateTogglesSet TripleStateTogglesSet::CreateFromTogglesDeviceDescriptor(
const DawnTogglesDeviceDescriptor* togglesDesc) {
TripleStateTogglesSet TripleStateTogglesSet::CreateFromTogglesDescriptor(
const DawnTogglesDescriptor* togglesDesc) {
TripleStateTogglesSet userToggles;
if (togglesDesc != nullptr) {
TogglesInfo togglesInfo;
for (uint32_t i = 0; i < togglesDesc->forceEnabledTogglesCount; ++i) {
Toggle toggle = togglesInfo.ToggleNameToEnum(togglesDesc->forceEnabledToggles[i]);
for (uint32_t i = 0; i < togglesDesc->enabledTogglesCount; ++i) {
Toggle toggle = togglesInfo.ToggleNameToEnum(togglesDesc->enabledToggles[i]);
if (toggle != Toggle::InvalidEnum) {
userToggles.togglesIsProvided.Set(toggle, true);
userToggles.providedTogglesEnabled.Set(toggle, true);
}
}
for (uint32_t i = 0; i < togglesDesc->forceDisabledTogglesCount; ++i) {
Toggle toggle = togglesInfo.ToggleNameToEnum(togglesDesc->forceDisabledToggles[i]);
for (uint32_t i = 0; i < togglesDesc->disabledTogglesCount; ++i) {
Toggle toggle = togglesInfo.ToggleNameToEnum(togglesDesc->disabledToggles[i]);
if (toggle != Toggle::InvalidEnum) {
userToggles.togglesIsProvided.Set(toggle, true);
userToggles.providedTogglesEnabled.Set(toggle, false);

View File

@@ -24,7 +24,7 @@
namespace dawn::native {
struct DawnTogglesDeviceDescriptor;
struct DawnTogglesDescriptor;
enum class Toggle {
EmulateStoreAndMSAAResolve,
@@ -114,8 +114,8 @@ struct TripleStateTogglesSet {
TogglesSet togglesIsProvided;
TogglesSet providedTogglesEnabled;
static TripleStateTogglesSet CreateFromTogglesDeviceDescriptor(
const DawnTogglesDeviceDescriptor* togglesDesc);
static TripleStateTogglesSet CreateFromTogglesDescriptor(
const DawnTogglesDescriptor* togglesDesc);
// Provide a single toggle with given state.
void Set(Toggle toggle, bool enabled);
bool IsProvided(Toggle toggle) const;