| Age | Commit message (Collapse) | Author |
|
decoder/image: Fix incorrect G24R8 component sizes in GetComponentSize()
|
|
Same behavior, but constructs the threads in place instead of moving
them.
|
|
This is equivalent to moving all the contents and then clearing the
vector. This avoids a redundant allocation.
|
|
|
|
Same behavior, but avoids redundant copies.
While we're at it, we can simplify the pushing of the parameters into
the pending queue.
|
|
shader: Partially implement texture cube array shadow
|
|
async_shaders: Increase Async worker thread count for >8 thread cpus
|
|
Adds 1 async worker thread for every 2 available threads above 8
|
|
This implements texture cube arrays with shadow comparisons but doesn't
fix the asserts related to it.
Fixes out of bounds reads on swizzle constructors and makes them use
bounds checked ::at instead of the unsafe operator[].
|
|
Trivially add the encoding for this.
|
|
TMML takes an array argument that has no known meaning, this one appears
as the first component in gpr8 followed by s, t and r. Skip this
component when arrays are being used. Also implement CUBE texture types.
- Used by Pikmin 3: Deluxe Demo.
|
|
shader/registry: Make use of designated initializers where applicable
|
|
arithmetic_integer_immediate: Make use of std::move where applicable
|
|
Same behavior, minus any redundant atomic reference count increments and
decrements.
|
|
renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
async_shaders: Mark getters as const member functions
|
|
shader/memory: Amend UNIMPLEMENTED_IF_MSG without a message
|
|
While we're at it, we can also mark them as nodiscard.
|
|
vulkan_renderer: Async shader/graphics pipeline compilation
|
|
Addressing feedback from Rodrigo
|
|
Co-authored-by: Morph <39850852+Morph1984@users.noreply.github.com>
|
|
|
|
|
|
|
|
|
|
|
|
We need to provide a message for this variant of the macro, so we can
simply log out the type being used.
|
|
Prevents pessimization of the move constructor (which thankfully didn't
actually happen in practice here, given std::thread isn't copyable).
|
|
|
|
video_core: Allow copy elision to take place where applicable
|
|
decode/other: Implement S2R.LaneId
|
|
Removes const from some variables that are returned from functions, as
this allows the move assignment/constructors to execute for them.
|
|
video_core: Fix, add and rename pixel formats
|
|
|
|
|
|
|
|
|
|
This maps to host's thread id.
- Fixes graphical issues on Paper Mario.
|