early-access version 3740
This commit is contained in:
parent
a7399033f3
commit
6e882c92b2
@ -1,7 +1,7 @@
|
|||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 3739.
|
This is the source code for early-access 3740.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
@ -40,8 +40,21 @@ public:
|
|||||||
~ScratchBuffer() = default;
|
~ScratchBuffer() = default;
|
||||||
ScratchBuffer(const ScratchBuffer&) = delete;
|
ScratchBuffer(const ScratchBuffer&) = delete;
|
||||||
ScratchBuffer& operator=(const ScratchBuffer&) = delete;
|
ScratchBuffer& operator=(const ScratchBuffer&) = delete;
|
||||||
ScratchBuffer(ScratchBuffer&&) = default;
|
|
||||||
ScratchBuffer& operator=(ScratchBuffer&&) = default;
|
ScratchBuffer(ScratchBuffer&& other) noexcept {
|
||||||
|
swap(other);
|
||||||
|
other.last_requested_size = 0;
|
||||||
|
other.buffer_capacity = 0;
|
||||||
|
other.buffer.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
ScratchBuffer& operator=(ScratchBuffer&& other) noexcept {
|
||||||
|
swap(other);
|
||||||
|
other.last_requested_size = 0;
|
||||||
|
other.buffer_capacity = 0;
|
||||||
|
other.buffer.reset();
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
/// This will only grow the buffer's capacity if size is greater than the current capacity.
|
/// This will only grow the buffer's capacity if size is greater than the current capacity.
|
||||||
/// The previously held data will remain intact.
|
/// The previously held data will remain intact.
|
||||||
|
@ -500,7 +500,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
}
|
}
|
||||||
if (extensions.extended_dynamic_state2 && is_qualcomm) {
|
if (extensions.extended_dynamic_state2 && is_qualcomm) {
|
||||||
const u32 version = (properties.properties.driverVersion << 3) >> 3;
|
const u32 version = (properties.properties.driverVersion << 3) >> 3;
|
||||||
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
|
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) &&
|
||||||
|
version < VK_MAKE_API_VERSION(0, 0, 680, 0)) {
|
||||||
// Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2.
|
// Qualcomm Adreno 7xx drivers do not properly support extended_dynamic_state2.
|
||||||
LOG_WARNING(Render_Vulkan,
|
LOG_WARNING(Render_Vulkan,
|
||||||
"Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2");
|
"Qualcomm Adreno 7xx drivers have broken VK_EXT_extended_dynamic_state2");
|
||||||
@ -540,7 +541,8 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
|
|||||||
}
|
}
|
||||||
if (extensions.vertex_input_dynamic_state && is_qualcomm) {
|
if (extensions.vertex_input_dynamic_state && is_qualcomm) {
|
||||||
const u32 version = (properties.properties.driverVersion << 3) >> 3;
|
const u32 version = (properties.properties.driverVersion << 3) >> 3;
|
||||||
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0)) {
|
if (version >= VK_MAKE_API_VERSION(0, 0, 676, 0) &&
|
||||||
|
version < VK_MAKE_API_VERSION(0, 0, 680, 0)) {
|
||||||
// Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
|
// Qualcomm Adreno 7xx drivers do not properly support vertex_input_dynamic_state.
|
||||||
LOG_WARNING(
|
LOG_WARNING(
|
||||||
Render_Vulkan,
|
Render_Vulkan,
|
||||||
@ -798,6 +800,17 @@ bool Device::ShouldBoostClocks() const {
|
|||||||
return validated_driver && !is_steam_deck && !is_debugging;
|
return validated_driver && !is_steam_deck && !is_debugging;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Device::HasTimelineSemaphore() const {
|
||||||
|
if (GetDriverID() == VK_DRIVER_ID_QUALCOMM_PROPRIETARY ||
|
||||||
|
GetDriverID() == VK_DRIVER_ID_MESA_TURNIP) {
|
||||||
|
// Timeline semaphores do not work properly on all Qualcomm drivers.
|
||||||
|
// They generally work properly with Turnip drivers, but are problematic on some devices
|
||||||
|
// (e.g. ZTE handsets with Snapdragon 870).
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return features.timeline_semaphore.timelineSemaphore;
|
||||||
|
}
|
||||||
|
|
||||||
bool Device::GetSuitability(bool requires_swapchain) {
|
bool Device::GetSuitability(bool requires_swapchain) {
|
||||||
// Assume we will be suitable.
|
// Assume we will be suitable.
|
||||||
bool suitable = true;
|
bool suitable = true;
|
||||||
|
@ -528,13 +528,7 @@ public:
|
|||||||
return extensions.shader_atomic_int64;
|
return extensions.shader_atomic_int64;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HasTimelineSemaphore() const {
|
bool HasTimelineSemaphore() const;
|
||||||
if (GetDriverID() == VK_DRIVER_ID_QUALCOMM_PROPRIETARY) {
|
|
||||||
// Timeline semaphores do not work properly on all Qualcomm drivers.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return features.timeline_semaphore.timelineSemaphore;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns the minimum supported version of SPIR-V.
|
/// Returns the minimum supported version of SPIR-V.
|
||||||
u32 SupportedSpirvVersion() const {
|
u32 SupportedSpirvVersion() const {
|
||||||
|
Loading…
Reference in New Issue
Block a user