mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-15 09:35:57 +00:00
This CL refactor the logic adapter creating device toggles set when creating device and the way device holding its toggles. This CL also introduce the concept "toggle stage", currently "device stage" only but in future will add "instance stage" and "adapter stage" for instance and adapter toggles. No changes on Dawn API. More details: 1. Introduce `TogglesState` objects that represent the complete toggles state of a device (and will used for instance and adapter in future). 2. When creating a device, adapter set up a TogglesState object for it in `AdapterBase::CreateDeviceInternal` and `Adapter::SetupBackendDeviceToggles`, no other place would change the device's toggles state. This change simplify the logic. 3. Introduce the `ToggleStage` enum for every toggle and `TogglesState` object. Currently we only have `Device` toggle stage, but in future will have `Instance` and `Adapter` for instance and adapter toggles. Bug: dawn:1495 Change-Id: Ifafac6a6a075b5b9a733159574ae5b6d4f3ebde9 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/118030 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Austin Eng <enga@chromium.org> Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
71 lines
2.2 KiB
C++
71 lines
2.2 KiB
C++
// Copyright 2019 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#ifndef SRC_DAWN_NATIVE_D3D12_ADAPTERD3D12_H_
|
|
#define SRC_DAWN_NATIVE_D3D12_ADAPTERD3D12_H_
|
|
|
|
#include "dawn/native/Adapter.h"
|
|
|
|
#include "dawn/native/d3d12/D3D12Info.h"
|
|
#include "dawn/native/d3d12/d3d12_platform.h"
|
|
|
|
namespace dawn::native::d3d12 {
|
|
|
|
class Backend;
|
|
|
|
class Adapter : public AdapterBase {
|
|
public:
|
|
Adapter(Backend* backend, ComPtr<IDXGIAdapter3> hardwareAdapter);
|
|
~Adapter() override;
|
|
|
|
// AdapterBase Implementation
|
|
bool SupportsExternalImages() const override;
|
|
|
|
const D3D12DeviceInfo& GetDeviceInfo() const;
|
|
IDXGIAdapter3* GetHardwareAdapter() const;
|
|
Backend* GetBackend() const;
|
|
ComPtr<ID3D12Device> GetDevice() const;
|
|
|
|
private:
|
|
void SetupBackendDeviceToggles(TogglesState* deviceToggles) const override;
|
|
|
|
ResultOrError<Ref<DeviceBase>> CreateDeviceImpl(const DeviceDescriptor* descriptor,
|
|
const TogglesState& deviceToggles) override;
|
|
|
|
MaybeError ResetInternalDeviceForTestingImpl() override;
|
|
|
|
bool AreTimestampQueriesSupported() const;
|
|
|
|
MaybeError InitializeImpl() override;
|
|
void InitializeSupportedFeaturesImpl() override;
|
|
MaybeError InitializeSupportedLimitsImpl(CombinedLimits* limits) override;
|
|
|
|
MaybeError ValidateFeatureSupportedWithDeviceTogglesImpl(
|
|
wgpu::FeatureName feature,
|
|
const TogglesState& deviceTogglesState) override;
|
|
|
|
MaybeError InitializeDebugLayerFilters();
|
|
void CleanUpDebugLayerFilters();
|
|
|
|
ComPtr<IDXGIAdapter3> mHardwareAdapter;
|
|
ComPtr<ID3D12Device> mD3d12Device;
|
|
|
|
Backend* mBackend;
|
|
D3D12DeviceInfo mDeviceInfo = {};
|
|
};
|
|
|
|
} // namespace dawn::native::d3d12
|
|
|
|
#endif // SRC_DAWN_NATIVE_D3D12_ADAPTERD3D12_H_
|