| Age | Commit message (Collapse) | Author |
|
Using statements already make these unnecessary.
|
|
Same behavior, less repetition.
|
|
Places data structures where they'll eventually be moved to to avoid
needing to even move them in the first place.
|
|
Avoids unnecessary atomic increments and decrements.
|
|
Allows some implementations to avoid completely zeroing out the internal
buffer of the optional, and instead only set the validity byte within
the structure.
This also makes it consistent how we return empty optionals.
|
|
Emulated mailbox presentation was causing performance issues on
Nvidia's OpenGL driver. Remove it.
|
|
This is a hack to destroy all HostCounter instances before the base
class destructor is called. The query cache should be redesigned to have
a proper ownership model instead of using shared pointers.
For now, destroy the host counter hierarchy from the derived class
destructor.
|
|
This reworks how host<->device synchronization works on the Vulkan
backend. Instead of "protecting" resources with a fence and signalling
these as free when the fence is known to be signalled by the host GPU,
use timeline semaphores.
Vulkan timeline semaphores allow use to work on a subset of D3D12
fences. As far as we are concerned, timeline semaphores are a value set
by the host or the device that can be waited by either of them.
Taking advantange of this, we can have a monolithically increasing
atomic value for each submission to the graphics queue. Instead of
protecting resources with a fence, we simply store the current logical
tick (the atomic value stored in CPU memory). When we want to know if a
resource is free, it can be compared to the current GPU tick.
This greatly simplifies resource management code and the free status of
resources should have less false negatives.
To workaround bugs in validation layers, when these are attached there's
a thread waiting for timeline semaphores.
|
|
Same behavior, less repetition. We can also ensure all members of Config
are initialized.
|
|
decoder/texture: Eliminate narrowing conversion in GetTldCode()
|
|
Fortunately this didn't result in any issues, given the block that code
was falling through to would immediately break.
|
|
The assignment was previously truncating a u64 value to a bool.
|
|
This forces us to fix all -Wswitch warnings in video_core.
|
|
Now that the GPU is initialized when video backends are initialized,
it's no longer needed to query components once the game is running: it
can be done when yuzu is booting.
This allows us to pass components between constructors and in the
process remove all Core::System references in the video backend.
|
|
externals: Update Xbyak to 5.96
|
|
async_shaders: Mark getters as const member functions
|
|
'driver_id' can only be known on Vulkan 1.1 after creating a logical
device. Move the driver id check to disable
VK_EXT_extended_dynamic_state after the logical device is successfully
initialized.
The Vulkan device will have the extension enabled but it will not be
used.
|
|
I made a request on the Xbyak issue tracker to allow some constructors
to be constexpr in order to avoid static constructors from needing to
execute for some of our register constants.
This request was implemented, so this updates Xbyak so that we can make
use of it.
|
|
Vertex binding's <stride> is bugged on AMD's proprietary drivers when
using VK_EXT_extended_dynamic_state. Blacklist it for now while we
investigate how to report this issue to AMD.
|
|
shader/memory: Amend UNIMPLEMENTED_IF_MSG without a message
|
|
video_core/host_shaders: Add CMake integration for string shaders
|
|
vk_state_tracker: Fix primitive topology
|
|
|
|
This doesn't modify member state, so it can be marked as const.
|
|
memory_manager: Mark IsGranularRange() as a const member function
|
|
video_core: Initialize renderer with a GPU
|
|
While we're at it, we can also mark them as nodiscard.
|
|
This doesn't modify internal member state, so it can be marked as const.
|
|
LabelGLObject takes a string_view, so we don't need to make copies of
the std::string.
|
|
Avoids pulling in unnecessary things that can cause rebuilds when they
aren't required.
|
|
Add the necessary CMake code to copy the contents in a string source
shader (GLSL or GLASM) to a header file then consumed by video_core
files.
This allows editting GLSL in its own files without having to maintain
them in source files.
For now, only OpenGL presentation shaders are moved, but we can add
GLASM presentation shaders and static SPIR-V generation through
glslangValidator in the future.
|
|
This allows us passing any type of string and hinting the length of the
string to the OpenGL driver.
|
|
Add an extra step in GPU initialization to be able to initialize render
backends with a valid GPU instance.
|
|
gl_shader_disk_cache: Make use of std::nullopt where applicable
|
|
macro-interpreter: Resolve -Wself-assign-field warning
|
|
State track the current primitive topology with a regular comparison
instead of using dirty flags.
This fixes a bug in dirty flags for this particular state and it also
avoids unnecessary state changes as this property is stored in a
frequently changed bit field.
|
|
Enable the required capabilities to use Vulkan 1.0 without validation
errors and disable those that are not compatible with it.
|
|
This commit doesn't make yuzu compatible with Vulkan 1.0 yet, it only
creates an 1.0 instance.
|
|
common/telemetry: Migrate namespace into the Common namespace
|
|
vulkan/wrapper: Avoid unnecessary copy in EnumerateInstanceExtensionProperties()
|
|
Migrates the Telemetry namespace into the Common namespace to make the
code consistent with the rest of our common code.
|
|
common/fileutil: Convert namespace to Common::FS
|
|
vulkan_renderer: Async shader/graphics pipeline compilation
|
|
async_shaders: Resolve -Wpessimizing-move warning
|
|
Addressing feedback from Rodrigo
|
|
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
|
|
|
|
|
|
|
|
|