| Age | Commit message (Collapse) | Author |
|
This allows rendering to 3D textures with more than one slice.
Applications are allowed to render to more than one slice of a texture
using gl_Layer from a VTG shader.
This also requires reworking how 3D texture collisions are handled, for
now, this commit allows rendering to slices but not to miplevels. When a
render target attempts to write to a mipmap, we fallback to the previous
implementation (copying or flushing as needed).
- Fixes color correction 3D textures on UE4 games (rainbow effects).
- Allows Xenoblade games to render to 3D textures directly.
|
|
vk_rasterizer: Implement storage texels and atomic image operations
|
|
vk_rasterizer: Skip transform feedbacks when extension is unavailable
|
|
Implement atomic operations on images.
On GLSL these are atomicImage* functions (e.g. atomicImageAdd).
|
|
This is the equivalent of an image buffer on OpenGL.
- Used by Octopath Traveler
|
|
- Used by Octopath Traveler
|
|
fixed_pipeline_state,gl_rasterizer: Swap negative viewport checks for front faces
|
|
vk_rasterizer: Implement constant attributes
|
|
shader/other: Implement MEMBAR.CTS
|
|
Avoids calling transform feedback procedures when
VK_EXT_transform_feedback is not available.
|
|
texture_cache: Implement depth stencil texture swizzles
|
|
maxwell_to_vk: Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
|
|
This silences an assertion we were hitting and uses workgroup memory
barriers when the game requests it.
|
|
Stop ignoring image swizzles on depth and stencil images.
This doesn't fix a known issue on Xenoblade Chronicles 2 where an OpenGL
texture changes swizzles twice before being used. A proper fix would be
having a small texture view cache for this like we do on Vulkan.
|
|
The check to flip faces when viewports are negative were a left over
from the old OpenGL code. This is not required on Vulkan where we have
negative viewports.
|
|
shader/other: Implement BAR.SYNC 0x0
|
|
shader_decompiler: Visit source nodes even when they assign to RZ
|
|
Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline
|
|
shader/other: Implement thread comparisons (NV_shader_thread_group)
|
|
Trivially implement this particular case of BAR. Unless games use OpenCL
or CUDA barriers, we shouldn't hit any other case here.
|
|
Hardware S2R special registers match gl_Thread*MaskNV. We can trivially
implement these using Nvidia's extension on OpenGL or naively stubbing
them with the ARB instructions to match. This might cause issues if the
host device warp size doesn't match Nvidia's. That said, this is
unlikely on proper shaders.
Refer to the attached url for more documentation about these flags.
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
|
|
Some operations like atomicMin were ignored because they returned were
being stored to RZ. This operations have a side effect and it was being
ignored.
|
|
Atomic instructions can be used without returning anything and this is
valid code. Remove the assert.
|
|
Instead of using boost::icl::interval_map for caching, use
boost::intrusive::set. interval_map is intended as a container where the
keys can overlap with one another; we don't need this for caching
buffers and a std::set-like data structure that allows us to search with
lower_bound is enough.
|
|
Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
Used by Bravely Default II
|
|
Match OpenGL's behavior. This can fix or simplify bisecting issues on
Vulkan.
|
|
shader_ir: Add separate instructions for ordered and unordered comparisons and fix NE on GLSL
|
|
Constant attributes (in OpenGL known disabled attributes) are not
supported on Vulkan, even with extensions. To emulate this behavior we
return zero on reads from disabled vertex attributes in shader code.
This has no caching cost because attribute formats are not dynamic state
on Vulkan and we have to store it in the pipeline cache anyway.
- Fixes Animal Crossing: New Horizons terrain borders
|
|
This was a left over from OpenGL when disabled buffers where not properly
emulated. We no longer have to assert this as it is checked in vertex
buffer initialization.
|
|
vk_graphics_pipeline: Implement rasterizer_enable on Vulkan
|
|
|
|
|
|
texture: Implement R8G8UI
|
|
This allows us to use native SPIR-V instructions without having to
manually check for NAN.
|
|
maxwell_to_vk: implement missing signed int formats
|
|
video_core: Implement viewport swizzles with NV_viewport_swizzle
|
|
This should fix grass interactions on Breath of the Wild on Vulkan.
It is currently untested against validation layers.
Nvidia's Windows 443.09 beta driver or Linux 440.66.12 is required for
now.
|
|
|
|
{maxwell_3d,buffer_cache}: Implement memory barriers using 3D registers
|
|
vulkan: Remove unnecessary includes
|
|
vk_rasterizer: Skip index buffer setup when vertices are zero
|
|
We can simply enable rasterizer discard matching the current pipeline
key.
|
|
shader/texture: Support multiple unknown sampler properties
|
|
|
|
- Used by The Walking Dead: The Final Season
|
|
maxwell_3d: Fix depth clamping register
|
|
shader: Implement P2R CC, IADD Rd.CC and IADD.X
|
|
texture_cache: Reintroduce preserve_contents accurately
|
|
Reduces some header churn and reduces rebuilds when some header
internals change.
While we're at it we can also resolve a missing include in buffer_cache.
|
|
shader/memory_util: Deduplicate code
|