mirror of
https://github.com/PCSX2/pcsx2.git
synced 2025-12-16 04:08:48 +00:00
Compare commits
3 Commits
afeeeae75f
...
bcac92ae96
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bcac92ae96 | ||
|
|
7fab935c2d | ||
|
|
c74e043827 |
File diff suppressed because it is too large
Load Diff
@ -463,26 +463,72 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
vkGetPhysicalDeviceQueueFamilyProperties(m_physical_device, &queue_family_count, queue_family_properties.data());
|
vkGetPhysicalDeviceQueueFamilyProperties(m_physical_device, &queue_family_count, queue_family_properties.data());
|
||||||
DevCon.WriteLn("%u vulkan queue families", queue_family_count);
|
DevCon.WriteLn("%u vulkan queue families", queue_family_count);
|
||||||
|
|
||||||
// Find graphics and present queues.
|
std::vector<int> queue_family_users(queue_family_count, 0);
|
||||||
|
|
||||||
m_graphics_queue_family_index = queue_family_count;
|
m_graphics_queue_family_index = queue_family_count;
|
||||||
m_present_queue_family_index = queue_family_count;
|
m_present_queue_family_index = queue_family_count;
|
||||||
|
u32 present_queue_index = 0;
|
||||||
m_spin_queue_family_index = queue_family_count;
|
m_spin_queue_family_index = queue_family_count;
|
||||||
u32 spin_queue_index = 0;
|
u32 spin_queue_index = 0;
|
||||||
|
|
||||||
|
// Graphics Queue
|
||||||
for (uint32_t i = 0; i < queue_family_count; i++)
|
for (uint32_t i = 0; i < queue_family_count; i++)
|
||||||
{
|
{
|
||||||
VkBool32 graphics_supported = queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT;
|
if (queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT)
|
||||||
if (graphics_supported)
|
|
||||||
{
|
{
|
||||||
m_graphics_queue_family_index = i;
|
m_graphics_queue_family_index = i;
|
||||||
// Quit now, no need for a present queue.
|
queue_family_users[i]++;
|
||||||
if (!surface)
|
break;
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (surface)
|
// Spinwait Queue
|
||||||
|
for (uint32_t i = 0; i < queue_family_count; i++)
|
||||||
|
{
|
||||||
|
if (queue_family_properties[i].queueCount == queue_family_users[i])
|
||||||
|
continue;
|
||||||
|
if (!(queue_family_properties[i].queueFlags & VK_QUEUE_COMPUTE_BIT))
|
||||||
|
continue;
|
||||||
|
if (queue_family_properties[i].timestampValidBits == 0)
|
||||||
|
continue; // We need timing
|
||||||
|
|
||||||
|
if (!(queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT))
|
||||||
{
|
{
|
||||||
|
m_spin_queue_family_index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (m_spin_queue_family_index == queue_family_count)
|
||||||
|
m_spin_queue_family_index = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_spin_queue_family_index != queue_family_count)
|
||||||
|
{
|
||||||
|
spin_queue_index = queue_family_users[m_spin_queue_family_index];
|
||||||
|
queue_family_users[m_spin_queue_family_index]++;
|
||||||
|
m_spin_queue_is_graphics_queue = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No spare queue? Try the graphics queue.
|
||||||
|
if ((queue_family_properties[m_graphics_queue_family_index].queueCount & VK_QUEUE_COMPUTE_BIT) &&
|
||||||
|
(queue_family_properties[m_graphics_queue_family_index].timestampValidBits != 0))
|
||||||
|
{
|
||||||
|
m_spin_queue_family_index = m_graphics_queue_family_index;
|
||||||
|
spin_queue_index = 0;
|
||||||
|
m_spin_queue_is_graphics_queue = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
m_spin_queue_is_graphics_queue = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Present Queue
|
||||||
|
if (surface)
|
||||||
|
{
|
||||||
|
for (uint32_t i = 0; i < queue_family_count; i++)
|
||||||
|
{
|
||||||
|
if (queue_family_properties[i].queueCount == queue_family_users[i])
|
||||||
|
continue;
|
||||||
|
|
||||||
VkBool32 present_supported;
|
VkBool32 present_supported;
|
||||||
VkResult res = vkGetPhysicalDeviceSurfaceSupportKHR(m_physical_device, i, surface, &present_supported);
|
VkResult res = vkGetPhysicalDeviceSurfaceSupportKHR(m_physical_device, i, surface, &present_supported);
|
||||||
if (res != VK_SUCCESS)
|
if (res != VK_SUCCESS)
|
||||||
@ -491,35 +537,48 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (present_supported)
|
if (!present_supported)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Perfer aync compute queue
|
||||||
|
if ((queue_family_properties[i].queueFlags & VK_QUEUE_COMPUTE_BIT) &&
|
||||||
|
!(queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT))
|
||||||
{
|
{
|
||||||
m_present_queue_family_index = i;
|
m_present_queue_family_index = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (m_present_queue_family_index == queue_family_count)
|
||||||
|
m_present_queue_family_index = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_present_queue_family_index != queue_family_count)
|
||||||
|
{
|
||||||
|
present_queue_index = queue_family_users[m_present_queue_family_index];
|
||||||
|
queue_family_users[m_present_queue_family_index]++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No spare queue? Try the graphics queue.
|
||||||
|
VkBool32 present_supported;
|
||||||
|
VkResult res = vkGetPhysicalDeviceSurfaceSupportKHR(m_physical_device, m_graphics_queue_family_index, surface, &present_supported);
|
||||||
|
if (res != VK_SUCCESS)
|
||||||
|
{
|
||||||
|
LOG_VULKAN_ERROR(res, "vkGetPhysicalDeviceSurfaceSupportKHR failed: ");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prefer one queue family index that does both graphics and present.
|
if (present_supported)
|
||||||
if (graphics_supported && present_supported)
|
|
||||||
{
|
{
|
||||||
break;
|
m_present_queue_family_index = m_graphics_queue_family_index;
|
||||||
|
present_queue_index = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (uint32_t i = 0; i < queue_family_count; i++)
|
|
||||||
{
|
// Swap spin and present to simplify queue priorities logic.
|
||||||
// Pick a queue for spinning
|
if (!m_spin_queue_is_graphics_queue && m_present_queue_family_index == m_spin_queue_family_index)
|
||||||
if (!(queue_family_properties[i].queueFlags & VK_QUEUE_COMPUTE_BIT))
|
std::swap(spin_queue_index, present_queue_index);
|
||||||
continue; // We need compute
|
|
||||||
if (queue_family_properties[i].timestampValidBits == 0)
|
|
||||||
continue; // We need timing
|
|
||||||
const bool queue_is_used = i == m_graphics_queue_family_index || i == m_present_queue_family_index;
|
|
||||||
if (queue_is_used && m_spin_queue_family_index != queue_family_count)
|
|
||||||
continue; // Found a non-graphics queue to use
|
|
||||||
spin_queue_index = 0;
|
|
||||||
m_spin_queue_family_index = i;
|
|
||||||
if (queue_is_used && queue_family_properties[i].queueCount > 1)
|
|
||||||
spin_queue_index = 1;
|
|
||||||
if (!(queue_family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT))
|
|
||||||
break; // Async compute queue, definitely pick this one
|
|
||||||
}
|
|
||||||
if (m_graphics_queue_family_index == queue_family_count)
|
if (m_graphics_queue_family_index == queue_family_count)
|
||||||
{
|
{
|
||||||
Console.Error("VK: Failed to find an acceptable graphics queue.");
|
Console.Error("VK: Failed to find an acceptable graphics queue.");
|
||||||
@ -537,14 +596,16 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
device_info.flags = 0;
|
device_info.flags = 0;
|
||||||
device_info.queueCreateInfoCount = 0;
|
device_info.queueCreateInfoCount = 0;
|
||||||
|
|
||||||
static constexpr float queue_priorities[] = {1.0f, 0.0f}; // Low priority for the spin queue
|
// Low priority for the spin queue
|
||||||
|
static constexpr float queue_priorities[] = {1.0f, 1.0f, 0.0f};
|
||||||
|
|
||||||
std::array<VkDeviceQueueCreateInfo, 3> queue_infos;
|
std::array<VkDeviceQueueCreateInfo, 3> queue_infos;
|
||||||
VkDeviceQueueCreateInfo& graphics_queue_info = queue_infos[device_info.queueCreateInfoCount++];
|
VkDeviceQueueCreateInfo& graphics_queue_info = queue_infos[device_info.queueCreateInfoCount++];
|
||||||
graphics_queue_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
graphics_queue_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
||||||
graphics_queue_info.pNext = nullptr;
|
graphics_queue_info.pNext = nullptr;
|
||||||
graphics_queue_info.flags = 0;
|
graphics_queue_info.flags = 0;
|
||||||
graphics_queue_info.queueFamilyIndex = m_graphics_queue_family_index;
|
graphics_queue_info.queueFamilyIndex = m_graphics_queue_family_index;
|
||||||
graphics_queue_info.queueCount = 1;
|
graphics_queue_info.queueCount = queue_family_users[m_graphics_queue_family_index];
|
||||||
graphics_queue_info.pQueuePriorities = queue_priorities;
|
graphics_queue_info.pQueuePriorities = queue_priorities;
|
||||||
|
|
||||||
if (surface != VK_NULL_HANDLE && m_graphics_queue_family_index != m_present_queue_family_index)
|
if (surface != VK_NULL_HANDLE && m_graphics_queue_family_index != m_present_queue_family_index)
|
||||||
@ -554,19 +615,19 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
present_queue_info.pNext = nullptr;
|
present_queue_info.pNext = nullptr;
|
||||||
present_queue_info.flags = 0;
|
present_queue_info.flags = 0;
|
||||||
present_queue_info.queueFamilyIndex = m_present_queue_family_index;
|
present_queue_info.queueFamilyIndex = m_present_queue_family_index;
|
||||||
present_queue_info.queueCount = 1;
|
present_queue_info.queueCount = queue_family_users[m_present_queue_family_index];
|
||||||
present_queue_info.pQueuePriorities = queue_priorities;
|
present_queue_info.pQueuePriorities = queue_priorities;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_spin_queue_family_index == m_graphics_queue_family_index)
|
if (m_spin_queue_family_index == m_graphics_queue_family_index)
|
||||||
{
|
{
|
||||||
if (spin_queue_index != 0)
|
if (spin_queue_index == 1)
|
||||||
graphics_queue_info.queueCount = 2;
|
graphics_queue_info.pQueuePriorities = queue_priorities + 1;
|
||||||
}
|
}
|
||||||
else if (m_spin_queue_family_index == m_present_queue_family_index)
|
else if (m_spin_queue_family_index == m_present_queue_family_index)
|
||||||
{
|
{
|
||||||
if (spin_queue_index != 0)
|
if (spin_queue_index == 1)
|
||||||
queue_infos[1].queueCount = 2; // present queue
|
queue_infos[1].pQueuePriorities = queue_priorities + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -576,7 +637,7 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
spin_queue_info.flags = 0;
|
spin_queue_info.flags = 0;
|
||||||
spin_queue_info.queueFamilyIndex = m_spin_queue_family_index;
|
spin_queue_info.queueFamilyIndex = m_spin_queue_family_index;
|
||||||
spin_queue_info.queueCount = 1;
|
spin_queue_info.queueCount = 1;
|
||||||
spin_queue_info.pQueuePriorities = queue_priorities + 1;
|
spin_queue_info.pQueuePriorities = queue_priorities + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
device_info.pQueueCreateInfos = queue_infos.data();
|
device_info.pQueueCreateInfos = queue_infos.data();
|
||||||
@ -655,13 +716,11 @@ bool GSDeviceVK::CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer
|
|||||||
vkGetDeviceQueue(m_device, m_graphics_queue_family_index, 0, &m_graphics_queue);
|
vkGetDeviceQueue(m_device, m_graphics_queue_family_index, 0, &m_graphics_queue);
|
||||||
if (surface)
|
if (surface)
|
||||||
{
|
{
|
||||||
vkGetDeviceQueue(m_device, m_present_queue_family_index, 0, &m_present_queue);
|
vkGetDeviceQueue(m_device, m_present_queue_family_index, present_queue_index, &m_present_queue);
|
||||||
}
|
}
|
||||||
m_spinning_supported = m_spin_queue_family_index != queue_family_count &&
|
m_spinning_supported = m_spin_queue_family_index != queue_family_count &&
|
||||||
queue_family_properties[m_graphics_queue_family_index].timestampValidBits > 0 &&
|
queue_family_properties[m_graphics_queue_family_index].timestampValidBits > 0 &&
|
||||||
m_device_properties.limits.timestampPeriod > 0;
|
m_device_properties.limits.timestampPeriod > 0;
|
||||||
m_spin_queue_is_graphics_queue =
|
|
||||||
m_spin_queue_family_index == m_graphics_queue_family_index && spin_queue_index == 0;
|
|
||||||
|
|
||||||
m_gpu_timing_supported = (m_device_properties.limits.timestampComputeAndGraphics != 0 &&
|
m_gpu_timing_supported = (m_device_properties.limits.timestampComputeAndGraphics != 0 &&
|
||||||
queue_family_properties[m_graphics_queue_family_index].timestampValidBits > 0 &&
|
queue_family_properties[m_graphics_queue_family_index].timestampValidBits > 0 &&
|
||||||
|
|||||||
@ -9360,6 +9360,8 @@ TRANSLATE_NOOP("FullscreenUI", "Reset System");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Hardcore mode will not be enabled until the system is reset. Do you want to reset the system now?");
|
TRANSLATE_NOOP("FullscreenUI", "Hardcore mode will not be enabled until the system is reset. Do you want to reset the system now?");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "This game has no achievements.");
|
TRANSLATE_NOOP("FullscreenUI", "This game has no achievements.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "This game has no leaderboards.");
|
TRANSLATE_NOOP("FullscreenUI", "This game has no leaderboards.");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Failed to Load State");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Failed to Save State");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Game List");
|
TRANSLATE_NOOP("FullscreenUI", "Game List");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Launch a game from images scanned from your game directories.");
|
TRANSLATE_NOOP("FullscreenUI", "Launch a game from images scanned from your game directories.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Start Game");
|
TRANSLATE_NOOP("FullscreenUI", "Start Game");
|
||||||
@ -9405,7 +9407,7 @@ TRANSLATE_NOOP("FullscreenUI", "Selects the color style to be used for Big Pictu
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "When Big Picture mode is started, the game list will be displayed instead of the main menu.");
|
TRANSLATE_NOOP("FullscreenUI", "When Big Picture mode is started, the game list will be displayed instead of the main menu.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Show a save state selector UI when switching slots instead of showing a notification bubble.");
|
TRANSLATE_NOOP("FullscreenUI", "Show a save state selector UI when switching slots instead of showing a notification bubble.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Background");
|
TRANSLATE_NOOP("FullscreenUI", "Background");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Select a custom background image to use in Big Picture Mode menus.");
|
TRANSLATE_NOOP("FullscreenUI", "Select a custom background image to use in Big Picture Mode menus.\n\nSupported formats: PNG, JPG, JPEG, BMP.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Removes the custom background image.");
|
TRANSLATE_NOOP("FullscreenUI", "Removes the custom background image.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Sets the transparency of the custom background image.");
|
TRANSLATE_NOOP("FullscreenUI", "Sets the transparency of the custom background image.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Select how to display the background image.");
|
TRANSLATE_NOOP("FullscreenUI", "Select how to display the background image.");
|
||||||
@ -9415,6 +9417,7 @@ TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when a game is started.");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when you minimize the window or switch to another application, and unpauses when you switch back.");
|
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when you minimize the window or switch to another application, and unpauses when you switch back.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when a controller with bindings is disconnected.");
|
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when a controller with bindings is disconnected.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when you open the quick menu, and unpauses when you close it.");
|
TRANSLATE_NOOP("FullscreenUI", "Pauses the emulator when you open the quick menu, and unpauses when you close it.");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Display a modal dialog when a save state load/save operation fails.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Determines whether a prompt will be displayed to confirm shutting down the emulator/game when the hotkey is pressed.");
|
TRANSLATE_NOOP("FullscreenUI", "Determines whether a prompt will be displayed to confirm shutting down the emulator/game when the hotkey is pressed.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left off next time.");
|
TRANSLATE_NOOP("FullscreenUI", "Automatically saves the emulator state when powering down or exiting. You can then resume directly from where you left off next time.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Creates a backup copy of a save state if it already exists when the save is created. The backup copy has a .backup suffix");
|
TRANSLATE_NOOP("FullscreenUI", "Creates a backup copy of a save state if it already exists when the save is created. The backup copy has a .backup suffix");
|
||||||
@ -9424,6 +9427,7 @@ TRANSLATE_NOOP("FullscreenUI", "Game Display");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Automatically switches to fullscreen mode when a game is started.");
|
TRANSLATE_NOOP("FullscreenUI", "Automatically switches to fullscreen mode when a game is started.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Switches between full screen and windowed when the window is double-clicked.");
|
TRANSLATE_NOOP("FullscreenUI", "Switches between full screen and windowed when the window is double-clicked.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Hides the mouse pointer/cursor when the emulator is in fullscreen mode.");
|
TRANSLATE_NOOP("FullscreenUI", "Hides the mouse pointer/cursor when the emulator is in fullscreen mode.");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Automatically starts Big Picture Mode instead of the regular Qt interface when PCSX2 launches.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "On-Screen Display");
|
TRANSLATE_NOOP("FullscreenUI", "On-Screen Display");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Determines how large the on-screen messages and monitors are.");
|
TRANSLATE_NOOP("FullscreenUI", "Determines how large the on-screen messages and monitors are.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "%d%%");
|
TRANSLATE_NOOP("FullscreenUI", "%d%%");
|
||||||
@ -9849,6 +9853,9 @@ TRANSLATE_NOOP("FullscreenUI", "Last Played: {}");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Size: {:.2f} MB");
|
TRANSLATE_NOOP("FullscreenUI", "Size: {:.2f} MB");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Are you sure you want to reset the play time for '{}' ({})?\n\nYour current play time is {}.\n\nThis action cannot be undone.");
|
TRANSLATE_NOOP("FullscreenUI", "Are you sure you want to reset the play time for '{}' ({})?\n\nYour current play time is {}.\n\nThis action cannot be undone.");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Login failed.\nError: {}\n\nPlease check your username and password, and try again.");
|
TRANSLATE_NOOP("FullscreenUI", "Login failed.\nError: {}\n\nPlease check your username and password, and try again.");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Failed to Load State From Backup Slot {}");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Failed to Load State From Slot {}");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Failed to Save State To Slot {}");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Left: ");
|
TRANSLATE_NOOP("FullscreenUI", "Left: ");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Top: ");
|
TRANSLATE_NOOP("FullscreenUI", "Top: ");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Right: ");
|
TRANSLATE_NOOP("FullscreenUI", "Right: ");
|
||||||
@ -9882,13 +9889,14 @@ TRANSLATE_NOOP("FullscreenUI", "AMOLED");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Fit");
|
TRANSLATE_NOOP("FullscreenUI", "Fit");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Fill");
|
TRANSLATE_NOOP("FullscreenUI", "Fill");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Stretch");
|
TRANSLATE_NOOP("FullscreenUI", "Stretch");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Center");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Tile");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Enabled");
|
TRANSLATE_NOOP("FullscreenUI", "Enabled");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Disabled");
|
TRANSLATE_NOOP("FullscreenUI", "Disabled");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Top Left");
|
TRANSLATE_NOOP("FullscreenUI", "Top Left");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Top Center");
|
TRANSLATE_NOOP("FullscreenUI", "Top Center");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Top Right");
|
TRANSLATE_NOOP("FullscreenUI", "Top Right");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Center Left");
|
TRANSLATE_NOOP("FullscreenUI", "Center Left");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Center");
|
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Center Right");
|
TRANSLATE_NOOP("FullscreenUI", "Center Right");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Bottom Left");
|
TRANSLATE_NOOP("FullscreenUI", "Bottom Left");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Bottom Center");
|
TRANSLATE_NOOP("FullscreenUI", "Bottom Center");
|
||||||
@ -10108,6 +10116,7 @@ TRANSLATE_NOOP("FullscreenUI", "Pause On Start");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Pause On Focus Loss");
|
TRANSLATE_NOOP("FullscreenUI", "Pause On Focus Loss");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Pause On Controller Disconnection");
|
TRANSLATE_NOOP("FullscreenUI", "Pause On Controller Disconnection");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Pause On Menu");
|
TRANSLATE_NOOP("FullscreenUI", "Pause On Menu");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Prompt On State Load/Save Failure");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Confirm Shutdown");
|
TRANSLATE_NOOP("FullscreenUI", "Confirm Shutdown");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Save State On Shutdown");
|
TRANSLATE_NOOP("FullscreenUI", "Save State On Shutdown");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Create Save State Backups");
|
TRANSLATE_NOOP("FullscreenUI", "Create Save State Backups");
|
||||||
@ -10117,6 +10126,7 @@ TRANSLATE_NOOP("FullscreenUI", "Enable Discord Presence");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Start Fullscreen");
|
TRANSLATE_NOOP("FullscreenUI", "Start Fullscreen");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Double-Click Toggles Fullscreen");
|
TRANSLATE_NOOP("FullscreenUI", "Double-Click Toggles Fullscreen");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Hide Cursor In Fullscreen");
|
TRANSLATE_NOOP("FullscreenUI", "Hide Cursor In Fullscreen");
|
||||||
|
TRANSLATE_NOOP("FullscreenUI", "Start Big Picture UI");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "OSD Scale");
|
TRANSLATE_NOOP("FullscreenUI", "OSD Scale");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "OSD Messages Position");
|
TRANSLATE_NOOP("FullscreenUI", "OSD Messages Position");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "OSD Performance Position");
|
TRANSLATE_NOOP("FullscreenUI", "OSD Performance Position");
|
||||||
@ -10297,7 +10307,6 @@ TRANSLATE_NOOP("FullscreenUI", "Delete Save");
|
|||||||
TRANSLATE_NOOP("FullscreenUI", "Close Menu");
|
TRANSLATE_NOOP("FullscreenUI", "Close Menu");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Default Boot");
|
TRANSLATE_NOOP("FullscreenUI", "Default Boot");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Delete State");
|
TRANSLATE_NOOP("FullscreenUI", "Delete State");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Failed to Load State");
|
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Full Boot");
|
TRANSLATE_NOOP("FullscreenUI", "Full Boot");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Reset Play Time");
|
TRANSLATE_NOOP("FullscreenUI", "Reset Play Time");
|
||||||
TRANSLATE_NOOP("FullscreenUI", "Confirm Reset");
|
TRANSLATE_NOOP("FullscreenUI", "Confirm Reset");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user