Skip to content

Commit 6e92604

Browse files
committed
GPUDevice: Move options to create flags
And add prefer-GLES-context as a config setting, instead of environment variable.
1 parent c1d0cf3 commit 6e92604

20 files changed

+204
-148
lines changed

src/core/fullscreen_ui.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6640,6 +6640,11 @@ void FullscreenUI::DrawAdvancedSettingsPage()
66406640
FSUI_VSTR("Enable GPU-based validation when supported by the host's renderer API. Only for developer use."), "GPU",
66416641
"UseGPUBasedValidation", false);
66426642

6643+
DrawToggleSetting(
6644+
bsi, FSUI_VSTR("Prefer OpenGL ES Device"),
6645+
FSUI_VSTR("Uses OpenGL ES even when desktop OpenGL is supported. May improve performance on some SBC drivers."),
6646+
"GPU", "PreferGLESContext", Settings::DEFAULT_GPU_PREFER_GLES_CONTEXT);
6647+
66436648
DrawToggleSetting(
66446649
bsi, FSUI_VSTR("Load Devices From Save States"),
66456650
FSUI_VSTR("When enabled, memory cards and controllers will be overwritten when save states are loaded."), "Main",
@@ -9870,6 +9875,7 @@ TRANSLATE_NOOP("FullscreenUI", "Port {} Controller Type");
98709875
TRANSLATE_NOOP("FullscreenUI", "Post-Processing Settings");
98719876
TRANSLATE_NOOP("FullscreenUI", "Post-processing chain cleared.");
98729877
TRANSLATE_NOOP("FullscreenUI", "Post-processing shaders reloaded.");
9878+
TRANSLATE_NOOP("FullscreenUI", "Prefer OpenGL ES Device");
98739879
TRANSLATE_NOOP("FullscreenUI", "Preload Images to RAM");
98749880
TRANSLATE_NOOP("FullscreenUI", "Preload Replacement Textures");
98759881
TRANSLATE_NOOP("FullscreenUI", "Preserve Projection Precision");
@@ -10115,6 +10121,7 @@ TRANSLATE_NOOP("FullscreenUI", "Use Separate Disc Settings");
1011510121
TRANSLATE_NOOP("FullscreenUI", "Use Single Card For Multi-Disc Games");
1011610122
TRANSLATE_NOOP("FullscreenUI", "Use Software Renderer For Readbacks");
1011710123
TRANSLATE_NOOP("FullscreenUI", "User Name");
10124+
TRANSLATE_NOOP("FullscreenUI", "Uses OpenGL ES even when desktop OpenGL is supported. May improve performance on some SBC drivers.");
1011810125
TRANSLATE_NOOP("FullscreenUI", "Uses PGXP for all instructions, not just memory operations.");
1011910126
TRANSLATE_NOOP("FullscreenUI", "Uses a blit presentation model instead of flipping. This may be needed on some systems.");
1012010127
TRANSLATE_NOOP("FullscreenUI", "Uses a second thread for drawing graphics. Provides a significant speed improvement particularly with the software renderer, and is safe to use.");

src/core/gpu_thread.cpp

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -639,21 +639,29 @@ bool GPUThread::CreateDeviceOnThread(RenderAPI api, bool fullscreen, bool clear_
639639
(g_gpu_settings.display_exclusive_fullscreen_control == DisplayExclusiveFullscreenControl::Allowed);
640640
}
641641

642-
u32 disabled_features = 0;
642+
GPUDevice::CreateFlags create_flags = GPUDevice::CreateFlags::None;
643+
if (g_gpu_settings.gpu_prefer_gles_context)
644+
create_flags |= GPUDevice::CreateFlags::PreferGLESContext;
645+
if (g_gpu_settings.gpu_use_debug_device)
646+
create_flags |= GPUDevice::CreateFlags::EnableDebugDevice;
647+
if (g_gpu_settings.gpu_use_debug_device && g_gpu_settings.gpu_use_debug_device_gpu_validation)
648+
create_flags |= GPUDevice::CreateFlags::EnableGPUValidation;
643649
if (g_gpu_settings.gpu_disable_dual_source_blend)
644-
disabled_features |= GPUDevice::FEATURE_MASK_DUAL_SOURCE_BLEND;
650+
create_flags |= GPUDevice::CreateFlags::DisableDualSourceBlend;
645651
if (g_gpu_settings.gpu_disable_framebuffer_fetch)
646-
disabled_features |= GPUDevice::FEATURE_MASK_FRAMEBUFFER_FETCH;
652+
create_flags |= GPUDevice::CreateFlags::DisableFramebufferFetch;
647653
if (g_gpu_settings.gpu_disable_texture_buffers)
648-
disabled_features |= GPUDevice::FEATURE_MASK_TEXTURE_BUFFERS;
654+
create_flags |= GPUDevice::CreateFlags::DisableTextureBuffers;
655+
if (g_gpu_settings.gpu_disable_texture_copy_to_self)
656+
create_flags |= GPUDevice::CreateFlags::DisableTextureCopyToSelf;
649657
if (g_gpu_settings.gpu_disable_memory_import)
650-
disabled_features |= GPUDevice::FEATURE_MASK_MEMORY_IMPORT;
658+
create_flags |= GPUDevice::CreateFlags::DisableMemoryImport;
651659
if (g_gpu_settings.gpu_disable_raster_order_views)
652-
disabled_features |= GPUDevice::FEATURE_MASK_RASTER_ORDER_VIEWS;
660+
create_flags |= GPUDevice::CreateFlags::DisableRasterOrderViews;
653661
if (g_gpu_settings.gpu_disable_compute_shaders)
654-
disabled_features |= GPUDevice::FEATURE_MASK_COMPUTE_SHADERS;
662+
create_flags |= GPUDevice::CreateFlags::DisableComputeShaders;
655663
if (g_gpu_settings.gpu_disable_compressed_textures)
656-
disabled_features |= GPUDevice::FEATURE_MASK_COMPRESSED_TEXTURES;
664+
create_flags |= GPUDevice::CreateFlags::DisableCompressedTextures;
657665

658666
// Don't dump shaders on debug builds for Android, users will complain about storage...
659667
#if !defined(__ANDROID__) || defined(_DEBUG)
@@ -667,11 +675,9 @@ bool GPUThread::CreateDeviceOnThread(RenderAPI api, bool fullscreen, bool clear_
667675
if (!g_gpu_device ||
668676
!(wi = Host::AcquireRenderWindow(api, fullscreen, fullscreen_mode.has_value(), &create_error)).has_value() ||
669677
!g_gpu_device->Create(
670-
Host::GetStringSettingValue("GPU", "Adapter"), static_cast<GPUDevice::FeatureMask>(disabled_features),
671-
shader_dump_directory,
678+
Host::GetStringSettingValue("GPU", "Adapter"), create_flags, shader_dump_directory,
672679
g_gpu_settings.gpu_disable_shader_cache ? std::string_view() : std::string_view(EmuFolders::Cache),
673-
SHADER_CACHE_VERSION, g_gpu_settings.gpu_use_debug_device, g_gpu_settings.gpu_use_debug_device_gpu_validation,
674-
wi.value(), s_state.requested_vsync, s_state.requested_allow_present_throttle,
680+
SHADER_CACHE_VERSION, wi.value(), s_state.requested_vsync, s_state.requested_allow_present_throttle,
675681
fullscreen_mode.has_value() ? &fullscreen_mode.value() : nullptr, exclusive_fullscreen_control, &create_error))
676682
{
677683
ERROR_LOG("Failed to create GPU device: {}", create_error.GetDescription());

src/core/settings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ void Settings::Load(const SettingsInterface& si, const SettingsInterface& contro
240240
gpu_multisamples = static_cast<u8>(si.GetUIntValue("GPU", "Multisamples", 1u));
241241
gpu_use_debug_device = si.GetBoolValue("GPU", "UseDebugDevice", false);
242242
gpu_use_debug_device_gpu_validation = si.GetBoolValue("GPU", "UseGPUBasedValidation", false);
243+
gpu_prefer_gles_context = si.GetBoolValue("GPU", "PreferGLESContext", DEFAULT_GPU_PREFER_GLES_CONTEXT);
243244
gpu_disable_shader_cache = si.GetBoolValue("GPU", "DisableShaderCache", false);
244245
gpu_disable_dual_source_blend = si.GetBoolValue("GPU", "DisableDualSourceBlend", false);
245246
gpu_disable_framebuffer_fetch = si.GetBoolValue("GPU", "DisableFramebufferFetch", false);
@@ -622,6 +623,7 @@ void Settings::Save(SettingsInterface& si, bool ignore_base) const
622623
{
623624
si.SetBoolValue("GPU", "UseDebugDevice", gpu_use_debug_device);
624625
si.SetBoolValue("GPU", "UseGPUBasedValidation", gpu_use_debug_device_gpu_validation);
626+
si.SetBoolValue("GPU", "PreferGLESContext", gpu_prefer_gles_context);
625627
si.SetBoolValue("GPU", "DisableShaderCache", gpu_disable_shader_cache);
626628
si.SetBoolValue("GPU", "DisableDualSourceBlend", gpu_disable_dual_source_blend);
627629
si.SetBoolValue("GPU", "DisableFramebufferFetch", gpu_disable_framebuffer_fetch);
@@ -1184,6 +1186,7 @@ bool Settings::AreGPUDeviceSettingsChanged(const Settings& old_settings) const
11841186
return (gpu_adapter != old_settings.gpu_adapter || gpu_use_thread != old_settings.gpu_use_thread ||
11851187
gpu_use_debug_device != old_settings.gpu_use_debug_device ||
11861188
gpu_use_debug_device_gpu_validation != old_settings.gpu_use_debug_device_gpu_validation ||
1189+
gpu_prefer_gles_context != old_settings.gpu_prefer_gles_context ||
11871190
gpu_disable_shader_cache != old_settings.gpu_disable_shader_cache ||
11881191
gpu_disable_dual_source_blend != old_settings.gpu_disable_dual_source_blend ||
11891192
gpu_disable_framebuffer_fetch != old_settings.gpu_disable_framebuffer_fetch ||

src/core/settings.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ struct GPUSettings
9898
bool gpu_use_software_renderer_for_readbacks : 1 = false;
9999
bool gpu_use_debug_device : 1 = false;
100100
bool gpu_use_debug_device_gpu_validation : 1 = false;
101+
bool gpu_prefer_gles_context : 1 = DEFAULT_GPU_PREFER_GLES_CONTEXT;
101102
bool gpu_disable_shader_cache : 1 = false;
102103
bool gpu_disable_dual_source_blend : 1 = false;
103104
bool gpu_disable_framebuffer_fetch : 1 = false;
@@ -264,8 +265,10 @@ struct GPUSettings
264265

265266
#ifndef __ANDROID__
266267
static constexpr u8 DEFAULT_GPU_MAX_QUEUED_FRAMES = 2;
268+
static constexpr bool DEFAULT_GPU_PREFER_GLES_CONTEXT = false;
267269
#else
268270
static constexpr u8 DEFAULT_GPU_MAX_QUEUED_FRAMES = 3;
271+
static constexpr bool DEFAULT_GPU_PREFER_GLES_CONTEXT = true;
269272
#endif
270273
};
271274

src/duckstation-qt/graphicssettingswidget.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,8 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget*
334334

335335
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.useDebugDevice, "GPU", "UseDebugDevice", false);
336336
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.useGPUBasedValidation, "GPU", "UseGPUBasedValidation", false);
337+
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.preferGLESContext, "GPU", "PreferGLESContext",
338+
Settings::DEFAULT_GPU_PREFER_GLES_CONTEXT);
337339
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableShaderCache, "GPU", "DisableShaderCache", false);
338340
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableDualSource, "GPU", "DisableDualSourceBlend", false);
339341
SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.disableFramebufferFetch, "GPU", "DisableFramebufferFetch",
@@ -421,8 +423,9 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget*
421423
dialog->registerWidgetHelp(
422424
m_ui.displayScaling, tr("Scaling"), tr("Bilinear (Smooth)"),
423425
tr("Determines how the emulated console's output is upscaled or downscaled to your monitor's resolution."));
424-
dialog->registerWidgetHelp(m_ui.displayScaling24Bit, tr("FMV Scaling"), tr("Bilinear (Smooth)"),
425-
tr("Determines the scaling algorithm used when 24-bit content is active, typically FMVs."));
426+
dialog->registerWidgetHelp(
427+
m_ui.displayScaling24Bit, tr("FMV Scaling"), tr("Bilinear (Smooth)"),
428+
tr("Determines the scaling algorithm used when 24-bit content is active, typically FMVs."));
426429
dialog->registerWidgetHelp(
427430
m_ui.widescreenHack, tr("Widescreen Rendering"), tr("Unchecked"),
428431
tr("Scales vertex positions in screen-space to a widescreen aspect ratio, essentially "
@@ -660,6 +663,9 @@ GraphicsSettingsWidget::GraphicsSettingsWidget(SettingsWindow* dialog, QWidget*
660663
dialog->registerWidgetHelp(
661664
m_ui.useGPUBasedValidation, tr("Use GPU-Based Validation"), tr("Unchecked"),
662665
tr("Enable GPU-based validation when supported by the renderer API. <strong>Only for developer use.</strong>"));
666+
dialog->registerWidgetHelp(
667+
m_ui.preferGLESContext, tr("Prefer OpenGL ES Context"), tr("Unchecked"),
668+
tr("Uses OpenGL ES even when desktop OpenGL is supported. May improve performance on some SBC drivers."));
663669
dialog->registerWidgetHelp(
664670
m_ui.disableShaderCache, tr("Disable Shader Cache"), tr("Unchecked"),
665671
tr("Forces shaders to be compiled for every run of the program. <strong>Only for developer use.</strong>"));

src/duckstation-qt/graphicssettingswidget.ui

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,62 +1362,69 @@
13621362
</widget>
13631363
</item>
13641364
<item row="1" column="0">
1365+
<widget class="QCheckBox" name="preferGLESContext">
1366+
<property name="text">
1367+
<string>Prefer OpenGL ES Context</string>
1368+
</property>
1369+
</widget>
1370+
</item>
1371+
<item row="1" column="1">
13651372
<widget class="QCheckBox" name="disableShaderCache">
13661373
<property name="text">
13671374
<string>Disable Shader Cache</string>
13681375
</property>
13691376
</widget>
13701377
</item>
1371-
<item row="1" column="1">
1378+
<item row="2" column="0">
13721379
<widget class="QCheckBox" name="disableCompressedTextures">
13731380
<property name="text">
13741381
<string>Disable Compressed Textures</string>
13751382
</property>
13761383
</widget>
13771384
</item>
1378-
<item row="2" column="0">
1385+
<item row="2" column="1">
13791386
<widget class="QCheckBox" name="disableDualSource">
13801387
<property name="text">
13811388
<string>Disable Dual-Source Blending</string>
13821389
</property>
13831390
</widget>
13841391
</item>
1385-
<item row="2" column="1">
1392+
<item row="3" column="0">
13861393
<widget class="QCheckBox" name="disableFramebufferFetch">
13871394
<property name="text">
13881395
<string>Disable Framebuffer Fetch</string>
13891396
</property>
13901397
</widget>
13911398
</item>
1392-
<item row="3" column="0">
1399+
<item row="3" column="1">
13931400
<widget class="QCheckBox" name="disableTextureBuffers">
13941401
<property name="text">
13951402
<string>Disable Texture Buffers</string>
13961403
</property>
13971404
</widget>
13981405
</item>
1399-
<item row="3" column="1">
1406+
<item row="4" column="0">
14001407
<widget class="QCheckBox" name="disableTextureCopyToSelf">
14011408
<property name="text">
14021409
<string>Disable Texture Copy To Self</string>
14031410
</property>
14041411
</widget>
14051412
</item>
1406-
<item row="4" column="0">
1413+
<item row="4" column="1">
14071414
<widget class="QCheckBox" name="disableMemoryImport">
14081415
<property name="text">
14091416
<string>Disable Memory Import</string>
14101417
</property>
14111418
</widget>
14121419
</item>
1413-
<item row="4" column="1">
1420+
<item row="5" column="0">
14141421
<widget class="QCheckBox" name="disableRasterOrderViews">
14151422
<property name="text">
14161423
<string>Disable Rasterizer Order Views</string>
14171424
</property>
14181425
</widget>
14191426
</item>
1420-
<item row="5" column="0">
1427+
<item row="5" column="1">
14211428
<widget class="QCheckBox" name="disableComputeShaders">
14221429
<property name="text">
14231430
<string>Disable Compute Shaders</string>

src/util/d3d11_device.cpp

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,16 @@ D3D11Device::~D3D11Device()
5757
Assert(!m_device);
5858
}
5959

60-
bool D3D11Device::CreateDeviceAndMainSwapChain(std::string_view adapter, FeatureMask disabled_features,
61-
const WindowInfo& wi, GPUVSyncMode vsync_mode,
62-
bool allow_present_throttle,
60+
bool D3D11Device::CreateDeviceAndMainSwapChain(std::string_view adapter, CreateFlags create_flags, const WindowInfo& wi,
61+
GPUVSyncMode vsync_mode, bool allow_present_throttle,
6362
const ExclusiveFullscreenMode* exclusive_fullscreen_mode,
6463
std::optional<bool> exclusive_fullscreen_control, Error* error)
6564
{
6665
std::unique_lock lock(s_instance_mutex);
6766

68-
UINT create_flags = 0;
67+
UINT d3d_create_flags = 0;
6968
if (m_debug_device)
70-
create_flags |= D3D11_CREATE_DEVICE_DEBUG;
69+
d3d_create_flags |= D3D11_CREATE_DEVICE_DEBUG;
7170

7271
m_dxgi_factory = D3DCommon::CreateFactory(m_debug_device, error);
7372
if (!m_dxgi_factory)
@@ -82,7 +81,7 @@ bool D3D11Device::CreateDeviceAndMainSwapChain(std::string_view adapter, Feature
8281
ComPtr<ID3D11Device> temp_device;
8382
ComPtr<ID3D11DeviceContext> temp_context;
8483
HRESULT hr;
85-
if (!D3DCommon::CreateD3D11Device(dxgi_adapter.Get(), create_flags, requested_feature_levels.data(),
84+
if (!D3DCommon::CreateD3D11Device(dxgi_adapter.Get(), d3d_create_flags, requested_feature_levels.data(),
8685
static_cast<UINT>(requested_feature_levels.size()), &temp_device, nullptr,
8786
&temp_context, error))
8887
{
@@ -129,7 +128,7 @@ bool D3D11Device::CreateDeviceAndMainSwapChain(std::string_view adapter, Feature
129128
D3DCommon::GetFeatureLevelString(D3DCommon::GetRenderAPIVersionForFeatureLevel(m_max_feature_level)));
130129

131130
SetDriverType(driver_type);
132-
SetFeatures(disabled_features);
131+
SetFeatures(create_flags);
133132

134133
if (!wi.IsSurfaceless())
135134
{
@@ -155,7 +154,7 @@ void D3D11Device::DestroyDevice()
155154
m_device.Reset();
156155
}
157156

158-
void D3D11Device::SetFeatures(FeatureMask disabled_features)
157+
void D3D11Device::SetFeatures(CreateFlags create_flags)
159158
{
160159
const D3D_FEATURE_LEVEL feature_level = m_device->GetFeatureLevel();
161160

@@ -173,17 +172,17 @@ void D3D11Device::SetFeatures(FeatureMask disabled_features)
173172
}
174173
}
175174

176-
m_features.dual_source_blend = !(disabled_features & FEATURE_MASK_DUAL_SOURCE_BLEND);
175+
m_features.dual_source_blend = !HasCreateFlag(create_flags, CreateFlags::DisableDualSourceBlend);
177176
m_features.framebuffer_fetch = false;
178177
m_features.per_sample_shading = (feature_level >= D3D_FEATURE_LEVEL_10_1);
179178
m_features.noperspective_interpolation = true;
180179
m_features.texture_copy_to_self = false;
181-
m_features.texture_buffers = !(disabled_features & FEATURE_MASK_TEXTURE_BUFFERS);
180+
m_features.texture_buffers = !HasCreateFlag(create_flags, CreateFlags::DisableTextureBuffers);
182181
m_features.texture_buffers_emulated_with_ssbo = false;
183182
m_features.feedback_loops = false;
184-
m_features.geometry_shaders = !(disabled_features & FEATURE_MASK_GEOMETRY_SHADERS);
183+
m_features.geometry_shaders = !HasCreateFlag(create_flags, CreateFlags::DisableGeometryShaders);
185184
m_features.compute_shaders =
186-
(!(disabled_features & FEATURE_MASK_COMPUTE_SHADERS) && feature_level >= D3D_FEATURE_LEVEL_11_0);
185+
(!HasCreateFlag(create_flags, CreateFlags::DisableComputeShaders) && feature_level >= D3D_FEATURE_LEVEL_11_0);
187186
m_features.partial_msaa_resolve = false;
188187
m_features.memory_import = false;
189188
m_features.exclusive_fullscreen = true;
@@ -194,7 +193,7 @@ void D3D11Device::SetFeatures(FeatureMask disabled_features)
194193
m_features.pipeline_cache = false;
195194
m_features.prefer_unused_textures = false;
196195
m_features.raster_order_views = false;
197-
if (!(disabled_features & FEATURE_MASK_RASTER_ORDER_VIEWS))
196+
if (!!HasCreateFlag(create_flags, CreateFlags::DisableRasterOrderViews))
198197
{
199198
D3D11_FEATURE_DATA_D3D11_OPTIONS2 data = {};
200199
m_features.raster_order_views =
@@ -203,11 +202,11 @@ void D3D11Device::SetFeatures(FeatureMask disabled_features)
203202
}
204203

205204
m_features.dxt_textures =
206-
(!(disabled_features & FEATURE_MASK_COMPRESSED_TEXTURES) &&
205+
(!HasCreateFlag(create_flags, CreateFlags::DisableCompressedTextures) &&
207206
(SupportsTextureFormat(GPUTexture::Format::BC1) && SupportsTextureFormat(GPUTexture::Format::BC2) &&
208207
SupportsTextureFormat(GPUTexture::Format::BC3)));
209-
m_features.bptc_textures =
210-
(!(disabled_features & FEATURE_MASK_COMPRESSED_TEXTURES) && SupportsTextureFormat(GPUTexture::Format::BC7));
208+
m_features.bptc_textures = (!HasCreateFlag(create_flags, CreateFlags::DisableCompressedTextures) &&
209+
SupportsTextureFormat(GPUTexture::Format::BC7));
211210
}
212211

213212
D3D11SwapChain::D3D11SwapChain(const WindowInfo& wi, GPUVSyncMode vsync_mode, bool allow_present_throttle,

src/util/d3d11_device.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class D3D11Device final : public GPUDevice
116116
void UnbindTexture(D3D11Texture* tex);
117117

118118
protected:
119-
bool CreateDeviceAndMainSwapChain(std::string_view adapter, FeatureMask disabled_features, const WindowInfo& wi,
119+
bool CreateDeviceAndMainSwapChain(std::string_view adapter, CreateFlags create_flags, const WindowInfo& wi,
120120
GPUVSyncMode vsync_mode, bool allow_present_throttle,
121121
const ExclusiveFullscreenMode* exclusive_fullscreen_mode,
122122
std::optional<bool> exclusive_fullscreen_control, Error* error) override;
@@ -142,7 +142,7 @@ class D3D11Device final : public GPUDevice
142142
static constexpr u32 UNIFORM_BUFFER_ALIGNMENT_DISCARD = 16;
143143
static constexpr u8 NUM_TIMESTAMP_QUERIES = 3;
144144

145-
void SetFeatures(FeatureMask disabled_features);
145+
void SetFeatures(CreateFlags create_flags);
146146

147147
bool CreateBuffers(Error* error);
148148
void DestroyBuffers();

0 commit comments

Comments
 (0)