Merge pull request #21584 from hrydgard/misc-fixes

Change the default of "Low latency display", revert a bad change
This commit is contained in:
Henrik Rydgård authored and GitHub committed 2026-04-23 13:31:27 +02:00
commit 821c005de7
13 files changed
+105 -20

No files matched your search

+1 -1
View File
@@ -131,7 +131,7 @@ bool JsonGet::getBool(const char *child_name) const {
return get(child_name)->value.getTag() == JSON_TRUE;
}
bool JsonGet::getBool(const char *child_name, bool default_value) const {
bool JsonGet::getBoolOr(const char *child_name, bool default_value) const {
const JsonNode *val = get(child_name);
if (val) {
JsonTag tag = val->value.getTag();
+1 -1
View File
@@ -30,7 +30,7 @@ struct JsonGet {
int getInt(const char *child_name) const;
int getInt(const char *child_name, int default_value) const;
bool getBool(const char *child_name) const;
bool getBool(const char *child_name, bool default_value) const;
bool getBoolOr(const char *child_name, bool default_value) const;
bool hasChild(const char *child_name, JsonTag child_type) const {
return get(child_name, child_type) != nullptr;
+1 -1
View File
@@ -123,7 +123,7 @@ bool GhidraClient::FetchTypes() {
type.pathName = entry.getStringOr("pathName", "");
type.length = entry.getInt("length", 0);
type.alignedLength = entry.getInt("alignedLength", 0);
type.zeroLength = entry.getBool("zeroLength", false);
type.zeroLength = entry.getBoolOr("zeroLength", false);
type.description = entry.getStringOr("description", "");
type.kind = ResolveTypeKind(entry.getStringOr("kind", ""));
+1 -1
View File
@@ -769,7 +769,7 @@ static const ConfigSetting graphicsSettings[] = {
ConfigSetting("TexDeposterize", SETTING(g_Config, bTexDeposterize), false, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("TexHardwareScaling", SETTING(g_Config, bTexHardwareScaling), false, CfgFlag::PER_GAME | CfgFlag::REPORT),
ConfigSetting("VerticalSync", SETTING(g_Config, bVSync), true, CfgFlag::PER_GAME),
ConfigSetting("LowLatencyPresent", SETTING(g_Config, bLowLatencyPresent), true, CfgFlag::PER_GAME),
ConfigSetting("LowLatencyPresent", SETTING(g_Config, bLowLatencyPresent), false, CfgFlag::PER_GAME),
ConfigSetting("BloomHack", SETTING(g_Config, iBloomHack), 0, CfgFlag::PER_GAME | CfgFlag::REPORT),
// Not really a graphics setting...
+2 -2
View File
@@ -228,7 +228,7 @@ bool LoadDNSForGameID(std::string_view gameID, std::string_view jsonStr, InfraDN
dns->revivalTeamURL = revived.getStringOr("url", "");
}
}
dns->connectAdHocForGrouping = def.getBool("connect_adhoc_for_grouping", false);
dns->connectAdHocForGrouping = def.getBoolOr("connect_adhoc_for_grouping", false);
}
const JsonNode *games = root.getArray("games");
@@ -290,7 +290,7 @@ bool LoadDNSForGameID(std::string_view gameID, std::string_view jsonStr, InfraDN
dns->gameName = game.getStringOr("name", "");
dns->dns = game.getStringOr("dns", dns->dns.c_str());
dns->dyn_dns = game.getStringOr("dyn_dns", "");
dns->connectAdHocForGrouping = game.getBool("connect_adhoc_for_grouping", dns->connectAdHocForGrouping);
dns->connectAdHocForGrouping = game.getBoolOr("connect_adhoc_for_grouping", dns->connectAdHocForGrouping);
if (game.hasChild("domains", JSON_OBJECT)) {
const JsonGet domains = game.getDict("domains");
for (const auto &iter : domains.value_) {
+1
View File
@@ -142,6 +142,7 @@ static bool ParseServerListEntriesJSON(std::string_view json) {
for (const JsonNode *iter : servers->value) {
JsonGet server = iter->value;
AdhocServerListEntry entry;
entry.hidden = server.getBoolOr("hidden", false);
entry.name = server.getStringOr("name", "");
entry.discord = server.getStringOr("discord", "");
entry.host = server.getStringOr("host", "");
+1
View File
@@ -114,6 +114,7 @@ struct AdhocServerListEntry {
std::string dataJsonUrl;
std::string statusXmlUrl;
std::string statusWebUrl;
bool hidden = false;
AdhocDataMode mode = AdhocDataMode::P2P;
};
+1 -1
View File
@@ -479,7 +479,7 @@ bool TextureCacheVulkan::RunMultipassCompute(VulkanContext *vulkan, VkCommandBuf
stage.useFinalOutputSize ? dstWidth : srcWidth * stage.dstWidthScale,
stage.useFinalOutputSize ? dstHeight : srcHeight * stage.dstHeightScale,
};
VkDescriptorSet stageSet = computeShaderManager_.GetDescriptorSet(outputView, inputBuffer, inputOffset, inputRange);
VkDescriptorSet stageSet = computeShaderManager_.GetDescriptorSet(outputView, inputBuffer, inputOffset, inputRange, VK_NULL_HANDLE, 0, 0, inputImage);
vkCmdBindPipeline(cmdInit, VK_PIPELINE_BIND_POINT_COMPUTE, computeShaderManager_.GetPipeline(multipassCS_[stage.shaderIndex]));
vkCmdBindDescriptorSets(cmdInit, VK_PIPELINE_BIND_POINT_COMPUTE, computeShaderManager_.GetPipelineLayout(), 0, 1, &stageSet, 0, nullptr);
vkCmdPushConstants(cmdInit, computeShaderManager_.GetPipelineLayout(), VK_SHADER_STAGE_COMPUTE_BIT, 0, sizeof(params), &params);
+44 -10
View File
@@ -39,11 +39,6 @@ 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 };
static const BindingType bindingTypes[] = {
BindingType::STORAGE_IMAGE_COMPUTE,
BindingType::STORAGE_BUFFER_COMPUTE,
};
VkPresentModeKHR ConfigPresentModeToVulkan(Draw::DrawContext *draw) {
g_frameTiming.ComputePresentMode(draw, false);
Draw::PresentMode presentMode = g_frameTiming.PresentMode();
@@ -112,7 +107,14 @@ void VulkanComputeShaderManager::InitDeviceObjects(Draw::DrawContext *draw) {
VkResult res = vkCreatePipelineCache(vulkan_->GetDevice(), &pc, nullptr, &pipelineCache_);
_assert_(VK_SUCCESS == res);
VkDescriptorSetLayoutBinding bindings[ARRAY_SIZE(bindingTypes)] = {};
static const BindingType bindingTypes[4] = {
BindingType::STORAGE_IMAGE_COMPUTE,
BindingType::STORAGE_BUFFER_COMPUTE,
BindingType::STORAGE_BUFFER_COMPUTE,
BindingType::STORAGE_IMAGE_COMPUTE,
};
VkDescriptorSetLayoutBinding bindings[4] = {};
bindings[0].descriptorCount = 1;
bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
bindings[0].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
@@ -121,6 +123,14 @@ void VulkanComputeShaderManager::InitDeviceObjects(Draw::DrawContext *draw) {
bindings[1].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
bindings[1].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
bindings[1].binding = 1;
bindings[2].descriptorCount = 1;
bindings[2].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
bindings[2].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
bindings[2].binding = 2;
bindings[3].descriptorCount = 1;
bindings[3].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
bindings[3].stageFlags = VK_SHADER_STAGE_COMPUTE_BIT;
bindings[3].binding = 3;
VkDevice device = vulkan_->GetDevice();
@@ -171,7 +181,7 @@ void VulkanComputeShaderManager::DestroyDeviceObjects() {
}
}
VkDescriptorSet VulkanComputeShaderManager::GetDescriptorSet(VkImageView image, VkBuffer buffer, VkDeviceSize bufferOffset, VkDeviceSize bufferRange) {
VkDescriptorSet VulkanComputeShaderManager::GetDescriptorSet(VkImageView image, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize range, VkBuffer buffer2, VkDeviceSize offset2, VkDeviceSize range2, VkImageView image2) {
int curFrame = vulkan_->GetCurFrame();
FrameData &frameData = frameData_[curFrame];
frameData.descPoolUsed = true;
@@ -179,7 +189,7 @@ VkDescriptorSet VulkanComputeShaderManager::GetDescriptorSet(VkImageView image,
frameData.descPool.Allocate(&desc, 1, &descriptorSetLayout_);
_assert_(desc != VK_NULL_HANDLE);
VkWriteDescriptorSet writes[2]{};
VkWriteDescriptorSet writes[4]{};
int n = 0;
VkDescriptorImageInfo imageInfo[2] = {};
VkDescriptorBufferInfo bufferInfo[2] = {};
@@ -197,8 +207,8 @@ VkDescriptorSet VulkanComputeShaderManager::GetDescriptorSet(VkImageView image,
}
if (buffer) {
bufferInfo[0].buffer = buffer;
bufferInfo[0].offset = bufferOffset;
bufferInfo[0].range = bufferRange;
bufferInfo[0].offset = offset;
bufferInfo[0].range = range;
writes[n].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writes[n].dstBinding = 1;
writes[n].pBufferInfo = &bufferInfo[0];
@@ -207,6 +217,30 @@ VkDescriptorSet VulkanComputeShaderManager::GetDescriptorSet(VkImageView image,
writes[n].dstSet = desc;
n++;
}
if (buffer2) {
bufferInfo[1].buffer = buffer2;
bufferInfo[1].offset = offset2;
bufferInfo[1].range = range2;
writes[n].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writes[n].dstBinding = 2;
writes[n].pBufferInfo = &bufferInfo[1];
writes[n].descriptorCount = 1;
writes[n].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
writes[n].dstSet = desc;
n++;
}
if (image2) {
imageInfo[1].imageLayout = VK_IMAGE_LAYOUT_GENERAL;
imageInfo[1].imageView = image2;
imageInfo[1].sampler = VK_NULL_HANDLE;
writes[n].sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writes[n].dstBinding = 3;
writes[n].pImageInfo = &imageInfo[1];
writes[n].descriptorCount = 1;
writes[n].descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
writes[n].dstSet = desc;
n++;
}
vkUpdateDescriptorSets(vulkan_->GetDevice(), n, writes, 0, nullptr);
return desc;
}
+1 -1
View File
@@ -55,7 +55,7 @@ public:
}
// Note: This doesn't cache. The descriptor is for immediate use only.
VkDescriptorSet GetDescriptorSet(VkImageView image, VkBuffer buffer, VkDeviceSize bufferOffset, VkDeviceSize bufferRange);
VkDescriptorSet GetDescriptorSet(VkImageView image, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize range, VkBuffer buffer2 = VK_NULL_HANDLE, VkDeviceSize offset2 = 0, VkDeviceSize range2 = 0, VkImageView image2 = VK_NULL_HANDLE);
// This of course caches though.
VkPipeline GetPipeline(VkShaderModule cs);
+2
View File
@@ -726,6 +726,8 @@ void AdhocServerScreen::CreatePopupContents(UI::ViewGroup *parent) {
CollapsibleSection *publicSection = innerView->Add(new CollapsibleSection(n->T("Public server list"), new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT)));
for (const auto &entry : entries) {
if (entry.hidden)
continue;
AddButtonFromEntry(publicSection, entry, false);
}
+33 -1
View File
@@ -1177,10 +1177,34 @@
<None Include="..\android\jni\Application.mk" />
<None Include="..\android\jni\Locals.mk" />
<None Include="..\appveyor.yml" />
<None Include="..\assets\adhoc-servers.json">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</None>
<None Include="..\assets\compat.ini" />
<None Include="..\assets\compatvr.ini" />
<None Include="..\assets\infra-dns.json">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</None>
<None Include="..\assets\knownfuncs.ini" />
<None Include="..\assets\langregion.ini" />
<None Include="..\assets\redump.csv">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</None>
<None Include="..\atlasscript.txt" />
<None Include="..\b.sh" />
<None Include="..\build.gradle" />
@@ -1411,6 +1435,14 @@
</ItemGroup>
<ItemGroup>
<Text Include="..\asciifont_atlasscript.txt" />
<Text Include="..\assets\gamecontrollerdb.txt">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</Text>
<Text Include="..\font_atlasscript.txt" />
<Text Include="..\libretro\CMakeLists.txt" />
<Text Include="..\libretro\README_WINDOWS.txt" />
@@ -1426,4 +1458,4 @@
<UserProperties RESOURCE_FILE="DaSh.rc" />
</VisualStudio>
</ProjectExtensions>
</Project>
</Project>
+16 -1
View File
@@ -68,6 +68,9 @@
<Filter Include="Windows\Input\Hid">
<UniqueIdentifier>{55d277d0-1afa-464d-9bde-672334ad73fe}</UniqueIdentifier>
</Filter>
<Filter Include="assets">
<UniqueIdentifier>{a5b85611-e50f-4179-814d-426816c1e04d}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Debugger\CtrlDisAsmView.cpp">
@@ -830,6 +833,15 @@
<None Include="..\scripts\websocket-test.py">
<Filter>Other Platforms</Filter>
</None>
<None Include="..\assets\adhoc-servers.json">
<Filter>assets</Filter>
</None>
<None Include="..\assets\infra-dns.json">
<Filter>assets</Filter>
</None>
<None Include="..\assets\redump.csv">
<Filter>assets</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="ppsspp.rc">
@@ -864,5 +876,8 @@
<Text Include="..\SDL\README.TXT">
<Filter>Other Platforms\SDL</Filter>
</Text>
<Text Include="..\assets\gamecontrollerdb.txt">
<Filter>assets</Filter>
</Text>
</ItemGroup>
</Project>
</Project>