| Commit message (Collapse) | Author | Age | Files | Lines |
| |\
| |
| | |
maxwell_3d: Initialize more registers to their expected value
|
| | |
| |
| |
| | |
Initialize line widths to avoid setting a line width of zero.
|
| | |
| |
| |
| |
| | |
NVN expects this to be initialized as Fill, otherwise games that never
bind a rasterizer state will log an invalid polygon mode.
|
| |\ \
| | |
| | | |
format_lookup_table: Implement G24S8 format as S8Z24
|
| | | | |
|
| |\ \ \
| | | |
| | | | |
fixed_pipeline_state,gl_rasterizer: Swap negative viewport checks for front faces
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
While Vulkan was assuming we had no negative viewports, OpenGL code
was assuming we had them. Port the old code from Vulkan to OpenGL,
checking if the first viewport is negative before flipping faces.
This is not a complete implementation since we only check for the first
viewport to be negative. That said, unless a game is using Vulkan,
OpenGL and NVN games should be fine here, and we can always compare with
our Vulkan backend to see if there's a difference.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| |\ \ \ \
| | | | |
| | | | | |
vk_rasterizer: Implement constant attributes
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
| |\ \ \ \ \
| | | | | |
| | | | | | |
OpenGL: Enable Debug Context and Synchronous debugging when graphics debugging is enabled
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
debugging is enabled.
This commit aims to help easing debugging of driver crashes without
having to modify existing code.
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
texture_cache: Optimize GetSurfacesInRegion
|
| | | | | | | | |
|
| | | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | | |
This avoids most heap allocations when collecting surfaces into a
vector.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | | |
Previously we were disabling compute shaders on Intel's proprietary driver due to broken compute. This has been fixed in the latest Intel drivers. Re-enable compute for Intel proprietary drivers and remove the check for broken compute.
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
shader/other: Implement MEMBAR.CTS
|
| | |/ / / / /
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This silences an assertion we were hitting and uses workgroup memory
barriers when the game requests it.
|
| | | | | | | |
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
maxwell_3d: Reduce severity of logs that can be spammed
|
| | | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | | |
These logs were killing performance on some games when they were
spammed. Reduce them to Debug severity.
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
texture_cache: Implement depth stencil texture swizzles
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Null texture cubes were not considered arrays, causing issues on Vulkan
and OpenGL when creating views.
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
This fixes cases where the texture swizzle was applied twice on the same
draw to a texture bound to two different slots.
|
| | | |_|_|_|/
| |/| | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \ \
| |_|/ / / /
|/| | | | | |
patch_manager: Add support for case-sensitivity on Linux
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Changes many patch_manager functions to use a case-less variant of
GetSubdirectory. Fixes patches not showing up on *nix systems when
patch directories are named with odd cases, i.e. `exeFS'.
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
gl_shader_manager: Unbind GLSL program when binding a host pipeline
|
| | | |/ / / /
| |/| | | |
| | | | | |
| | | | | | |
Fixes regression in Link's Awakening caused by 420cc13248350ef5c2d19e0b961cb4185cd16a8a
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
main: Log host system memory parameters
|
| | | | | | | | |
|
| | | |_|_|/ /
| |/| | | |
| | | | | |
| | | | | | |
Logs both physical memory and swapfile sizes, this is useful for support.
|
| |\ \ \ \ \ \
| |_|_|_|/ /
|/| | | | | |
maxwell_to_vk: Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
|
| | |/ / / /
| | | | |
| | | | |
| | | | |
| | | | | |
Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
Used by Bravely Default II
|
| |\ \ \ \ \
| | | | | |
| | | | | | |
shader/other: Implement BAR.SYNC 0x0
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Trivially implement this particular case of BAR. Unless games use OpenCL
or CUDA barriers, we shouldn't hit any other case here.
|
| |\ \ \ \ \ \
| |_|_|/ / /
|/| | | | | |
shader/memory: Implement non-addition operations in RED
|
| | |/ / / /
| | | | |
| | | | |
| | | | | |
Trivially implement these instructions. They are used in Astral Chain.
|
| |\ \ \ \ \
| | | | | |
| | | | | | |
shader_decompiler: Visit source nodes even when they assign to RZ
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
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.
|
| |\ \ \ \ \
| | | | | |
| | | | | | |
Correct a series of crashes and intructions on Async GPU and Vulkan Pipeline
|
| | | | | | | |
|
| | | | | | | |
|
| | | | | | | |
|
| |\ \ \ \ \ \
| | | | | | |
| | | | | | | |
renderer_opengl: Add assembly program code paths
|
| | | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | | |
Add code required to use OpenGL assembly programs based on
NV_gpu_program5. Decompilation for ARB programs is intended to be added
in a follow up commit. This does **not** include ARB decompilation and
it's not in an usable state.
The intention behind assembly programs is to reduce shader stutter
significantly on drivers supporting NV_gpu_program5 (and other required
extensions). Currently only Nvidia's proprietary driver supports these
extensions.
Add a UI option hidden for now to avoid people enabling this option
accidentally.
This code path has some limitations that OpenGL compatibility doesn't
have:
- NV_shader_storage_buffer_object is limited to 16 entries for a single
OpenGL context state (I don't know if this is an intended limitation, an
specification issue or I am missing something). Currently causes issues
on The Legend of Zelda: Link's Awakening.
- NV_parameter_buffer_object can't bind buffers using an offset
different to zero. The used workaround is to copy to a temporary buffer
(this doesn't happen often so it's not an issue).
On the other hand, it has the following advantages:
- Shaders build a lot faster.
- We have control over how floating point rounding is done over
individual instructions (SPIR-V on Vulkan can't do this).
- Operations on shared memory can be unsigned and signed.
- Transform feedbacks are dynamic state (not yet implemented).
- Parameter buffers (uniform buffers) are per stage, matching NVN and
hardware's behavior.
- The API to bind and create assembly programs makes sense, unlike
ARB_separate_shader_objects.
|