| Age | Commit message (Collapse) | Author |
|
nvdec: Queue and display all decoded frames, cleanup decoders
|
|
vk_shader_decompiler: Implement force early fragment tests
|
|
|
|
Force early fragment tests when the 3D method is enabled.
The established pipeline cache takes care of recompiling if needed.
This is implemented only on Vulkan to avoid invalidating the shader
cache on OpenGL.
|
|
Workaround for ZLA, which seems to decode and queue twice as many frames as it displays.
|
|
nvdrv, video_core: Don't index out of bounds when given invalid syncpoint ID
|
|
remove some redundant moves, make deleter match naming guidelines.
Co-Authored-By: LC <712067+lioncash@users.noreply.github.com>
|
|
Overhaul EmuWindow::PollEvents to fix yuzu-cmd calling SDL_PollEvents off main thread
|
|
|
|
|
|
Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
|
|
|
|
Used by various textures in many titles, e.g. SSBU menu.
|
|
- Use .at() instead of raw indexing when dealing with untrusted indices.
- For the special case of WaitFence with syncpoint id UINT32_MAX,
instead of crashing, log an error and ignore. This is what I get when
running Super Mario Maker 2.
|
|
decoder/image: Fix incorrect G24R8 component sizes in GetComponentSize()
|
|
main thread
EmuWindow::PollEvents was called from the GPU thread (or the CPU thread
in sync-GPU mode) when swapping buffers. It had three implementations:
- In GRenderWindow, it didn't actually poll events, just set a flag and
emit a signal to indicate that a frame was displayed.
- In EmuWindow_SDL2_Hide, it did nothing.
- In EmuWindow_SDL2, it did call SDL_PollEvents, but this is wrong
because SDL_PollEvents is supposed to be called on the thread that set
up video - in this case, the main thread, which was sleeping in a
busyloop (regardless of whether sync-GPU was enabled). On macOS this
causes a crash.
To fix this:
- Rename EmuWindow::PollEvents to OnFrameDisplayed, and give it a
default implementation that does nothing.
- In EmuWindow_SDL2, do not override OnFrameDisplayed, but instead have
the main thread call SDL_WaitEvent in a loop.
|
|
gl_rasterizer: Make floating-point literal a float
|
|
async_shaders: std::move data within QueueVulkanShader()
|
|
gl_rasterizer: Remove warning of untested alpha test
|
|
Alpha test has been proven to only affect the first render target.
|
|
shader_bytecode: Eliminate variable shadowing
|
|
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.
|
|
Gets rid of an unnecessary expansion from float to double.
|
|
Ensures that all queried values are made use of.
|
|
|
|
maxwell_3d: Move code to separate functions and insert instead of push_back
|
|
|
|
|
|
|
|
This reduces the overhead of bounds checking on each element.
It won't reduce the cost of allocation because usually this vector's
capacity is usually large enough to hold whatever we push to it.
|
|
Deduplicate some code and put it in separate functions so it's easier to
understand and profile.
|
|
- This seems to cause softlocks in Breath of the Wild.
|
|
General: Fix clang build
|
|
shader: Partially implement texture cube array shadow
|
|
Allows building on clang to work again
|
|
General: Resolve a few missing initializer warnings
|
|
Improvements to GPU synchronization & various refactoring
|
|
nvdec: Make use of [[nodiscard]] where applicable
|
|
Prevents bugs from occurring where the results of a function are
accidentally discarded
|
|
async_shaders: Increase Async worker thread count for >8 thread cpus
|
|
- Log corrupted command lists, rather than crash.
|
|
|
|
|
|
shader/arithmetic: Implement FCMP immediate + register variant
|
|
It's deprecated in the language to autogenerate these if the destructor
for a type is specified, so we can explicitly specify how we want these
to be generated.
|
|
Prevents values from mistakenly being discarded in cases where it's a
bug to do so.
|
|
The API of VP9 exposes a WasFrameHidden() function which accesses this
member. Given the constructor previously didn't initialize this member,
it's a potential vector for an uninitialized read.
Instead, we can initialize this to a deterministic value to prevent that
from occurring.
|