Merge pull request #20900 from hrydgard/restore-vsync

Rework the VSync setting and related code to make more sense
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2025-10-21 12:10:23 +02:00
commit 29032f4a70
71 files changed
+369 -351

No files matched your search

+10
View File
@@ -161,6 +161,13 @@ public:
void BeginFrame(DebugFlags debugFlags) override;
void EndFrame() override;
void Present(PresentMode presentMode) override;
PresentMode GetCurrentPresentMode() const override {
if (currentInterval_ == 1) {
return PresentMode::FIFO;
} else {
return PresentMode::IMMEDIATE;
}
}
int GetFrameCount() override { return frameCount_; }
@@ -272,6 +279,8 @@ private:
D3D_FEATURE_LEVEL featureLevel_;
std::string adapterDesc_;
std::vector<std::string> deviceList_;
int currentInterval_ = -1;
};
D3D11DrawContext::D3D11DrawContext(ComPtr<ID3D11Device> device, ComPtr<ID3D11DeviceContext> deviceContext, ComPtr<ID3D11Device1> device1, ComPtr<ID3D11DeviceContext1> deviceContext1, ComPtr<IDXGISwapChain> swapChain, D3D_FEATURE_LEVEL featureLevel, HWND hWnd, std::vector<std::string> deviceList, int maxInflightFrames)
@@ -492,6 +501,7 @@ void D3D11DrawContext::Present(PresentMode presentMode) {
#endif
}
swapChain_->Present(interval, flags);
currentInterval_ = interval;
}
curRenderTargetView_.Reset();
+19
View File
@@ -368,6 +368,9 @@ public:
void BeginFrame(DebugFlags debugFlags) override;
void EndFrame() override;
void Present(PresentMode mode) override;
PresentMode GetCurrentPresentMode() const override {
return requestedPresentMode_;
}
int GetFrameCount() override {
return frameCount_;
@@ -527,6 +530,8 @@ private:
GLPushBuffer *push;
};
FrameData frameData_[GLRenderManager::MAX_INFLIGHT_FRAMES]{};
PresentMode requestedPresentMode_{};
};
static constexpr int MakeIntelSimpleVer(int v1, int v2, int v3) {
@@ -812,8 +817,22 @@ void OpenGLContext::EndFrame() {
}
void OpenGLContext::Present(PresentMode presentMode) {
_dbg_assert_msg_((caps_.presentModesSupported & presentMode) != 0, "Present mode %d not supported", (int)presentMode);
// NOTE: renderManager_.SwapInterval has repeat protection: won't call glSwapInterval if the value is the same as current.
switch (presentMode) {
case PresentMode::IMMEDIATE:
renderManager_.SwapInterval(0);
break;
case PresentMode::FIFO:
default:
renderManager_.SwapInterval(1);
break;
}
renderManager_.Present();
frameCount_++;
requestedPresentMode_ = presentMode;
}
void OpenGLContext::Invalidate(InvalidationFlags flags) {
+36 -25
View File
@@ -722,6 +722,7 @@ VkResult VulkanContext::CreateDevice(int physical_device) {
VkPhysicalDevicePresentWaitFeaturesKHR presentWaitFeatures{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR };
VkPhysicalDevicePresentIdFeaturesKHR presentIdFeatures{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR };
VkPhysicalDeviceProvokingVertexFeaturesEXT provokingVertexFeatures{ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT };
VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR presentModeFifoProps{VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR};
ChainStruct(features2, &multiViewFeatures);
if (extensionsLookup_.KHR_present_wait) {
@@ -733,6 +734,9 @@ VkResult VulkanContext::CreateDevice(int physical_device) {
if (extensionsLookup_.EXT_provoking_vertex) {
ChainStruct(features2, &provokingVertexFeatures);
}
if (extensionsLookup_.KHR_present_mode_fifo_latest_ready) {
ChainStruct(features2, &presentModeFifoProps);
}
vkGetPhysicalDeviceFeatures2(physical_devices_[physical_device_], &features2);
deviceFeatures_.available.standard = features2.features;
deviceFeatures_.available.multiview = multiViewFeatures;
@@ -745,6 +749,9 @@ VkResult VulkanContext::CreateDevice(int physical_device) {
if (extensionsLookup_.EXT_provoking_vertex) {
deviceFeatures_.available.provokingVertex = provokingVertexFeatures;
}
if (extensionsLookup_.KHR_present_mode_fifo_latest_ready) {
deviceFeatures_.available.presentModeFifoProps = presentModeFifoProps;
}
} else {
vkGetPhysicalDeviceFeatures(physical_devices_[physical_device_], &deviceFeatures_.available.standard);
deviceFeatures_.available.multiview = {};
@@ -784,6 +791,10 @@ VkResult VulkanContext::CreateDevice(int physical_device) {
if (extensionsLookup_.EXT_provoking_vertex) {
deviceFeatures_.enabled.provokingVertex.provokingVertexLast = true;
}
deviceFeatures_.enabled.presentModeFifoProps = {VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR};
if (extensionsLookup_.KHR_present_mode_fifo_latest_ready) {
deviceFeatures_.enabled.presentModeFifoProps.presentModeFifoLatestReady = deviceFeatures_.available.presentModeFifoProps.presentModeFifoLatestReady;
}
// deviceFeatures_.enabled.multiview.multiviewGeometryShader = deviceFeatures_.available.multiview.multiviewGeometryShader;
@@ -810,6 +821,9 @@ VkResult VulkanContext::CreateDevice(int physical_device) {
if (extensionsLookup_.EXT_provoking_vertex) {
ChainStruct(features2, &deviceFeatures_.enabled.provokingVertex);
}
if (extensionsLookup_.KHR_present_mode_fifo_latest_ready) {
ChainStruct(features2, &deviceFeatures_.enabled.presentModeFifoProps);
}
} else {
device_info.pEnabledFeatures = &deviceFeatures_.enabled.standard;
}
@@ -932,10 +946,10 @@ void VulkanContext::SetDebugNameImpl(uint64_t handle, VkObjectType type, const c
VkResult VulkanContext::InitSurface(WindowSystem winsys, void *data1, void *data2) {
winsys_ = winsys;
if (winsysData1_ != data1) {
if (winsysData1_ != data1 && winsysData1_ != 0) {
WARN_LOG(Log::G3D, "winsysData1 changed from %p to %p", winsysData1_, data1);
}
if (winsysData2_ != data2) {
if (winsysData2_ != data2 && winsysData2_ != 0) {
WARN_LOG(Log::G3D, "winsysData2 changed from %p to %p", winsysData2_, data2);
}
winsysData1_ = data1;
@@ -1229,6 +1243,15 @@ VkResult VulkanContext::ReinitSurface() {
frame_[i].profiler.Init(this);
}
// Query presentation modes. We need to know which ones are available for InitSwapchain().
availablePresentModes_.clear();
uint32_t presentModeCount;
VkResult res = vkGetPhysicalDeviceSurfacePresentModesKHR(physical_devices_[physical_device_], surface_, &presentModeCount, nullptr);
availablePresentModes_.resize(presentModeCount);
_dbg_assert_(res == VK_SUCCESS);
res = vkGetPhysicalDeviceSurfacePresentModesKHR(physical_devices_[physical_device_], surface_, &presentModeCount, availablePresentModes_.data());
_dbg_assert_(res == VK_SUCCESS);
return VK_SUCCESS;
}
@@ -1366,15 +1389,6 @@ bool VulkanContext::InitSwapchain(VkPresentModeKHR desiredPresentMode) {
return true;
}
_dbg_assert_(res == VK_SUCCESS);
uint32_t presentModeCount;
res = vkGetPhysicalDeviceSurfacePresentModesKHR(physical_devices_[physical_device_], surface_, &presentModeCount, nullptr);
_dbg_assert_(res == VK_SUCCESS);
VkPresentModeKHR *presentModes = new VkPresentModeKHR[presentModeCount];
_dbg_assert_(presentModes);
res = vkGetPhysicalDeviceSurfacePresentModesKHR(physical_devices_[physical_device_], surface_, &presentModeCount, presentModes);
_dbg_assert_(res == VK_SUCCESS);
VkExtent2D currentExtent{ surfCapabilities_.currentExtent };
// https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VkSurfaceCapabilitiesKHR.html
// currentExtent is the current width and height of the surface, or the special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size will be determined by the extent of a swapchain targeting the surface.
@@ -1398,31 +1412,20 @@ bool VulkanContext::InitSwapchain(VkPresentModeKHR desiredPresentMode) {
surfCapabilities_.maxImageExtent.width, surfCapabilities_.maxImageExtent.height,
swapChainExtent_.width, swapChainExtent_.height);
availablePresentModes_.clear();
// TODO: Find a better way to specify the prioritized present mode while being able
// to fall back in a sensible way.
VkPresentModeKHR swapchainPresentMode = VK_PRESENT_MODE_MAX_ENUM_KHR;
std::string modes = "";
for (size_t i = 0; i < presentModeCount; i++) {
modes += VulkanPresentModeToString(presentModes[i]);
if (i != presentModeCount - 1) {
modes += ", ";
}
availablePresentModes_.push_back(presentModes[i]);
}
// Kind of silly logic now, but at least it performs a final sanity check of the chosen value.
for (size_t i = 0; i < presentModeCount; i++) {
bool match = presentModes[i] == desiredPresentMode;
for (size_t i = 0; i < availablePresentModes_.size(); i++) {
bool match = availablePresentModes_[i] == desiredPresentMode;
// Default to the first present mode from the list.
if (match || swapchainPresentMode == VK_PRESENT_MODE_MAX_ENUM_KHR) {
swapchainPresentMode = presentModes[i];
swapchainPresentMode = availablePresentModes_[i];
}
if (match) {
break;
}
}
delete[] presentModes;
// Determine the number of VkImage's to use in the swap chain (we desire to
// own only 1 image at a time, besides the images being displayed and
// queued for display):
@@ -1433,6 +1436,14 @@ bool VulkanContext::InitSwapchain(VkPresentModeKHR desiredPresentMode) {
desiredNumberOfSwapChainImages = surfCapabilities_.maxImageCount;
}
std::string modes = "";
for (size_t i = 0; i < availablePresentModes_.size(); i++) {
modes += VulkanPresentModeToString(availablePresentModes_[i]);
if (i != availablePresentModes_.size() - 1) {
modes += ", ";
}
}
INFO_LOG(Log::G3D, "Supported present modes: %s. Chosen present mode: %d (%s). numSwapChainImages: %d (max: %d)",
modes.c_str(), swapchainPresentMode, VulkanPresentModeToString(swapchainPresentMode),
desiredNumberOfSwapChainImages, surfCapabilities_.maxImageCount);
+1
View File
@@ -288,6 +288,7 @@ public:
VkPhysicalDevicePresentWaitFeaturesKHR presentWait;
VkPhysicalDevicePresentIdFeaturesKHR presentId;
VkPhysicalDeviceProvokingVertexFeaturesEXT provokingVertex;
VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR presentModeFifoProps;
};
const PhysicalDeviceProps &GetPhysicalDeviceProperties(int i = -1) const {
+18 -4
View File
@@ -430,10 +430,8 @@ public:
PresentMode GetPresentMode() const {
switch (vulkan_->GetPresentMode()) {
case VK_PRESENT_MODE_FIFO_KHR: return PresentMode::FIFO;
case VK_PRESENT_MODE_FIFO_RELAXED_KHR: return PresentMode::FIFO_RELAXED; // We treat is as FIFO for now (and won't ever enable it anyway...)
case VK_PRESENT_MODE_IMMEDIATE_KHR: return PresentMode::IMMEDIATE;
case VK_PRESENT_MODE_MAILBOX_KHR: return PresentMode::MAILBOX;
case VK_PRESENT_MODE_FIFO_LATEST_READY_KHR: return PresentMode::FIFO_LATEST_READY;
default: return PresentMode::FIFO;
}
}
@@ -503,7 +501,21 @@ public:
void BeginFrame(DebugFlags debugFlags) override;
void EndFrame() override;
void Present(PresentMode presentMode) override;
PresentMode GetCurrentPresentMode() const override {
switch (vulkan_->GetPresentMode()) {
case VK_PRESENT_MODE_IMMEDIATE_KHR:
return PresentMode::IMMEDIATE;
case VK_PRESENT_MODE_MAILBOX_KHR:
return PresentMode::MAILBOX;
case VK_PRESENT_MODE_FIFO_KHR:
case VK_PRESENT_MODE_FIFO_RELAXED_KHR:
case VK_PRESENT_MODE_FIFO_LATEST_READY_KHR:
default:
return PresentMode::FIFO;
}
}
int GetFrameCount() override {
return frameCount_;
@@ -896,6 +908,9 @@ VKContext::VKContext(VulkanContext *vulkan, bool useRenderThread)
: vulkan_(vulkan), renderManager_(vulkan, useRenderThread, frameTimeHistory_) {
shaderLanguageDesc_.Init(GLSL_VULKAN);
// Make sure that the surface has been initialized.
_dbg_assert_(vulkan->GetAvailablePresentModes().size() > 0);
caps_.coordConvention = CoordConvention::Vulkan;
caps_.setMaxFrameLatencySupported = true;
caps_.anisoSupported = vulkan->GetDeviceFeatures().enabled.standard.samplerAnisotropy != 0;
@@ -935,13 +950,12 @@ VKContext::VKContext(VulkanContext *vulkan, bool useRenderThread)
caps_.presentMaxInterval = 1;
caps_.presentInstantModeChange = false; // TODO: Fix this with some work in VulkanContext
caps_.presentModesSupported = (PresentMode)0;
for (auto mode : vulkan->GetAvailablePresentModes()) {
switch (mode) {
case VK_PRESENT_MODE_FIFO_KHR: caps_.presentModesSupported |= PresentMode::FIFO; break;
case VK_PRESENT_MODE_IMMEDIATE_KHR: caps_.presentModesSupported |= PresentMode::IMMEDIATE; break;
case VK_PRESENT_MODE_MAILBOX_KHR: caps_.presentModesSupported |= PresentMode::MAILBOX; break;
case VK_PRESENT_MODE_FIFO_LATEST_READY_KHR: caps_.presentModesSupported |= PresentMode::FIFO_LATEST_READY; break;
case VK_PRESENT_MODE_FIFO_RELAXED_KHR: caps_.presentModesSupported |= PresentMode::FIFO_RELAXED; break;
default: break; // Ignore any other modes.
}
}
+2 -3
View File
@@ -582,13 +582,11 @@ enum class PresentMode {
FIFO = 1,
IMMEDIATE = 2,
MAILBOX = 4,
FIFO_RELAXED = 8, // Vulkan only
FIFO_LATEST_READY = 16, // Vulkan only
};
ENUM_CLASS_BITOPS(PresentMode);
inline bool PresentationModeBlocks(PresentMode mode) {
return mode & (PresentMode::FIFO | PresentMode::FIFO_RELAXED | PresentMode::FIFO_LATEST_READY);
return mode & PresentMode::FIFO;
}
struct DeviceCaps {
@@ -862,6 +860,7 @@ public:
// Some backends also can't change presentation mode immediately.
virtual void Present(PresentMode presentMode) = 0;
virtual PresentMode GetCurrentPresentMode() const = 0;
// This should be avoided as much as possible, in favor of clearing when binding a render target, which is native
// on Vulkan.
+3
View File
@@ -262,6 +262,9 @@ void Add1PxTransparentBorder(Image &img) {
newData[(y + 1) * (img.w + 2) + (x + 1)] = c;
}
}
img.dat = std::move(newData);
img.w += 2;
img.h += 2;
}
void AddDropShadow(Image &img, int shadowSize, float intensity) {
+2 -39
View File
@@ -193,24 +193,6 @@ static bool DefaultCodeGen() {
#endif
}
static bool DefaultVSync() {
#if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(UWP)
// Previously we didn't allow turning off vsync/FIFO on Android. Let's set the default accordingly.
return true;
#else
return false;
#endif
}
static int DefaultVulkanPresentMode() {
#if PPSSPP_PLATFORM(IOS)
// iOS only supports FIFO.
return (int)PresentMode::Fifo;
#else
return (int)PresentMode::Mailbox;
#endif
}
static bool DefaultEnableStateUndo() {
#if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS)
// Off on mobile to save disk space.
@@ -623,24 +605,6 @@ struct ConfigTranslator {
typedef ConfigTranslator<GPUBackend, GPUBackendToString, GPUBackendFromString> GPUBackendTranslator;
static int FastForwardModeFromString(const std::string &s) {
if (!strcasecmp(s.c_str(), "CONTINUOUS"))
return (int)FastForwardMode::CONTINUOUS;
if (!strcasecmp(s.c_str(), "SKIP_FLIP"))
return (int)FastForwardMode::SKIP_FLIP;
return DefaultFastForwardMode();
}
static std::string FastForwardModeToString(int v) {
switch (FastForwardMode(v)) {
case FastForwardMode::CONTINUOUS:
return "CONTINUOUS";
case FastForwardMode::SKIP_FLIP:
return "SKIP_FLIP";
}
return "CONTINUOUS";
}
static std::string DefaultInfrastructureUsername() {
// If the user has already picked a Nickname that satisfies the rules and is not "PPSSPP",
// let's use that.
@@ -694,7 +658,6 @@ static const ConfigSetting graphicsSettings[] = {
ConfigSetting("FrameRate", &g_Config.iFpsLimit1, 0, CfgFlag::PER_GAME),
ConfigSetting("FrameRate2", &g_Config.iFpsLimit2, -1, CfgFlag::PER_GAME),
ConfigSetting("AnalogFrameRate", &g_Config.iAnalogFpsLimit, 240, CfgFlag::PER_GAME),
ConfigSetting("UnthrottlingMode", &g_Config.iFastForwardMode, &DefaultFastForwardMode, &FastForwardModeToString, &FastForwardModeFromString, CfgFlag::PER_GAME),
#if defined(USING_WIN_UI)
ConfigSetting("RestartRequired", &g_Config.bRestartRequired, false, CfgFlag::DONT_SAVE),
#endif
@@ -737,8 +700,8 @@ static const ConfigSetting graphicsSettings[] = {
ConfigSetting("TexScalingType", &g_Config.iTexScalingType, 0, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("TexDeposterize", &g_Config.bTexDeposterize, false, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("TexHardwareScaling", &g_Config.bTexHardwareScaling, false, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("VSync", &g_Config.bVSync, &DefaultVSync, CfgFlag::PER_GAME),
ConfigSetting("VulkanPresentMode", &g_Config.iVulkanPresentationMode, &DefaultVulkanPresentMode, CfgFlag::PER_GAME),
ConfigSetting("VerticalSync", &g_Config.bVSync, true, CfgFlag::PER_GAME),
ConfigSetting("LowLatencyPresent", &g_Config.bLowLatencyPresent, true, CfgFlag::PER_GAME),
ConfigSetting("BloomHack", &g_Config.iBloomHack, 0, CfgFlag::PER_GAME | CfgFlag::REPORT),
// Not really a graphics setting...
+6 -2
View File
@@ -169,8 +169,13 @@ public:
bool bCameraMirrorHorizontal;
int iDisplayFramerateMode; // enum DisplayFramerateMode. Android-only.
int iDisplayRefreshRate = 60;
int iVulkanPresentationMode;
// These two combined choose the presentation mode.
// vsync = false: Immediate
// vsync = true, low latency present = true: Mailbox
// vsync = true, low latency present = false: FIFO
bool bVSync;
bool bLowLatencyPresent;
bool bSoftwareRendering;
bool bSoftwareRenderingJit;
@@ -203,7 +208,6 @@ public:
bool bShowImDebugger;
int iFrameSkip;
int iFastForwardMode; // See FastForwardMode in ConfigValues.h.
bool bAutoFrameSkip;
bool bEnableCardboardVR; // Cardboard Master Switch
-10
View File
@@ -147,16 +147,6 @@ ENUM_CLASS_BITOPS(DisableHLEFlags);
std::string GPUBackendToString(GPUBackend backend);
GPUBackend GPUBackendFromString(std::string_view backend);
// Vulkan present modes, linearized. Currently in order of lowest to highest latency, hopefully won't change in the future.
// NOTE: These values DO NOT match the flags in DrawContext caps - these are not used as a bitfield.
enum class PresentMode {
Immediate = 0, // VK_PRESENT_MODE_IMMEDIATE_KHR
Mailbox = 1, // VK_PRESENT_MODE_MAILBOX_KHR
FifoLatestReady = 2, // VK_PRESENT_MODE_FIFO_LATEST_READY_KHR
FifoRelaxed = 3, // VK_PRESENT_MODE_FIFO_RELAXED_KHR
Fifo = 4, // VK_PRESENT_MODE_FIFO_KHR
};
// For iIOTimingMethod.
enum IOTimingMethods {
IOTIMING_FAST = 0,
+53 -57
View File
@@ -22,6 +22,7 @@
#include "ppsspp_config.h"
#include "Common/Profiler/Profiler.h"
#include "Common/Log.h"
#include "Common/System/Display.h"
#include "Common/TimeUtil.h"
#include "Core/RetroAchievements.h"
@@ -56,22 +57,6 @@ void WaitUntil(double now, double timestamp, const char *reason) {
#endif
}
inline Draw::PresentMode GetBestImmediateMode(Draw::PresentMode supportedModes) {
if (supportedModes & Draw::PresentMode::MAILBOX) {
return Draw::PresentMode::MAILBOX;
} else {
return Draw::PresentMode::IMMEDIATE;
}
}
void FrameTiming::Reset(Draw::DrawContext *draw) {
if (g_Config.bVSync || !(draw->GetDeviceCaps().presentModesSupported & (Draw::PresentMode::MAILBOX | Draw::PresentMode::IMMEDIATE))) {
presentMode = Draw::PresentMode::FIFO;
} else {
presentMode = GetBestImmediateMode(draw->GetDeviceCaps().presentModesSupported);
}
}
void FrameTiming::DeferWaitUntil(double until, double *curTimePtr) {
_dbg_assert_(until > 0.0);
waitUntil_ = until;
@@ -89,54 +74,65 @@ void FrameTiming::PostSubmit() {
}
}
Draw::PresentMode ComputePresentMode(Draw::DrawContext *draw) {
_assert_(draw);
void FrameTiming::ComputePresentMode(Draw::DrawContext *draw, bool fastForward) {
_dbg_assert_(draw);
if (!draw) {
fastForwardSkipFlip_ = true;
presentMode_ = Draw::PresentMode::FIFO;
return;
}
Draw::PresentMode mode = Draw::PresentMode::FIFO;
_dbg_assert_(draw->GetDeviceCaps().presentModesSupported != (Draw::PresentMode)0);
if (draw->GetDeviceCaps().presentModesSupported & (Draw::PresentMode::IMMEDIATE | Draw::PresentMode::MAILBOX)) {
// Switch to immediate if desired and possible.
bool wantInstant = false;
if (!g_Config.bVSync) {
wantInstant = true;
if (draw->GetDeviceCaps().presentModesSupported == Draw::PresentMode::FIFO) {
// Only FIFO mode is supported (like on iOS and some GLES backends).
fastForwardSkipFlip_ = true;
presentMode_ = Draw::PresentMode::FIFO;
return;
}
// More than one present mode is supported. Use careful logic.
// The user has requested vsync off.
if (!g_Config.bVSync) {
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::IMMEDIATE) {
// Use immediate mode, whether fast-forwarding or not.
presentMode_ = Draw::PresentMode::IMMEDIATE;
fastForwardSkipFlip_ = false;
return;
}
// Inconsistent state - vsync is off but immediate mode is not supported.
// We will simply force on VSync.
g_Config.bVSync = true;
}
if (PSP_CoreParameter().fastForward && NetworkAllowSpeedControl()) {
wantInstant = true;
// At this point, vsync is always on. What decides now is whether MAILBOX or IMMEDIATE is available,
// and also if we need an unsynced mode.
// OK, vsync is requested (or immediate is not available). If mailbox is supported, it works the same as IMMEDIATE above.
if (g_Config.bLowLatencyPresent) {
// Use mailbox if available. It works fine for both fast-forward and normal.
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::MAILBOX) {
presentMode_ = Draw::PresentMode::MAILBOX;
fastForwardSkipFlip_ = false;
return;
}
// We could force off lowLatencyPresent here, but it's no good when changing between backends.
// So let's leave it on in the background, maybe the user just went from Vulkan to OpenGL.
}
FPSLimit limit = PSP_CoreParameter().fpsLimit;
if (!NetworkAllowSpeedControl()) {
limit = FPSLimit::NORMAL;
}
if (limit != FPSLimit::NORMAL) {
int limit;
if (PSP_CoreParameter().fpsLimit == FPSLimit::CUSTOM1)
limit = g_Config.iFpsLimit1;
else if (PSP_CoreParameter().fpsLimit == FPSLimit::CUSTOM2)
limit = g_Config.iFpsLimit2;
else
limit = PSP_CoreParameter().analogFpsLimit;
// For an alternative speed that is a clean factor of 60, the user probably still wants vsync.
// TODO: Should take the user's display refresh rate into account...
if (limit == 0 || (limit >= 0 && limit != 15 && limit != 30 && limit != 60)) {
wantInstant = true;
}
}
if (wantInstant && g_Config.bVSync && !draw->GetDeviceCaps().presentInstantModeChange) {
// If in vsync mode (which will be FIFO), and the backend can't switch immediately,
// stick to FIFO.
wantInstant = false;
}
// The outer if checks that instant modes are available.
if (wantInstant) {
mode = GetBestImmediateMode(draw->GetDeviceCaps().presentModesSupported);
// At this point, low-latency mode is not available, and vsync is on. We see if we can use INSTANT
// mode for fast-forwarding, or if we need to resort to frameskipping.
if (draw->GetDeviceCaps().presentInstantModeChange) {
if (fastForward) {
presentMode_ = Draw::PresentMode::IMMEDIATE;
fastForwardSkipFlip_ = false;
return;
}
}
return mode;
// Finally, fallback to FIFO mode, with skip-flip in fast-forward.
presentMode_ = Draw::PresentMode::FIFO;
fastForwardSkipFlip_ = true;
}
+11 -4
View File
@@ -12,18 +12,25 @@ class FrameTiming {
public:
void DeferWaitUntil(double until, double *curTimePtr);
void PostSubmit();
void Reset(Draw::DrawContext *draw);
void ComputePresentMode(Draw::DrawContext *draw, bool fastForward);
// Some backends won't allow changing this willy nilly.
Draw::PresentMode presentMode;
bool FastForwardNeedsSkipFlip() const {
return fastForwardSkipFlip_;
}
Draw::PresentMode PresentMode() const {
return presentMode_;
}
private:
// For use on the next Present. These two are set by ComputePresentMode.
Draw::PresentMode presentMode_;
bool fastForwardSkipFlip_;
double waitUntil_;
double *curTimePtr_;
};
extern FrameTiming g_frameTiming;
Draw::PresentMode ComputePresentMode(Draw::DrawContext *draw);
void WaitUntil(double now, double timestamp, const char *reason);
+11 -21
View File
@@ -580,22 +580,6 @@ void __DisplayFlip(int cyclesLate) {
bool duplicateFrames = g_Config.bRenderDuplicateFrames && g_Config.iFrameSkip == 0;
bool fastForwardSkipFlip = g_Config.iFastForwardMode != (int)FastForwardMode::CONTINUOUS;
Draw::DrawContext *draw = gpu->GetDrawContext();
if (draw) {
g_frameTiming.presentMode = ComputePresentMode(draw);
if (!draw->GetDeviceCaps().presentInstantModeChange && g_frameTiming.presentMode == Draw::PresentMode::FIFO) {
// Some backends can't just flip into MAILBOX/IMMEDIATE mode instantly.
// Vulkan doesn't support the interval setting, so we force skipping the flip.
// TODO: We'll clean this up in a more backend-independent way later.
fastForwardSkipFlip = true;
}
} else {
// Surely can never get here?
g_frameTiming.presentMode = Draw::PresentMode::FIFO;
}
if (!g_Config.bSkipBufferEffects) {
postEffectRequiresFlip = duplicateFrames || g_Config.bShaderChainRequires60FPS;
}
@@ -606,11 +590,14 @@ void __DisplayFlip(int cyclesLate) {
const bool fbDirty = gpu->FramebufferDirty();
Draw::DrawContext *draw = gpu->GetDrawContext();
bool needFlip = fbDirty || noRecentFlip || postEffectRequiresFlip;
if (!needFlip) {
// Okay, there's no new frame to draw, game might be sitting in a static loading screen
// or similar, and not long enough to trigger noRecentFlip. But audio may be playing, so we need to time still.
DoFrameIdleTiming();
g_frameTiming.ComputePresentMode(draw, false);
return;
}
@@ -624,10 +611,16 @@ void __DisplayFlip(int cyclesLate) {
bool forceNoFlip = false;
float refreshRate = System_GetPropertyFloat(SYSPROP_DISPLAY_REFRESH_RATE);
// Avoid skipping on devices that have 58 or 59 FPS, except when alternate speed is set.
bool refreshRateNeedsSkip = FrameTimingLimit() != framerate && FrameTimingLimit() > refreshRate;
const double fpsLimit = FrameTimingLimit();
bool throttle = fpsLimit != 0.0;
bool refreshRateNeedsSkip = fpsLimit != framerate && fpsLimit > refreshRate || !throttle;
g_frameTiming.ComputePresentMode(draw, refreshRateNeedsSkip);
// Alternative to frameskip fast-forward, where we draw everything.
// Useful if skipping a frame breaks graphics or for checking drawing speed.
if (fastForwardSkipFlip && (!FrameTimingThrottled() || refreshRateNeedsSkip)) {
if (g_frameTiming.FastForwardNeedsSkipFlip() && (!FrameTimingThrottled() || refreshRateNeedsSkip)) {
static double lastFlip = 0;
double now = time_now_d();
if ((now - lastFlip) < 1.0f / refreshRate) {
@@ -662,9 +655,6 @@ void __DisplayFlip(int cyclesLate) {
gpuStats.numFlips++;
}
bool throttle = FrameTimingThrottled();
int fpsLimit = FrameTimingLimit();
float scaledTimestep = (float)numVBlanksSinceFlip * timePerVblank;
if (fpsLimit > 0 && fpsLimit != framerate) {
scaledTimestep *= (float)framerate / fpsLimit;
+7 -9
View File
@@ -21,6 +21,7 @@
#include "Common/GPU/Vulkan/VulkanContext.h"
#include "Common/Data/Text/Parsers.h"
#include "Core/Config.h"
#include "Core/FrameTiming.h"
#include "GPU/Vulkan/VulkanUtil.h"
#ifdef _DEBUG
@@ -36,18 +37,15 @@ const VkComponentMapping VULKAN_1555_SWIZZLE = { VK_COMPONENT_SWIZZLE_B, VK_COMP
const VkComponentMapping VULKAN_565_SWIZZLE = { VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_IDENTITY };
const VkComponentMapping VULKAN_8888_SWIZZLE = { VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_IDENTITY };
VkPresentModeKHR ConfigPresentModeToVulkan() {
PresentMode presentMode = (PresentMode)g_Config.iVulkanPresentationMode;
VkPresentModeKHR ConfigPresentModeToVulkan(Draw::DrawContext *draw) {
g_frameTiming.ComputePresentMode(draw, false);
Draw::PresentMode presentMode = g_frameTiming.PresentMode();
switch (presentMode) {
case PresentMode::Immediate:
case Draw::PresentMode::IMMEDIATE:
return VK_PRESENT_MODE_IMMEDIATE_KHR;
case PresentMode::Mailbox:
case Draw::PresentMode::MAILBOX:
return VK_PRESENT_MODE_MAILBOX_KHR;
case PresentMode::FifoLatestReady:
return VK_PRESENT_MODE_FIFO_LATEST_READY_KHR;
case PresentMode::FifoRelaxed:
return VK_PRESENT_MODE_FIFO_RELAXED_KHR;
case PresentMode::Fifo:
case Draw::PresentMode::FIFO:
default:
return VK_PRESENT_MODE_FIFO_KHR;
}
+1 -1
View File
@@ -89,5 +89,5 @@ private:
VkShaderModule CompileShaderModule(VulkanContext *vulkan, VkShaderStageFlagBits stage, const char *code, std::string *error);
VkPresentModeKHR ConfigPresentModeToVulkan();
VkPresentModeKHR ConfigPresentModeToVulkan(Draw::DrawContext *draw);
void InitVulkanCreateInfoFromConfig(VulkanContext::CreateInfo *info);
+8 -7
View File
@@ -128,18 +128,19 @@ bool SDLVulkanGraphicsContext::Init(SDL_Window *&window, int x, int y, int w, in
break;
}
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(vulkan_, useMultiThreading);
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
if (!vulkan_->InitSwapchain(presentMode)) {
*error_message = vulkan_->InitError();
Shutdown();
return false;
}
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(vulkan_, useMultiThreading);
SetGPUBackend(GPUBackend::VULKAN);
bool success = draw_->CreatePresets();
_assert_(success);
@@ -170,7 +171,7 @@ void SDLVulkanGraphicsContext::Resize() {
// NOTE: Removing DestroySwapchain here causes a double re-create on MacOS with MoltenVK, for some reason.
// It's like passing on oldSwapchain doesn't really work as expected.
vulkan_->DestroySwapchain();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
vulkan_->InitSwapchain(presentMode);
draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, vulkan_->GetBackbufferWidth(), vulkan_->GetBackbufferHeight());
}
+27 -36
View File
@@ -84,9 +84,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.9.4"
version = "2.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "block"
@@ -153,7 +153,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -228,7 +228,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -663,9 +663,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.11.4"
version = "2.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5"
checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
dependencies = [
"equivalent",
"hashbrown",
@@ -783,13 +783,13 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
[[package]]
name = "mio"
version = "1.0.4"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
dependencies = [
"libc",
"wasi",
"windows-sys 0.59.0",
"windows-sys 0.61.2",
]
[[package]]
@@ -878,7 +878,7 @@ version = "0.10.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24ad14dd45412269e1a30f52ad8f0664f0f4f4a89ee8fe28c3b3527021ebb654"
dependencies = [
"bitflags 2.9.4",
"bitflags 2.10.0",
"cfg-if",
"foreign-types",
"libc",
@@ -895,7 +895,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -1055,7 +1055,7 @@ version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
dependencies = [
"bitflags 2.9.4",
"bitflags 2.10.0",
"errno",
"libc",
"linux-raw-sys",
@@ -1064,9 +1064,9 @@ dependencies = [
[[package]]
name = "rustls"
version = "0.23.32"
version = "0.23.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40"
checksum = "751e04a496ca00bb97a5e043158d23d66b5aabf2e1d5aa2a0aaebb1aafe6f82c"
dependencies = [
"once_cell",
"rustls-pki-types",
@@ -1122,7 +1122,7 @@ version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
dependencies = [
"bitflags 2.9.4",
"bitflags 2.10.0",
"core-foundation",
"core-foundation-sys",
"libc",
@@ -1166,7 +1166,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -1259,9 +1259,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.106"
version = "2.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b"
dependencies = [
"proc-macro2",
"quote",
@@ -1285,7 +1285,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -1294,7 +1294,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
dependencies = [
"bitflags 2.9.4",
"bitflags 2.10.0",
"core-foundation",
"system-configuration-sys",
]
@@ -1339,7 +1339,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
[[package]]
@@ -1420,7 +1420,7 @@ version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2"
dependencies = [
"bitflags 2.9.4",
"bitflags 2.10.0",
"bytes",
"futures-util",
"http",
@@ -1570,7 +1570,7 @@ dependencies = [
"log",
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
"wasm-bindgen-shared",
]
@@ -1605,7 +1605,7 @@ checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -1769,15 +1769,6 @@ dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
"windows-targets 0.52.6",
]
[[package]]
name = "windows-sys"
version = "0.60.2"
@@ -2012,7 +2003,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
"synstructure",
]
@@ -2033,7 +2024,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
"synstructure",
]
@@ -2073,5 +2064,5 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.106",
"syn 2.0.107",
]
+7 -2
View File
@@ -132,14 +132,19 @@ static void DrawFrameTiming(UIContext *ctx, const Bounds &bounds) {
char statBuf[1024]{};
Draw::DrawContext *draw = ctx->GetDrawContext();
ctx->Flush();
ctx->BindFontTexture();
ctx->Draw()->SetFontScale(0.5f, 0.5f);
// NOTE: This is not necessarily the same as the actual present mode.
snprintf(statBuf, sizeof(statBuf),
"Timing mode (interval): %s",
Draw::PresentModeToString(g_frameTiming.presentMode));
"Presentation mode: %s Needs skip: %s\n"
"Actual presentation mode: %s",
Draw::PresentModeToString(g_frameTiming.PresentMode()),
g_frameTiming.FastForwardNeedsSkipFlip() ? "true" : "false"),
Draw::PresentModeToString(draw->GetCurrentPresentMode());
ctx->Draw()->DrawTextRect(ubuntu24, statBuf, bounds.x + 10, bounds.y + 50, bounds.w - 20, bounds.h - 30, 0xFFFFFFFF, FLAG_DYNAMIC_ASCII);
-5
View File
@@ -468,11 +468,6 @@ void DeveloperToolsScreen::CreateGraphicsTab(UI::LinearLayout *list) {
list->Add(new CheckBox(&g_Config.bVendorBugChecksEnabled, dev->T("Enable driver bug workarounds")));
list->Add(new CheckBox(&g_Config.bShaderCache, dev->T("Enable shader cache")));
static const char *ffModes[] = { "Render all frames", "", "Frame Skipping" };
PopupMultiChoice *ffMode = list->Add(new PopupMultiChoice(&g_Config.iFastForwardMode, dev->T("Fast-forward mode"), ffModes, 0, ARRAY_SIZE(ffModes), I18NCat::GRAPHICS, screenManager()));
ffMode->SetEnabledFunc([]() { return !g_Config.bVSync; });
ffMode->HideChoice(1); // not used
auto displayRefreshRate = list->Add(new PopupSliderChoice(&g_Config.iDisplayRefreshRate, 60, 1000, 60, dev->T("Display refresh rate"), 1, screenManager()));
displayRefreshRate->SetFormat(si->T("%d Hz"));
+25 -54
View File
@@ -355,6 +355,10 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings)
}
#endif
graphicsSettings->Add(new CheckBox(&g_Config.bReplaceTextures, dev->T("Replace textures")));
graphicsSettings->Add(new ItemHeader(gr->T("Display")));
if (deviceType != DEVICE_TYPE_VR) {
#if !defined(MOBILE_DEVICE)
graphicsSettings->Add(new CheckBox(&g_Config.bFullScreen, gr->T("FullScreen", "Full Screen")))->OnClick.Handle(this, &GameSettingsScreen::OnFullscreenChange);
@@ -367,59 +371,6 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings)
}
#endif
if (GetGPUBackend() == GPUBackend::VULKAN) {
// In Vulkan, we can now explicitly let the user choose the presentation mode.
static const char *presentationModes[] = {
"Immediate (lower latency, tearing)",
"Mailbox (lower latency, recommended)",
"FIFO: latest ready",
"FIFO: relaxed",
"FIFO (higher latency, framerate stability)",
};
// If only one mode is supported (like FIFO on iOS), no need to show the option.
if (CountSetBits((u32)draw->GetDeviceCaps().presentModesSupported) > 1) {
UI::PopupMultiChoice *presentationMode = graphicsSettings->Add(new PopupMultiChoice(&g_Config.iVulkanPresentationMode, gr->T("Frame presentation mode"), presentationModes, 0, ARRAY_SIZE(presentationModes), I18NCat::GRAPHICS, screenManager()));
presentationMode->SetChoiceIcon(0, ImageID("I_WARNING"));
if (!(draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::IMMEDIATE)) {
presentationMode->HideChoice(0);
}
if (!(draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::MAILBOX)) {
presentationMode->HideChoice(1);
}
if (!(draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::FIFO_LATEST_READY)) {
presentationMode->HideChoice(2);
}
if (!(draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::FIFO_RELAXED)) {
presentationMode->HideChoice(3);
}
if (!(draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::FIFO)) {
presentationMode->HideChoice(4);
}
// Force the setting to a good supported mode if the current one is not supported, otherwise this will look weird.
if (presentationMode->IsChoiceHidden(g_Config.iVulkanPresentationMode)) {
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::MAILBOX) {
g_Config.iVulkanPresentationMode = (int)Draw::PresentMode::MAILBOX;
} else if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::FIFO) {
g_Config.iVulkanPresentationMode = (int)Draw::PresentMode::FIFO;
}
}
presentationMode->OnChoice.Add([=](EventParams &e) {
NativeResized();
});
}
} else {
// All backends support FIFO. Check if any immediate modes are supported, if so we can allow the user to choose.
if (draw->GetDeviceCaps().presentModesSupported & (Draw::PresentMode::IMMEDIATE | Draw::PresentMode::MAILBOX)) {
CheckBox *vSync = graphicsSettings->Add(new CheckBox(&g_Config.bVSync, gr->T("VSync")));
vSync->OnClick.Add([=](EventParams &e) {
NativeResized();
});
}
}
#if PPSSPP_PLATFORM(ANDROID)
// Hide Immersive Mode on pre-kitkat Android
if (System_GetPropertyInt(SYSPROP_SYSTEMVERSION) >= 19) {
@@ -434,7 +385,27 @@ void GameSettingsScreen::CreateGraphicsSettings(UI::ViewGroup *graphicsSettings)
});
}
graphicsSettings->Add(new CheckBox(&g_Config.bReplaceTextures, dev->T("Replace textures")));
// If only one mode is supported (like FIFO on iOS), no need to show the options.
if (CountSetBits((u32)draw->GetDeviceCaps().presentModesSupported) > 1) {
// Immediate means non-synchronized, tearing.
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::IMMEDIATE) {
CheckBox *vSync = graphicsSettings->Add(new CheckBox(&g_Config.bVSync, gr->T("VSync")));
vSync->OnClick.Add([=](EventParams &e) {
NativeResized(); // TODO: Remove
});
}
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::MAILBOX) {
CheckBox *lowLatency = graphicsSettings->Add(new CheckBox(&g_Config.bLowLatencyPresent, gr->T("Low latency display")));
lowLatency->OnClick.Add([=](EventParams &e) {
NativeResized(); // TODO: Remove
});
// If the immediate mode is supported, we can tie low latency present to VSync.
if (draw->GetDeviceCaps().presentModesSupported & Draw::PresentMode::IMMEDIATE) {
lowLatency->SetEnabledPtr(&g_Config.bVSync);
}
}
}
graphicsSettings->Add(new ItemHeader(gr->T("Frame Rate Control")));
static const char *frameSkip[] = {"Off", "1", "2", "3", "4", "5", "6", "7", "8"};
+3 -3
View File
@@ -1179,7 +1179,8 @@ void NativeFrame(GraphicsContext *graphicsContext) {
if (g_Config.bGpuLogProfiler)
debugFlags |= Draw::DebugFlags::PROFILE_SCOPES;
g_frameTiming.Reset(g_draw);
// Can be overridden by sceDisplay which may pass true for the second argument.
g_frameTiming.ComputePresentMode(g_draw, false);
g_draw->BeginFrame(debugFlags);
@@ -1206,8 +1207,7 @@ void NativeFrame(GraphicsContext *graphicsContext) {
ClearFailedGPUBackends();
}
Draw::PresentMode presentMode = ComputePresentMode(g_draw);
g_draw->Present(presentMode);
g_draw->Present(g_frameTiming.PresentMode());
if (resized) {
INFO_LOG(Log::G3D, "Resized flag set - recalculating bounds");
+10 -8
View File
@@ -52,6 +52,7 @@
#include "Core/Config.h"
#include "Core/ConfigValues.h"
#include "Core/System.h"
#include "Core/FrameTiming.h"
#include "Common/GPU/Vulkan/VulkanLoader.h"
#include "Common/GPU/Vulkan/VulkanContext.h"
@@ -117,19 +118,20 @@ bool WindowsVulkanContext::Init(HINSTANCE hInst, HWND hWnd, std::string *error_m
vulkan_->InitSurface(WINDOWSYSTEM_WIN32, (void *)hInst, (void *)hWnd);
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
if (!vulkan_->InitSwapchain(presentMode)) {
*error_message = vulkan_->InitError();
Shutdown();
return false;
}
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(vulkan_, useMultiThreading);
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
if (!vulkan_->InitSwapchain(presentMode)) {
*error_message = vulkan_->InitError();
Shutdown();
return false;
}
SetGPUBackend(GPUBackend::VULKAN, vulkan_->GetPhysicalDeviceProperties(deviceNum).properties.deviceName);
bool success = draw_->CreatePresets();
_assert_msg_(success, "Failed to compile preset shaders");
@@ -166,7 +168,7 @@ void WindowsVulkanContext::Shutdown() {
void WindowsVulkanContext::Resize() {
draw_->HandleEvent(Draw::Event::LOST_BACKBUFFER, vulkan_->GetBackbufferWidth(), vulkan_->GetBackbufferHeight());
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
vulkan_->InitSwapchain(presentMode);
draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, vulkan_->GetBackbufferWidth(), vulkan_->GetBackbufferHeight());
}
+8 -7
View File
@@ -70,14 +70,15 @@ bool AndroidVulkanContext::InitFromRenderThread(ANativeWindow *wnd, int desiredB
return false;
}
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(g_Vulkan, useMultiThreading);
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
bool success = false;
if (g_Vulkan->InitSwapchain(presentMode)) {
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(g_Vulkan, useMultiThreading);
SetGPUBackend(GPUBackend::VULKAN);
success = draw_->CreatePresets(); // Doesn't fail, we ship the compiler.
_assert_msg_(success, "Failed to compile preset shaders");
@@ -128,7 +129,7 @@ void AndroidVulkanContext::Resize() {
g_Vulkan->DestroySurface();
g_Vulkan->ReinitSurface();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
g_Vulkan->InitSwapchain(presentMode);
draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
INFO_LOG(Log::G3D, "AndroidVulkanContext::Resize end (final size: %dx%d)", g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
+2 -1
View File
@@ -320,7 +320,6 @@ Enable Logging = ‎تفعيل سجل التصحيح
Enable shader cache = Enable shader cache
Enter address = ‎أدخل العنوان
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -652,6 +651,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = عرض
Display layout & effects = ‎أظهر مُعدل النسق
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -687,6 +687,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = ‎خطي
Low = ‎منخفض
Low latency display = عرض تأخير منخفض
LowCurves = Spline/Bezier curves quality
LowCurves Tip = ‎فقط يستخدم من بعض الألعاب, يتحكم بنعومة المنحنيات
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Enable debug logging
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Ekran
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Low
Low latency display = Aşağı gecikmə ekranı
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -314,7 +314,6 @@ Enable Logging = Уключыць журнал адладкі
Enable shader cache = Enable shader cache
Enter address = Увядзіце адрас
Fast = Fast
Fast-forward mode = Рэжым хуткай перамоткі наперад
Fragment = Фрагмент
FPU = FPU
Framedump tests = Тэсты дампаў кадраў
@@ -627,6 +626,7 @@ CPU texture upscaler (slow) = Тып маштабавання
Current GPU driver = Бягучы драйвер ГП
Default GPU driver = Стандартны драйвер ГП
Disable culling = Disable culling
Display = Дисплей
Display layout & effects = Размяшчэнне экрана і эфекты
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
Drivers = Драйверы
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Аклюзія блікаў аб'ектыва
Linear = Лінейны
Low = Нізкая
Low latency display = Дыск з нізкай затрымкай
LowCurves = Якасць сплайнаў і крывых Безье
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Меншае разрозненне для эфектаў (памяншае артэфакты)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Enable debug logging
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Устройство
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Дисплей
Display layout & effects = Оформление и ефекти на дисплея
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = По-бързо, но може да причини п
Lens flare occlusion = Запушване на отблясъка на обектива
Linear = Линеарно
Low = Ниско
Low latency display = Дисплей с ниска латентност
LowCurves = Качество на сплайните и кривите на Безие
LowCurves Tip = Използва се само от някои игри, контролира плавността на кривите
Lower resolution for effects (reduces artifacts) = По-ниска резолюция за ефекти (намалява артефактите)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Activa el registre
Enable shader cache = Enable shader cache
Enter address = Inseriu adreça
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Dispositiu
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Desactivat
Display = Pantalla
Display layout & effects = Editor de l'àrea de pantalla
Display Resolution (HW scaler) = Resolució de pantalla (escalat per maquinari)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Ràpid, però puc provocar problemes als textos d'alg
Lens flare occlusion = Lens flare occlusion
Linear = Lineal
Low = Baixa
Low latency display = Pantalla de baixa latència
LowCurves = Qualitat de corbes Bézier
LowCurves Tip = Augmenta/redueix significativament el renderitzat de corbes Bézier
Lower resolution for effects (reduces artifacts) = Efectes en baixa resolució\n(redueix errors gràfics per escalat)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Povolit záznam při ladění
Enable shader cache = Enable shader cache
Enter address = Zadejte adresu
Fast = Fast
Fast-forward mode = Rychle vpřed
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Displej
Display layout & effects = Zobrazit editor rozvržení
Display Resolution (HW scaler) = Rozlišení obrazovky (Hardwarové zvětšení)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineární
Low = Nízké
Low latency display = Displej s nízkou latencí
LowCurves = Kvalita křivek/Beziérových křivek
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Nižší rozlišení efektů (snižuje artefakty)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Aktiver fejlfindingslogning
Enable shader cache = Enable shader cache
Enter address = Indtast adresse
Fast = Fast
Fast-forward mode = Turbo
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Skærm
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Skærmopløsning (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineær
Low = Lav
Low latency display = Lav latens display
LowCurves = Simple spline og bezier-kurver (hurtigere)
LowCurves Tip = Bruges kun af nogle spil, kontrollerer glathed af kurver
Lower resolution for effects (reduces artifacts) = Lavere opløsning for effekter (reducerer artefakter)
+2 -1
View File
@@ -309,7 +309,6 @@ Enable driver bug workarounds = Treiberfehler-Umgehungen aktivieren
Enable Logging = Fehlerbehebungs-Protokollierung aktivieren
Enable shader cache = Schattierer-Cache aktivieren
Enter address = Adresse eingeben
Fast-forward mode = Schnellvorlauf-Modus
FPU = FPU
Fragment = Fragment
Frame timing = Einzelbild-Timing
@@ -635,6 +634,7 @@ Device = Gerät
Direct3D 11 = Direct3D 11
Disable culling = Culling deaktivieren
Disabled = Deaktiviert
Display = Anzeige
Display layout & effects = Bildschirm-Layout & Effekte
Display Resolution (HW scaler) = Bildschirmauflösung (HW-Skalierer)
Driver requires Android API version %1, current is %2 = Treiber erfordert Android-API-Version %1, aktuell ist %2
@@ -670,6 +670,7 @@ Lazy texture caching Tip = Schneller, kann aber in einigen Spielen Textprobleme
Lens flare occlusion = Verdeckung von Linsenreflexionen
Linear = Linear
Low = Niedrig
Low latency display = Niedriglatenzdisplay
LowCurves = Spline-/Bezierkurven-Qualität
LowCurves Tip = Wird nur von einigen Spielen verwendet, es steuert die Glätte von Kurven
Lower resolution for effects (reduces artifacts) = Niedrigere Auflösung für Effekte (Reduziert Artifakte)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Padenni Log
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Tampilan
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Maruruh
Low = Low
Low latency display = Tampilan latensi rendah
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -338,7 +338,6 @@ Enable Logging = Enable debug logging
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
Fragment = Fragment
FPU = FPU
Framedump tests = Framedump tests
@@ -651,6 +650,7 @@ CPU texture upscaler (slow) = Upscale type
Current GPU driver = Current GPU driver
Default GPU driver = Default GPU driver
Disable culling = Disable culling
Display = Display
Display layout & effects = Display layout & effects
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
Drivers = Drivers
@@ -703,6 +703,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Low
Low latency display = Low latency display
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -315,7 +315,6 @@ Enable Logging = Activar registro
Enable shader cache = Habilitar caché de shaders
Enter address = Introducir dirección
Fast = Rápido
Fast-forward mode = Modo de avance rápido
FPU = FPU
Fragment = Fragmentos
Frame Profiler = Analizador de fotogramas
@@ -645,6 +644,7 @@ Device = Dispositivo
Direct3D 11 = Direct3D 11
Disable culling = Desactivar selección
Disabled = Desactivado
Display = Pantalla
Display layout & effects = Distribución de pantalla y efectos
Display Resolution (HW scaler) = Resolución de pantalla (escalado por hardware)
Driver requires Android API version %1, current is %2 = El controlador requiere la versión API de Android %1, la versión actual es %2
@@ -680,6 +680,7 @@ Lazy texture caching Tip = Más rápido, pero puede causar problemas de texto en
Lens flare occlusion = Oclusión por destello de lente
Linear = Lineal
Low = Baja
Low latency display = Pantalla de baja latencia
LowCurves = Calidad de curvas Spline/Bezier
LowCurves Tip = Solo lo utilizan algunos juegos, controla la suavidad de las curvas.
Lower resolution for effects (reduces artifacts) = Resolución más baja para efectos (reduce artefactos)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Activar registro
Enable shader cache = Enable shader cache
Enter address = Insertar dirección
Fast = Fast
Fast-forward mode = Modo turbo
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Dispositivo
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Apagado
Display = Pantalla
Display layout & effects = Editar pantalla y Shaders
Display Resolution (HW scaler) = Resolución de pantalla (escalado por HW)
Driver requires Android API version %1, current is %2 = El controlador requiere la versión de API de Android %1, la actual es %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Más rápido, pero puede causar problemas de texto en
Lens flare occlusion = Lens flare occlusion
Linear = Lineal
Low = Baja
Low latency display = Pantalla de baja latencia
LowCurves = Calidad de curvas bézier/Spline
LowCurves Tip = Controla la calidad de las curvas renderizadas, pero solo se utiliza en ciertos juegos.
Lower resolution for effects (reduces artifacts) = Efectos en baja resolución\n(reduce errores gráficos por escalado)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = ‎روشن کردن لاگ باگ‌ها
Enable shader cache = Enable shader cache
Enter address = وارد کردن ادرس
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = نمایش
Display layout & effects = چیدمان صفحه
Display Resolution (HW scaler) = رزولوشن صفحه
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = ‎خطی
Low = ‎کم
Low latency display = نمایش با تأخیر کم
LowCurves = ‎Spline/Bezier کیفیت منحنی‌های
LowCurves Tip = ‎فقط در تعدادی بازی استفاده میشود، کیفیت منحنی‌ها را کنترل میکند
Lower resolution for effects (reduces artifacts) = ‎کاهش رزولوشن افکت‌ها (کاهش باگ گرافیکی)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Ota virheenkorjauksen kirjaaminen käyttöön
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Pikakelaus
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Laite
Direct3D 11 = Direct3D 11
Disable culling = Poista taustapintojen hylkääminen
Disabled = Poistettu käytöstä
Display = Näyttö
Display layout & effects = Näyttöasettelu ja -efektit
Display Resolution (HW scaler) = Näyttöresoluutio (Laitteiston skaalaaja)
Driver requires Android API version %1, current is %2 = Ajurin vaatima Android API -versio on %1, nykyinen versio on %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Nopeampi, mutta voi aiheuttaa tekstiongelmia joissaki
Lens flare occlusion = Lens flare occlusion
Linear = Lineaarinen
Low = Matala
Low latency display = Alhaisen viiveen näyttö
LowCurves = Spline/Bezier-käyrien laatu
LowCurves Tip = Käytetään vain joissakin peleissä, ohjaa käyrien sileyttä
Lower resolution for effects (reduces artifacts) = Alempi resoluutio efekteille (vähentää häiriöitä)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Activer le journal de débogage
Enable shader cache = Enable shader cache
Enter address = Entrer une adresse
Fast = Fast
Fast-forward mode = Vitesse max
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Appareil
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Désactivé
Display = Affichage
Display layout & effects = Éditeur d'affichage
Display Resolution (HW scaler) = Définition d'affichage (mise à l'échelle matérielle)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linéaire
Low = Basse
Low latency display = Écran à faible latence
LowCurves = Qualité des courbes de Bézier et splines
LowCurves Tip = Seulement utilisé par certains jeux, contrôle le lissage des courbes
Lower resolution for effects (reduces artifacts) = Réduire définition des effets (réduit artéfacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Activar rexistro
Enable shader cache = Enable shader cache
Enter address = Insertar dirección
Fast = Fast
Fast-forward mode = Modo turbo
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Pantalla
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Resolución de pantalla (escalado por hardware)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineal
Low = Baixa
Low latency display = Pantalla de baixa latencia
LowCurves = Calidade de curvas bézier
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Ενεργοποίηση καταγραφής αποσφαλμ
Enable shader cache = Enable shader cache
Enter address = Διεύθυνση Enter
Fast = Fast
Fast-forward mode = Γρήγορη προώθηση
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Απενεργοποιημένο
Display = Οθόνη
Display layout & effects = Επεξεργασία διάταξης οθόνης
Display Resolution (HW scaler) = Ανάλυση οθόνης (Κλιμακοτής hardware)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Γραμμικό
Low = Χαμηλή
Low latency display = Οθόνη χαμηλής καθυστέρησης
LowCurves = Ποιότητα καμπυλών spline/bezier
LowCurves Tip = Αυτή η επιλογή θα βελτιώσει/μειώσει σημαντικά την ποιότητα των παρεχόμενων καμπυλών
Lower resolution for effects (reduces artifacts) = Χαμηλότερη ανάλυση για εφέ (λιγότερα προβλήματα)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = אפשר דיווח באגים
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = תצוגה
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = קווי
Low = Low
Low latency display = תצוגה עם השהיה נמוכה
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = םיגאב חוויד רשפא
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -641,6 +640,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = תצוגה
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -676,6 +676,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = יווק
Low = Low
Low latency display = תצוגה עם השהיה נמוכה
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Uključi debug logging
Enable shader cache = Enable shader cache
Enter address = Upiši adresu
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Uređaj
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Isključeno
Display = Prikaz
Display layout & effects = Prikaz layout uređivača
Display Resolution (HW scaler) = Prikaz rezolucije (HW mjeritelj)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linearno
Low = Nisko
Low latency display = Prikaz s niskom kašnjenjem
LowCurves = Dugačke/Bezijerove kvalitete zavoja
LowCurves Tip = Jedino korišteno od strane nekoliko igara, kontrolira uglađenost grafike
Lower resolution for effects (reduces artifacts) = Snizi rezoluciju za efekte (smanjuje artefakte)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable driver bug workarounds = Enable driver bug workarounds
Enable shader cache = Enable shader cache
Enter address = Cím megadása
Fast = Fast
Fast-forward mode = Gyorsítás módja
FPU = FPU
Fragment = Fragment
Frame timing = Képkocka időzítés
@@ -644,6 +643,7 @@ Device = Eszköz
Direct3D 11 = Direct3D 11
Disable culling = Culling kikapcsolása
Disabled = Letiltva
Display = Kijelző
Display layout & effects = Nézet szerkesztő
Display Resolution (HW scaler) = Megjelenítési felbontás (HW skálázó)
Driver requires Android API version %1, current is %2 = A driverhez Android API %1 verzió szükséges, a jelenlegi %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineáris
Low = Alacsony
Low latency display = Alacsony késleltetésű kijelző
LowCurves = Spline/Bezier görbék minősége
LowCurves Tip = Csak néhány játék használja, a görbék simaságát szabályozza
Lower resolution for effects (reduces artifacts) = Alacsonyabb felbontású effektek (artifacteket csökkenti)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Hidupkan pencatat awakutu
Enable shader cache = Enable shader cache
Enter address = Masukkan alamat
Fast = Fast
Fast-forward mode = Pemajuan cepat
FPU = FPU
Fragment = Fragment
Frame timing = Waktu bingkai
@@ -644,6 +643,7 @@ Device = Perangkat
Direct3D 11 = Direct3D 11
Disable culling = Nonaktifkan pemusnahan
Disabled = Nonaktif
Display = Tampilan
Display layout & effects = Penyesuaian tata letak tampilan
Display Resolution (HW scaler) = Resolusi tampilan (penskala HW)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Lebih cepat, tetapi dapat menyebabkan masalah teks di
Lens flare occlusion = Oklusi silau lensa
Linear = Linier
Low = Rendah
Low latency display = Tampilan latensi rendah
LowCurves = Kualitas kurva spline/bezier
LowCurves Tip = Hanya digunakan oleh beberapa permainan, mengontrol kualitas kurva bezier dan spline
Lower resolution for effects (reduces artifacts) = Resolusi efek lebih rendah (mengurangi artefak)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Attiva Log del Debug
Enable shader cache = Abilita cache dello shader
Enter address = Inserire indirizzo
Fast = Fast
Fast-forward mode = Avanti veloce
FPU = FPU
Fragment = Frammento
Frame timing = Temporizzazione frame
@@ -645,6 +644,7 @@ Direct3D 11 = Direct3D 11
#Disable slower effects (speedup) = Disattiva gli effetti più lenti (veloce)
Disable culling = Disabilita culling
Disabled = Disabilitato
Display = Display
Display layout & effects = Editor Display
Display Resolution (HW scaler) = Risoluzione Display (scaler HW)
Driver requires Android API version %1, current is %2 = Il driver richiede la versione API di Android %1, attualmente c'è la %2
@@ -680,6 +680,7 @@ Lazy texture caching Tip = Veloce, ma può causare problemi di testo in alcuni g
Lens flare occlusion = Occlusione lens flare
Linear = Lineare
Low = Bassa
Low latency display = Display a bassa latenza
LowCurves = Riduci qualità splines e curve di bezier (maggior velocità)
LowCurves Tip = Usato solo in alcuni giochi, controlla la fluidità delle curve
Lower resolution for effects (reduces artifacts) = Bassa risoluzione degli effetti (riduce gli artefatti)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = デバッグログを有効にする
Enable shader cache = シェーダーキャッシュを有効にする
Enter address = アドレスを入力する
Fast = 速い
Fast-forward mode = 速度制限を解除
FPU = FPU
Fragment = フラグメント
Frame timing = フレームタイミング
@@ -644,6 +643,7 @@ Device = デバイス
Direct3D 11 = Direct3D 11
Disable culling = カリングを無効化
Disabled = 無効
Display = ディスプレイ
Display layout & effects = 画面のレイアウトを編集する
Display Resolution (HW scaler) = 画面解像度 (HWスケーラー)
Driver requires Android API version %1, current is %2 = ドライバーはAndroid API version %1を要求していますが, 現在 %2です
@@ -679,6 +679,7 @@ Lazy texture caching Tip = 高速化するがいくつかのゲームでテキ
Lens flare occlusion = レンズフレア表現への遮蔽処理
Linear = Linear
Low = 低
Low latency display = 低遅延ディスプレイ
LowCurves = スプライン/ベジェ曲線の品質
LowCurves Tip = いくつかのゲームでのみ用いられ、曲線の滑らかさをコントロールする
Lower resolution for effects (reduces artifacts) = エフェクトを低解像度にする (生成物を減らす)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Ngatifke ngangkut barang
Enable shader cache = Enable shader cache
Enter address = Ketik alamat
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Tampilan
Display layout & effects = Tata letak Tampilan editor
Display Resolution (HW scaler) = Resolusi tampilan (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Kurang
Low latency display = Layang latensi rendah
LowCurves = Kualitas kurva Spline/Bezier
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Resolusi ngisor kanggo efek (nyuda artefak)
+2 -1
View File
@@ -314,7 +314,6 @@ Enable Logging = 디버그 로깅 활성화
Enable shader cache = 셰이더 캐시 활성화
Enter address = 주소 입력
Fast = 빠름
Fast-forward mode = 빨리 감기
Fragment = 단편
FPU = FPU
Framedump tests = 프레임 덤프 테스트
@@ -627,6 +626,7 @@ CPU texture upscaler (slow) = 업스케일 유형
Current GPU driver = 현재 GPU 드라이버
Default GPU driver = 기본 GPU 드라이버
Disable culling = 컬링 비활성화
Display = 디스플레이
Display layout & effects = 화면 레이아웃 편집기
Driver requires Android API version %1, current is %2 = 드라이버에는 안드로이드 API 버전 %1이(가) 필요하며, 현재는 %2입니다.
Drivers = 드라이버
@@ -679,6 +679,7 @@ Lazy texture caching Tip = 더 빠르지만 몇몇 게임에서 텍스트 문제
Lens flare occlusion = 렌즈 플레어 차단
Linear = 선형 필터링
Low = 낮음
Low latency display = 낮은 지연 시간 디스플레이
LowCurves = 스플라인/베지어 곡선 품질
LowCurves Tip = 일부 게임에서만 사용되며, 곡선의 부드러움을 제어
Lower resolution for effects (reduces artifacts) = 효과에 대한 낮은 해상도 (인공물 감소)
+2 -1
View File
@@ -328,7 +328,6 @@ Enable Logging = Enable debug logging
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
Fragment = Fragment
FPU = FPU
Framedump tests = Framedump tests
@@ -641,6 +640,7 @@ CPU texture upscaler (slow) = Upscale type
Current GPU driver = Current GPU driver
Default GPU driver = Default GPU driver
Disable culling = Disable culling
Display = Nîşan
Display layout & effects = Display layout & effects
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
Drivers = Drivers
@@ -693,6 +693,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Low
Low latency display = Pêşangeha bi derfeta jê
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = ເປີດໃຊ້ງານ logging
Enable shader cache = Enable shader cache
Enter address = ໃສ່ຄ່າທີ່ຢູ່
Fast = Fast
Fast-forward mode = ເລັ່ງເທີໂບ
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = ສະແດງ
Display layout & effects = ແກ້ໄຂຮູບແບບໜ້າຈໍ
Display Resolution (HW scaler) = ຄວາມລະອຽດໜ້າຈໍ (ຕາມຮາດແວຣ໌)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = ຕ່ຳ
Low latency display = ການສະແດງທີ່ມີລາຍການສະຫຼຸບແລະສົທານ
LowCurves = ລະດັບເສັ້ນສອງມິຕິ ຫຼື ເສັ້ນໂຄ້ງ
LowCurves Tip = ໃຊ້ສະເພາະບາງເກມ, ເພື່ອຄວບຄຸມຄວາມມື່ນໄຫຼຂອງເສັ້ນໂຄ້ງ
Lower resolution for effects (reduces artifacts) = ຫຼຸດຄວາມລະອຽດຂອງເອັບເຟກໃຫ້ຕ່ຳລົງ (ແກ້ພາບແຈ້ງ)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Įjungti testinio režimo statuso rašymą į failus
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Ekranas
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Ekrano rezoliucija ("HW" ištiesinimas)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linijinis
Low = Žema
Low latency display = Žema uždelsimo ekranas
LowCurves = "Spline/Bezier" lankstumų kokybė
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Upayakan log pepijat
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Paparan
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Garis dekat
Low = Low
Low latency display = Paparan latensi rendah
LowCurves = Kualiti rendah splin dan keluk bezier (tingkatkan kelajuan)
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Foutlogboek inschakelen
Enable shader cache = Enable shader cache
Enter address = Adres invoeren
Fast = Fast
Fast-forward mode = Versnellen
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Display
Display layout & effects = Schermweergave bewerken
Display Resolution (HW scaler) = Schermresolutie (hardware)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineair
Low = Laag
Low latency display = Laag-latentie-display
LowCurves = Kwaliteit spline- en béziercurves
LowCurves Tip = Alleen gebruikt in sommige games, bestuurt de afronding van curves
Lower resolution for effects (reduces artifacts) = Effectresolutie verlagen (minder objecten)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Debugloggning
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Skjerm
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Lineær
Low = Low
Low latency display = Lav latens skjerm
LowCurves = Spline/Bezier curves quality
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -311,7 +311,6 @@ Enable Logging = Włącz dziennik zdarzeń debugera
Enable shader cache = Włącz pamięć podręczną shaderów
Enter address = Wprowadź adres
Fast = Szybka
Fast-forward mode = Pełna prędkość
FPU = FPU
Fragment = Fragmentu
Frame timing = Czasy klatek
@@ -645,6 +644,7 @@ Device = Urządzenie
Direct3D 11 = Direct3D 11
Disable culling = Wyłącz przycinanie
Disabled = Wył.
Display = Wyświetlacz
Display layout & effects = Edytor położenia obrazu
Display Resolution (HW scaler) = Rozdzielczość ekranu (skaler sprz.)
Driver requires Android API version %1, current is %2 = Sterownik wymaga wersji %1 Android API, aktualna wersja to %2
@@ -675,6 +675,7 @@ Lazy texture caching Tip = Szybsze, ale może powodować problemy z tekstem/napi
Lens flare occlusion = Okluzja flary (halacji) obiektywu
Linear = Liniowe
Low = Niskie
Low latency display = Ekran o niskiej latencji
LowCurves = Detale krzywych sklejanych/Beziera (przyśpieszenie)
LowCurves Tip = Używane tylko przez niektóre gry, kontroluje gładkość krzywych
Lower resolution for effects (reduces artifacts) = Zmniejszenie rozdzielczość efektów (mniej błędów)
+2 -1
View File
@@ -338,7 +338,6 @@ Enable Logging = Ativar o registro do debug
Enable shader cache = Enable shader cache
Enter address = Inserir endereço
Fast = Rápido
Fast-forward mode = Modo de avanço rápido
Fragment = Fragmento
FPU = FPU
Framedump tests = Testes dos dumps dos frames
@@ -650,6 +649,7 @@ CPU texture upscaler (slow) = Tipo de ampliação
Current GPU driver = Driver da GPU Atual
Default GPU driver = Driver padrão da GPU
Disable culling = Desativar o culling
Display = Tela
Display layout & effects = Ajustar a tela & efeitos
Driver requires Android API version %1, current is %2 = O driver requer a versão %1 da API do Android, a atual é %2
Drivers = Drivers
@@ -702,6 +702,7 @@ Lazy texture caching Tip = Mais rápido mas pode causar problemas para carregar
Lens flare occlusion = Oclusão da luz da lente
Linear = Linear
Low = Baixa
Low latency display = Display de baixa latência
LowCurves = Qualidade das curvas spline/bezier
LowCurves Tip = Usado só por alguns jogos, controla a suavidade das curvas
Lower resolution for effects (reduces artifacts) = Resolução menor para efeitos (reduz artefatos)
+2 -1
View File
@@ -336,7 +336,6 @@ Enable Logging = Ativar Log do Debug
Enable shader cache = Enable shader cache
Enter address = Inserir endereço
Fast = Fast
Fast-forward mode = Avanço rápido
FPU = FPU
Fragment = Fragmento
Frame timing = Tempo do frame
@@ -668,6 +667,7 @@ Device = Dispositivo
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Desativado
Display = Ecrã
Display layout & effects = Mostrar o editor dos esquemas
Display Resolution (HW scaler) = Resolução da tela (Dimensionador do hardware)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -703,6 +703,7 @@ Lazy texture caching Tip = Mais rápido, mas pode causar problemas no texto em a
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Baixa
Low latency display = Ecrã de baixa latência
LowCurves = Qualidade das curvas spline/bezier
LowCurves Tip = Usado só em alguns jogos, controla a suavidade das curvas
Lower resolution for effects (reduces artifacts) = Menor Resolução dos efeitos (reduz artefatos)
+2 -1
View File
@@ -313,7 +313,6 @@ Enable Logging = Enable debug logging
Enable shader cache = Enable shader cache
Enter address = Enter address
Fast = Fast
Fast-forward mode = Repede inainte
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -645,6 +644,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Display
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Rezoluție ecran (scalare HW)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -680,6 +680,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linear
Low = Jos
Low latency display = Ecran cu latență scăzută
LowCurves = Calitate curbe Spline/Bezier
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Rezoluții mai mici pt. efecte (reduce artefacte)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Включить отладочное логирование
Enable shader cache = Включить кэш шейдеров
Enter address = Ввести адрес
Fast = Быстро
Fast-forward mode = Перемотка вперёд
FPU = FPU
Fragment = Фрагмент
Frame timing = Время кадра
@@ -644,6 +643,7 @@ Device = Устройство
Direct3D 11 = Direct3D 11
Disable culling = Отключить отбраковку
Disabled = Откл.
Display = Дисплей
Display layout & effects = Расположение экрана и эффектов
Display Resolution (HW scaler) = Разрешение экрана (аппаратное)
Driver requires Android API version %1, current is %2 = Для драйвера требуется Android API версии %1, текущая - %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Быстрее, но может вызвать про
Lens flare occlusion = Окклюзия бликов объектива
Linear = Линейный
Low = Низкое
Low latency display = Дисплей с низкой задержкой
LowCurves = Качество сплайнов и кривых Безье
LowCurves Tip = Используется в некоторых играх, влияет на плавность кривых
Lower resolution for effects (reduces artifacts) = Эффекты низкого качества (меньше артефактов)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Felsökningsloggning
Enable shader cache = Enable shader cache
Enter address = Adress
Fast = Snabb
Fast-forward mode = Snabbspola
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -645,6 +644,7 @@ Device = Enhet
Direct3D 11 = Direct3D 11
Disable culling = Inaktivera klippning
Disabled = Avstängd
Display = Skärm
Display layout & effects = Skärmlayout och effekter
Display Resolution (HW scaler) = Skärmupplösning (HW scaler)
Driver requires Android API version %1, current is %2 = Drivrutinen kräver Android-API-version %1, nuvarande är %2
@@ -680,6 +680,7 @@ Lazy texture caching Tip = Snabbare, men kan orsaka problem med text i vissa spe
Lens flare occlusion = Linsljus-blockering
Linear = Linjär
Low = Låg
Low latency display = Låg latens visning
LowCurves = Spline/Bezier-kvalitet
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lägre upplösning för effekter (bättre kvalitet)
+2 -1
View File
@@ -313,7 +313,6 @@ Enable Logging = Paganahin ang Debug Logging
Enable shader cache = Enable shader cache
Enter address = Ilagay ang address
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Timing ng frame
@@ -645,6 +644,7 @@ Device = Device
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Disabled
Display = Намоиш
Display layout & effects = Display layout & effects
Display Resolution (HW scaler) = Display resolution (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -680,6 +680,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Linyar
Low = Low
Low latency display = Дисплей бо таъхир
LowCurves = Mababang kalidad ng splines at bezier curves (pampa-bilis)
LowCurves Tip = Only used by some games, controls smoothness of curves
Lower resolution for effects (reduces artifacts) = Lower resolution for effects (reduces artifacts)
+2 -1
View File
@@ -317,7 +317,6 @@ Enable driver bug workarounds = เปิดใช้งานการแก้
Enable shader cache = เปิดการใช้งานเฉดเดอร์แคช
Enter address = ใส่ค่าที่อยู่
Fast = เร็ว
Fast-forward mode = โหมดการเร่งความเร็ว
Flush the trace = ล้างการติดตาม
Force-enable HLE = บังคับเปิดใช้งานโมดูล HLE
FPU = FPU
@@ -661,6 +660,7 @@ Device = การ์ดจอ
Direct3D 11 = ไดเร็คท์ 3D 11
Disable culling = ปิดการใช้งาน culling
Disabled = ปิดการใช้งาน
Display = แสดงผล
Display layout & effects = รูปแบบหน้าจอ และเอฟเฟ็คท์
Display Resolution (HW scaler) = ความละเอียดหน้าจอ (ตามฮาร์ดแวร์)
Driver requires Android API version %1, current is %2 = ไดรเวอร์นี้ต้องการแอนดรอยด์ API ที่เวอร์ชั่น %1, แต่มือถือนี้ใช้เวอร์ชั่น %2
@@ -697,6 +697,7 @@ Lazy texture caching Tip = เร็วขึ้น แต่อาจจะท
Lens flare occlusion = การบดบังแสงเลนส์แฟลร์
Linear = แบบเชิงเส้น
Low = ต่ำ
Low latency display = จอแสดงผลการหน่วงเวลาต่ำ
LowCurves = ระดับของเส้นโค้ง Spline/Bezier
LowCurves Tip = ใช้แค่ในบางเกม ช่วยปรับคุณภาพของเส้นโค้งให้มีความเรียบเนียนขึ้น
Lower resolution for effects (reduces artifacts) = ลดความละเอียดของเอฟเฟ็คต์ให้ต่ำลง (ลดขอบภาพสว่าง)
+2 -1
View File
@@ -314,7 +314,6 @@ Enable Logging = Hata Ayıklama Günlüğünü Etkinleştir
Enable shader cache = Gölgelendirici önbelleğini etkinleştir
Enter address = Adres Gir
Fast = Hızlı
Fast-forward mode = Hızlı ileri Sarma Modu
FPU = FPU
Fragment = Parça
Frame timing = Kare Zamanlaması
@@ -646,6 +645,7 @@ Device = Cihaz
Direct3D 11 = Direct3D 11
Disable culling = Ayıklamayı Devre Dışı Bırak
Disabled = Devre Dışı
Display = Ekran
Display layout & effects = Ekran Düzeni ve Efektleri
Display Resolution (HW scaler) = Görüntü Çözünürlüğü (HW ölçek)
Driver requires Android API version %1, current is %2 = Sürücü, Android API'nin %1 sürümünü gerektiriyor, şu anki sürüm %2
@@ -681,6 +681,7 @@ Lazy texture caching Tip = Daha hızlıdır ancak bazı oyunlarda yazılarda sor
Lens flare occlusion = Lens parlaması tıkanıklığı
Linear = Doğrusal
Low = Düşük
Low latency display = Düşük gecikme ekranı
LowCurves = Düşük Eğriler
LowCurves Tip = Sadece bazı oyunlar tarafından kullanılır, eğrilerin pürüzsüzlüğünü kontrol eder
Lower resolution for effects (reduces artifacts) = Efektler İçin Düşük Çözünürlük (sorunları azaltır)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Ввімкнути логування
Enable shader cache = Enable shader cache
Enter address = Введіть адресу
Fast = Швидко
Fast-forward mode = Швидко вперед
FPU = FPU
Fragment = Фрагмент
Frame timing = Хронометраж кадру
@@ -644,6 +643,7 @@ Device = Пристрій
Direct3D 11 = Direct3D 11
Disable culling = Вимкнути вибракування
Disabled = Вимкнено
Display = Відображення
Display layout & effects = Редактор розташування екрану
Display Resolution (HW scaler) = Розширення екрану (HW масштабування)
Driver requires Android API version %1, current is %2 = Драйвер вимагає Андроїд API версію %1, поточна %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Швидше, але може спричинити п
Lens flare occlusion = Оклюзія відблисків об'єктива
Linear = Лінійний
Low = Низька
Low latency display = Дисплей з низькою затримкою
LowCurves = Якість сплайну
LowCurves Tip = Використовується лише в деяких іграх, контролюючи плавність кривих
Lower resolution for effects (reduces artifacts) = Ефекти низької якості (зменшує артефакти)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = Cho phép ghi nhật ký debug
Enable shader cache = Enable shader cache
Enter address = Nhập địa chỉ
Fast = Fast
Fast-forward mode = Fast-forward mode
FPU = FPU
Fragment = Fragment
Frame timing = Frame timing
@@ -644,6 +643,7 @@ Device = Thiết bị
Direct3D 11 = Direct3D 11
Disable culling = Disable culling
Disabled = Vô hiệu hóa
Display = Hiển thị
Display layout & effects = Chỉnh bố trí hiển thị
Display Resolution (HW scaler) = Độ phân giải màn hình (HW scaler)
Driver requires Android API version %1, current is %2 = Driver requires Android API version %1, current is %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = Faster, but can cause text problems in a few games
Lens flare occlusion = Lens flare occlusion
Linear = Tuyến tính
Low = Thấp
Low latency display = Màn hình độ trễ thấp
LowCurves = Đường cong Spline/bezier chất lượng thấp (tăng tốc)
LowCurves Tip = Chỉ được sử dụng bởi một số trò chơi, kiểm soát độ mượt của đường cong.
Lower resolution for effects (reduces artifacts) = Độ phân giải thấp cho các hiệu ứng (làm giảm vật thể)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = 启用调试日志
Enable shader cache = 启用着色器缓存
Enter address = 输入地址
Fast = 快速
Fast-forward mode = 加速键的工作模式
FPU = FPU
Fragment = 片段着色器
Frame timing = 帧时间统计信息
@@ -644,6 +643,7 @@ Device = 设备
Direct3D 11 = Direct3D 11
Disable culling = 关闭遮挡剔除 (修复模型错误)
Disabled = 禁用
Display = 显示
Display layout & effects = 屏幕布局和滤镜
Display Resolution (HW scaler) = 屏幕分辨率
Driver requires Android API version %1, current is %2 = 驱动需要Android API版本 %1, 目前系统版本为%2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = 速度更快,并使部分游戏文字渲染出错
Lens flare occlusion = 镜头眩光遮挡
Linear = 线性过滤
Low = 低质量
Low latency display = 低延迟显示
LowCurves = 贝塞尔曲线质量 (提速)
LowCurves Tip = 调整曲线的绘制质量,只有少数游戏适用此设置
Lower resolution for effects (reduces artifacts) = 降低特效分辨率 (修复光晕效果)
+2 -1
View File
@@ -312,7 +312,6 @@ Enable Logging = 啟用偵錯記錄
Enable shader cache = 啟用著色器快取
Enter address = 輸入位址
Fast = 快速
Fast-forward mode = 快轉模式
FPU = FPU
Fragment = 片段
Frame timing = 影格計時
@@ -644,6 +643,7 @@ Device = 裝置
Direct3D 11 = Direct3D 11
Disable culling = 停用揀選
Disabled = 已停用
Display = 顯示
Display layout & effects = 顯示版面配置與效果
Display Resolution (HW scaler) = 顯示解析度 (硬體縮放)
Driver requires Android API version %1, current is %2 = 驅動程式需要 Android API 版本為 %1,目前為 %2
@@ -679,6 +679,7 @@ Lazy texture caching Tip = 更快,但在某些遊戲中可能會造成文字
Lens flare occlusion = 鏡頭眩光遮蔽
Linear = 線性
Low = 低
Low latency display = 低延遲顯示
LowCurves = 曲線/貝茲曲線品質
LowCurves Tip = 僅供少數遊戲使用,控制曲線平滑度
Lower resolution for effects (reduces artifacts) = 降低效果解析度 (降低失真)
-1
View File
@@ -536,7 +536,6 @@ int main(int argc, const char* argv[])
g_Config.iButtonPreference = PSP_SYSTEMPARAM_BUTTON_CROSS;
g_Config.iLockParentalLevel = 9;
g_Config.iInternalResolution = 1;
g_Config.iFastForwardMode = (int)FastForwardMode::CONTINUOUS;
g_Config.bEnableLogging = (fullLog || outputDebugStringLog);
g_Config.bSoftwareSkinning = true;
g_Config.bVertexDecoderJit = true;
+10 -8
View File
@@ -77,8 +77,16 @@ bool IOSVulkanContext::InitFromRenderThread(CAMetalLayer *layer, int desiredBack
return false;
}
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(g_Vulkan, useMultiThreading);
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
if (!g_Vulkan->InitSwapchain(presentMode)) {
delete draw_;
ERROR_LOG(Log::G3D, "InitSwapchain failed");
g_Vulkan->DestroySwapchain();
g_Vulkan->DestroySurface();
@@ -87,12 +95,6 @@ bool IOSVulkanContext::InitFromRenderThread(CAMetalLayer *layer, int desiredBack
return false;
}
bool useMultiThreading = g_Config.bRenderMultiThreading;
if (g_Config.iInflightFrames == 1) {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(g_Vulkan, useMultiThreading);
SetGPUBackend(GPUBackend::VULKAN);
bool shaderSuccess = draw_->CreatePresets(); // Doesn't fail, we ship the compiler.
_assert_msg_(shaderSuccess, "Failed to compile preset shaders");
@@ -131,7 +133,7 @@ void IOSVulkanContext::Resize() {
g_Vulkan->DestroySwapchain();
g_Vulkan->DestroySurface();
g_Vulkan->ReinitSurface();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan();
VkPresentModeKHR presentMode = ConfigPresentModeToVulkan(draw_);
g_Vulkan->InitSwapchain(presentMode);
draw_->HandleEvent(Draw::Event::GOT_BACKBUFFER, g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
INFO_LOG(Log::G3D, "IOSVulkanContext::Resize end (final size: %dx%d)", g_Vulkan->GetBackbufferWidth(), g_Vulkan->GetBackbufferHeight());
+1
View File
@@ -139,6 +139,7 @@ void LibretroVulkanContext::CreateDrawContext() {
useMultiThreading = false;
}
draw_ = Draw::T3DCreateVulkanContext(vk, useMultiThreading);
((VulkanRenderManager*)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER))->SetInflightFrames(g_Config.iInflightFrames);
SetGPUBackend(GPUBackend::VULKAN);
}