[D3D12] Don't use switch in shaders on Intel, log GPU name
This commit is contained in:
@@ -11,6 +11,9 @@
|
||||
|
||||
#include <gflags/gflags.h>
|
||||
|
||||
#include <malloc.h>
|
||||
#include <cstdlib>
|
||||
|
||||
#include "xenia/base/logging.h"
|
||||
#include "xenia/ui/d3d12/d3d12_context.h"
|
||||
|
||||
@@ -125,8 +128,7 @@ D3D12Provider::InitializationResult D3D12Provider::Initialize() {
|
||||
return InitializationResult::kDeviceInitializationFailed;
|
||||
}
|
||||
|
||||
// Choose the adapter and create a device with required features.
|
||||
// TODO(Triang3l): Log adapter info (contains a wide string).
|
||||
// Choose the adapter.
|
||||
uint32_t adapter_index = 0;
|
||||
IDXGIAdapter1* adapter = nullptr;
|
||||
while (dxgi_factory->EnumAdapters1(adapter_index, &adapter) == S_OK) {
|
||||
@@ -158,6 +160,24 @@ D3D12Provider::InitializationResult D3D12Provider::Initialize() {
|
||||
dxgi_factory->Release();
|
||||
return InitializationResult::kDeviceInitializationFailed;
|
||||
}
|
||||
DXGI_ADAPTER_DESC adapter_desc;
|
||||
if (FAILED(adapter->GetDesc(&adapter_desc))) {
|
||||
XELOGE("Failed to get the DXGI adapter description.");
|
||||
adapter->Release();
|
||||
dxgi_factory->Release();
|
||||
return InitializationResult::kDeviceInitializationFailed;
|
||||
}
|
||||
adapter_vendor_id_ = adapter_desc.VendorId;
|
||||
size_t adapter_name_length =
|
||||
std::wcstombs(nullptr, adapter_desc.Description, 0);
|
||||
char* adapter_name_mbcs =
|
||||
reinterpret_cast<char*>(alloca((adapter_name_length + 1) * sizeof(char)));
|
||||
std::wcstombs(adapter_name_mbcs, adapter_desc.Description,
|
||||
adapter_name_length + 1);
|
||||
XELOGD3D("DXGI adapter: %s (vendor %.4X, device %.4X)", adapter_name_mbcs,
|
||||
adapter_desc.VendorId, adapter_desc.DeviceId);
|
||||
|
||||
// Create the Direct3D 12 device.
|
||||
ID3D12Device* device;
|
||||
if (FAILED(pfn_d3d12_create_device_(adapter, D3D_FEATURE_LEVEL_11_0,
|
||||
IID_PPV_ARGS(&device)))) {
|
||||
|
||||
@@ -62,6 +62,9 @@ class D3D12Provider : public GraphicsProvider {
|
||||
return start;
|
||||
}
|
||||
|
||||
// Adapter info.
|
||||
uint32_t GetAdapterVendorID() const { return adapter_vendor_id_; }
|
||||
|
||||
// Device features.
|
||||
uint32_t GetProgrammableSamplePositionsTier() const {
|
||||
return programmable_sample_positions_tier_;
|
||||
@@ -126,6 +129,8 @@ class D3D12Provider : public GraphicsProvider {
|
||||
uint32_t descriptor_size_rtv_;
|
||||
uint32_t descriptor_size_dsv_;
|
||||
|
||||
uint32_t adapter_vendor_id_;
|
||||
|
||||
uint32_t programmable_sample_positions_tier_;
|
||||
bool rasterizer_ordered_views_supported_;
|
||||
uint32_t tiled_resources_tier_;
|
||||
|
||||
Reference in New Issue
Block a user