[D3D12] Don't use switch in shaders on Intel, log GPU name

This commit is contained in:
Triang3l
2018-12-03 16:31:49 +03:00
parent 6824905b78
commit bb53d722f9
6 changed files with 54 additions and 12 deletions

View File

@@ -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)))) {

View File

@@ -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_;