| Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
'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.
|
|
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.
|
|
vk_state_tracker: Fix primitive topology
|
|
video_core: Initialize renderer with a GPU
|
|
Add an extra step in GPU initialization to be able to initialize render
backends with a valid GPU instance.
|
|
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
|
|
Addressing feedback from Rodrigo
|
|
|
|
|
|
|
|
|
|
|
|
Migrates a remaining common file over to the Common namespace, making it
consistent with the rest of common files.
This also allows for high-traffic FS related code to alias the
filesystem function namespace as
namespace FS = Common::FS;
for more concise typing.
|
|
Given this is implicitly creating a std::optional, we can move the
vector into it.
|
|
|
|
|
|
|
|
vk_rasterizer: Remove unused variable in Clear()
|
|
video_core: Remove unused variables
|
|
renderer_{opengl,vulkan}: Clamp shared memory to host's limit
|
|
Silences several compiler warnings about unused variables.
|
|
The relevant values are already assigned further down in the lambda, so
this can be removed entirely.
|
|
video_core: Fix, add and rename pixel formats
|
|
vulkan: Make use of designated initializers where applicable
|
|
Designated initializers on old MSVC versions fail to build when they
take the address of a constant.
|
|
vk_state_tracker: Fix dirty flags for stencil_enable on VK_EXT_extended_dynamic_state
|
|
|
|
|
|
Discovered while converting relevant parts of the codebase over to
designated initializers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|