early-access version 3297

This commit is contained in:
pineappleEA 2023-01-07 19:23:45 +01:00
parent ec5ff6b829
commit be79968945
5 changed files with 29 additions and 7 deletions

View File

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 3296. This is the source code for early-access 3297.
## Legal Notice ## Legal Notice

View File

@ -110,7 +110,7 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_,
screen_info), screen_info),
rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator, rasterizer(render_window, gpu, cpu_memory, screen_info, device, memory_allocator,
state_tracker, scheduler) { state_tracker, scheduler) {
if (Settings::values.renderer_force_max_clock.GetValue()) { if (Settings::values.renderer_force_max_clock.GetValue() && device.ShouldBoostClocks()) {
turbo_mode.emplace(instance, dld); turbo_mode.emplace(instance, dld);
} }
Report(); Report();

View File

@ -991,6 +991,18 @@ std::string Device::GetDriverName() const {
} }
} }
bool Device::ShouldBoostClocks() const {
const bool validated_driver =
driver_id == VK_DRIVER_ID_AMD_PROPRIETARY || driver_id == VK_DRIVER_ID_AMD_OPEN_SOURCE ||
driver_id == VK_DRIVER_ID_MESA_RADV || driver_id == VK_DRIVER_ID_NVIDIA_PROPRIETARY ||
driver_id == VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS ||
driver_id == VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA;
const bool is_steam_deck = properties.vendorID == 0x1002 && properties.deviceID == 0x163F;
return validated_driver && !is_steam_deck;
}
static std::vector<const char*> ExtensionsRequiredForInstanceVersion(u32 available_version) { static std::vector<const char*> ExtensionsRequiredForInstanceVersion(u32 available_version) {
std::vector<const char*> extensions{REQUIRED_EXTENSIONS.begin(), REQUIRED_EXTENSIONS.end()}; std::vector<const char*> extensions{REQUIRED_EXTENSIONS.begin(), REQUIRED_EXTENSIONS.end()};
@ -1520,8 +1532,12 @@ void Device::SetupFamilies(VkSurfaceKHR surface) {
LOG_ERROR(Render_Vulkan, "Device lacks a present queue"); LOG_ERROR(Render_Vulkan, "Device lacks a present queue");
throw vk::Exception(VK_ERROR_FEATURE_NOT_PRESENT); throw vk::Exception(VK_ERROR_FEATURE_NOT_PRESENT);
} }
graphics_family = *graphics; if (graphics) {
present_family = *present; graphics_family = *graphics;
}
if (present) {
present_family = *present;
}
} }
void Device::SetupFeatures() { void Device::SetupFeatures() {

View File

@ -106,6 +106,8 @@ public:
return driver_id; return driver_id;
} }
bool ShouldBoostClocks() const;
/// Returns uniform buffer alignment requeriment. /// Returns uniform buffer alignment requeriment.
VkDeviceSize GetUniformBufferAlignment() const { VkDeviceSize GetUniformBufferAlignment() const {
return properties.limits.minUniformBufferOffsetAlignment; return properties.limits.minUniformBufferOffsetAlignment;

View File

@ -1838,9 +1838,11 @@ void GMainWindow::OnEmulationStopTimeExpired() {
void GMainWindow::OnEmulationStopped() { void GMainWindow::OnEmulationStopped() {
shutdown_timer.stop(); shutdown_timer.stop();
emu_thread->disconnect(); if (emu_thread) {
emu_thread->wait(); emu_thread->disconnect();
emu_thread = nullptr; emu_thread->wait();
emu_thread.reset();
}
if (shutdown_dialog) { if (shutdown_dialog) {
shutdown_dialog->deleteLater(); shutdown_dialog->deleteLater();
@ -3028,6 +3030,8 @@ void GMainWindow::OnStopGame() {
if (OnShutdownBegin()) { if (OnShutdownBegin()) {
OnShutdownBeginDialog(); OnShutdownBeginDialog();
} else {
OnEmulationStopped();
} }
} }