mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-18 09:25:25 +00:00
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:
committed by
Dawn LUCI CQ
parent
64d8d18a93
commit
a12ff9abd1
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user