| Age | Commit message (Collapse) | Author |
|
buffer_cache: Ensure null buffers cannot take the fast uniform bind path
|
|
Fixes a crash in New Pokemon Snap
|
|
texture_cache: Handle out of bound texture blits
|
|
Some games interleave a texture blit using regions which are out-of-bounds. This addresses the interleaving to avoid oob reads from the src texture.
|
|
|
|
nvhost_vic: Fix device closure
|
|
Swaps the Red and Blue channels of the A1B5G5R5_UNORM texture format, which was being incorrectly rendered.
|
|
Implements the OnClose method of the nvhost_vic device, and removes the remnants of an older implementation.
Also cleans up some of the surrounding code.
|
|
This line can only ever be reached if src is null, so dereferencing it
here is a logic bug that slipped through.
Instead, we dereference dst instead which is guaranteed to be valid.
|
|
nvdrv: Cleanup CDMA Processor on device closure
|
|
|
|
core: settings: Add setting for debug assertions and disable by default.
|
|
- Removes a dependency on core and input_common from common.
|
|
engine_interface: Add missing virtual destructor
|
|
vk_master_semaphore: Add missing const qualifier for IsFree()
|
|
vk_texture_cache: Make use of bit_cast where applicable
|
|
texure_cache/util: Resolve implicit sign conversions with std::reduce
|
|
Eliminates a potential bug vector related to inheritance. Plus, we
should generally be specifying the destructor as virtual within purely
virtual interfaces to begin with.
|
|
We can just reuse the already existing KnownGpuTick() to deduplicate the
access.
|
|
This member function doesn't modify class state.
|
|
Also clarify the TODO comment a little more on the lacking
implementations for std::bit_cast.
|
|
Amends implicit sign conversions occurring with usages of std::reduce
and also relocates it to its own utility function to reduce verbosity a
little bit.
|
|
Same behavior, but much more straightforward to read.
|
|
vulkan_device: Enable EXT_robustness2 features
|
|
The Vulkan spec states:
If an element of pBuffers is VK_NULL_HANDLE, then the corresponding element of pOffsets must be zero.
https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindVertexBuffers2EXT.html#VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112
|
|
When this was being made mandatory, these enablement of these features was removed, but this is still needed.
Fixes: 757fd1e91716 ("vulkan_device: Require VK_EXT_robustness2")
|
|
We can get into a really bad state by ignoring this
leading to device loss and using incorrect resources.
|
|
There is no need for a busy loop here. Let's just use a condition variable to save some power.
|
|
Else the fence might get submited out-of-order into the queue, which makes testing them pointless.
Overhead should be tiny as the mutex is just moved from the queue to the writing code.
|
|
This was implicitly done by `is_powered_on = false`, however the explicit method allows us to block until the GPU is actually gone.
This should fix a race condition while removing the other subsystems while the GPU is still active.
|
|
It shall block until there is something to consume in the queue.
And use it for the GPU emulation instead of the spin loop.
This is only in booting the emulator, however in BOTW this is the case for about 1 second.
|
|
Avoid sending null pointer to memcpy as reported by Undefined Behaviour
Sanitizer. Replaces the std::memcpy calls in SpliceVectors with
std::copy calls. Opting to replace all the memcpy's with copy's.
Co-authored-by: LC <mathew1800@gmail.com>
|
|
video_core: Accelerate ASTC texture decoding using compute shaders
|
|
Brings us a step closer to unifying all channels to share a common interface.
|
|
|
|
|
|
Mesa is the primary OpenGL provider on all FreeDesktop systems.
For example, iris is used on Intel GPU + FreeBSD by default.
|
|
Currently, the Windows versions of the Intel OpenGL driver and the AMD
proprietary OpenGL driver do not properly support (or in fact degrade)
when asynchronous shader compilation is enabled. This blocks
specifically those drivers from using this feature. This affects
AMDGPU-PRO on Linux, and AMD's and Intel's OpenGL drivers on Windows.
|
|
Reimplements the approach to decoding layers in the compute shader. Fixes multilayer astc decoding when using Vulkan.
|
|
resolves a crash with some anamolous textures found in Astral Chain.
|
|
Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
|
|
using a raw string to encapsulate the entire shader code limits us to shaders of size less than 2KB. This change overcomes this limitation.
|
|
ASTC texture decoding is currently handled by a CPU decoder for GPU's without native ASTC decoding support (most desktop GPUs). This is the cause for noticeable performance degradation in titles which use the format extensively.
This commit adds support to accelerate ASTC decoding using a compute shader on OpenGL for GPUs without native support.
|
|
video_core: rasterizer_accelerated: Use a flat array instead of interval_map for cached pages.
|
|
|
|
renderer_opengl: Use compute shaders to swizzle BGR textures on copy
|
|
buffer_cache: Heuristically decide to skip cache on uniform buffers
|
|
In order to force the BGRA8 conversion on Nvidia using OpenGL, we need to forbid texture copies and views with other formats.
This commit also adds a boolean relating to this, as this needs to be done only for the OpenGL api, Vulkan must remain unchanged.
|
|
OpenGL does not natively support BGR internal formats, which causes many BGR textures to render incorrectly, with Red and Blue channels swapped.
This commit aims to address this by swizzling the blue and red channels on texture copies when a BGR format is encountered.
|
|
vk_command_pool: Reduce the command pool size from 4096 to 4
|