mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-07-14 17:16:01 +00:00
Refactor comman code from d3d12::Adapter to base class d3d::Adapter
Bug: dawn:1705 Change-Id: Ib11c25cdb2ecffe6fa27c1c1945b02cfa69810c5 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/124080 Reviewed-by: Austin Eng <enga@chromium.org> Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Peng Huang <penghuang@chromium.org>
This commit is contained in:
parent
9536ced014
commit
242e1efc98
@ -397,6 +397,8 @@ source_set("sources") {
|
||||
|
||||
if (dawn_enable_d3d12) {
|
||||
sources += [
|
||||
"d3d/AdapterD3D.cpp",
|
||||
"d3d/AdapterD3D.h",
|
||||
"d3d/BackendD3D.cpp",
|
||||
"d3d/BackendD3D.h",
|
||||
"d3d/BlobD3D.cpp",
|
||||
|
@ -253,6 +253,8 @@ endif()
|
||||
|
||||
if (DAWN_ENABLE_D3D12)
|
||||
target_sources(dawn_native PRIVATE
|
||||
"d3d/AdapterD3D.cpp"
|
||||
"d3d/AdapterD3D.h"
|
||||
"d3d/BackendD3D.cpp"
|
||||
"d3d/BackendD3D.h"
|
||||
"d3d/BlobD3D.cpp"
|
||||
|
41
src/dawn/native/d3d/AdapterD3D.cpp
Normal file
41
src/dawn/native/d3d/AdapterD3D.cpp
Normal file
@ -0,0 +1,41 @@
|
||||
// Copyright 2023 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.
|
||||
|
||||
#include "dawn/native/d3d/AdapterD3D.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "dawn/native/d3d/BackendD3D.h"
|
||||
|
||||
namespace dawn::native::d3d {
|
||||
|
||||
Adapter::Adapter(Backend* backend,
|
||||
ComPtr<IDXGIAdapter3> hardwareAdapter,
|
||||
wgpu::BackendType backendType,
|
||||
const TogglesState& adapterToggles)
|
||||
: AdapterBase(backend->GetInstance(), backendType, adapterToggles),
|
||||
mHardwareAdapter(std::move(hardwareAdapter)),
|
||||
mBackend(backend) {}
|
||||
|
||||
Adapter::~Adapter() = default;
|
||||
|
||||
IDXGIAdapter3* Adapter::GetHardwareAdapter() const {
|
||||
return mHardwareAdapter.Get();
|
||||
}
|
||||
|
||||
Backend* Adapter::GetBackend() const {
|
||||
return mBackend;
|
||||
}
|
||||
|
||||
} // namespace dawn::native::d3d
|
44
src/dawn/native/d3d/AdapterD3D.h
Normal file
44
src/dawn/native/d3d/AdapterD3D.h
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright 2023 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_D3D_ADAPTERD3D_H_
|
||||
#define SRC_DAWN_NATIVE_D3D_ADAPTERD3D_H_
|
||||
|
||||
#include "dawn/native/Adapter.h"
|
||||
|
||||
#include "dawn/native/d3d/d3d_platform.h"
|
||||
|
||||
namespace dawn::native::d3d {
|
||||
|
||||
class Backend;
|
||||
|
||||
class Adapter : public AdapterBase {
|
||||
public:
|
||||
Adapter(Backend* backend,
|
||||
ComPtr<IDXGIAdapter3> hardwareAdapter,
|
||||
wgpu::BackendType backendType,
|
||||
const TogglesState& adapterToggles);
|
||||
~Adapter() override;
|
||||
|
||||
IDXGIAdapter3* GetHardwareAdapter() const;
|
||||
Backend* GetBackend() const;
|
||||
|
||||
private:
|
||||
ComPtr<IDXGIAdapter3> mHardwareAdapter;
|
||||
Backend* mBackend;
|
||||
};
|
||||
|
||||
} // namespace dawn::native::d3d
|
||||
|
||||
#endif // SRC_DAWN_NATIVE_D3D_ADAPTERD3D_H_
|
@ -15,6 +15,7 @@
|
||||
#include "dawn/native/d3d12/AdapterD3D12.h"
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "dawn/common/Constants.h"
|
||||
#include "dawn/common/Platform.h"
|
||||
@ -31,9 +32,7 @@ namespace dawn::native::d3d12 {
|
||||
Adapter::Adapter(Backend* backend,
|
||||
ComPtr<IDXGIAdapter3> hardwareAdapter,
|
||||
const TogglesState& adapterToggles)
|
||||
: AdapterBase(backend->GetInstance(), wgpu::BackendType::D3D12, adapterToggles),
|
||||
mHardwareAdapter(hardwareAdapter),
|
||||
mBackend(backend) {}
|
||||
: Base(backend, std::move(hardwareAdapter), wgpu::BackendType::D3D12, adapterToggles) {}
|
||||
|
||||
Adapter::~Adapter() {
|
||||
CleanUpDebugLayerFilters();
|
||||
@ -48,12 +47,8 @@ const D3D12DeviceInfo& Adapter::GetDeviceInfo() const {
|
||||
return mDeviceInfo;
|
||||
}
|
||||
|
||||
IDXGIAdapter3* Adapter::GetHardwareAdapter() const {
|
||||
return mHardwareAdapter.Get();
|
||||
}
|
||||
|
||||
Backend* Adapter::GetBackend() const {
|
||||
return mBackend;
|
||||
return static_cast<Backend*>(Base::GetBackend());
|
||||
}
|
||||
|
||||
ComPtr<ID3D12Device> Adapter::GetDevice() const {
|
||||
@ -73,7 +68,7 @@ MaybeError Adapter::InitializeImpl() {
|
||||
DAWN_TRY(InitializeDebugLayerFilters());
|
||||
|
||||
DXGI_ADAPTER_DESC1 adapterDesc;
|
||||
mHardwareAdapter->GetDesc1(&adapterDesc);
|
||||
GetHardwareAdapter()->GetDesc1(&adapterDesc);
|
||||
|
||||
mDeviceId = adapterDesc.DeviceId;
|
||||
mVendorId = adapterDesc.VendorId;
|
||||
@ -90,7 +85,7 @@ MaybeError Adapter::InitializeImpl() {
|
||||
|
||||
// Convert the adapter's D3D12 driver version to a readable string like "24.21.13.9793".
|
||||
LARGE_INTEGER umdVersion;
|
||||
if (mHardwareAdapter->CheckInterfaceSupport(__uuidof(IDXGIDevice), &umdVersion) !=
|
||||
if (GetHardwareAdapter()->CheckInterfaceSupport(__uuidof(IDXGIDevice), &umdVersion) !=
|
||||
DXGI_ERROR_UNSUPPORTED) {
|
||||
uint64_t encodedVersion = umdVersion.QuadPart;
|
||||
uint16_t mask = 0xFFFF;
|
||||
@ -355,7 +350,7 @@ MaybeError Adapter::ValidateFeatureSupportedWithDeviceTogglesImpl(
|
||||
if (feature == wgpu::FeatureName::ShaderF16 ||
|
||||
feature == wgpu::FeatureName::ChromiumExperimentalDp4a) {
|
||||
DAWN_INVALID_IF(!(deviceTogglesState.IsEnabled(Toggle::UseDXC) &&
|
||||
mBackend->IsDXCAvailableAndVersionAtLeast(1, 4, 1, 4)),
|
||||
GetBackend()->IsDXCAvailableAndVersionAtLeast(1, 4, 1, 4)),
|
||||
"Feature %s requires DXC for D3D12.",
|
||||
GetInstance()->GetFeatureInfo(feature)->name);
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#include "dawn/native/Adapter.h"
|
||||
|
||||
#include "dawn/native/d3d/AdapterD3D.h"
|
||||
#include "dawn/native/d3d12/D3D12Info.h"
|
||||
#include "dawn/native/d3d12/d3d12_platform.h"
|
||||
|
||||
@ -24,7 +25,7 @@ namespace dawn::native::d3d12 {
|
||||
|
||||
class Backend;
|
||||
|
||||
class Adapter : public AdapterBase {
|
||||
class Adapter : public d3d::Adapter {
|
||||
public:
|
||||
Adapter(Backend* backend,
|
||||
ComPtr<IDXGIAdapter3> hardwareAdapter,
|
||||
@ -35,11 +36,12 @@ class Adapter : public AdapterBase {
|
||||
bool SupportsExternalImages() const override;
|
||||
|
||||
const D3D12DeviceInfo& GetDeviceInfo() const;
|
||||
IDXGIAdapter3* GetHardwareAdapter() const;
|
||||
Backend* GetBackend() const;
|
||||
ComPtr<ID3D12Device> GetDevice() const;
|
||||
|
||||
private:
|
||||
using Base = d3d::Adapter;
|
||||
|
||||
void SetupBackendDeviceToggles(TogglesState* deviceToggles) const override;
|
||||
|
||||
ResultOrError<Ref<DeviceBase>> CreateDeviceImpl(const DeviceDescriptor* descriptor,
|
||||
@ -60,10 +62,8 @@ class Adapter : public AdapterBase {
|
||||
MaybeError InitializeDebugLayerFilters();
|
||||
void CleanUpDebugLayerFilters();
|
||||
|
||||
ComPtr<IDXGIAdapter3> mHardwareAdapter;
|
||||
ComPtr<ID3D12Device> mD3d12Device;
|
||||
|
||||
Backend* mBackend;
|
||||
D3D12DeviceInfo mDeviceInfo = {};
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user