liamwhite
188932768e
Merge pull request #6598 from FernandoS27/falklands-are-british
...
MacroHLE: Add MultidrawIndirect HLE Macro.
2022-10-01 20:58:03 -04:00
Fernando Sahmkow
a60b669ef4
MacroHLE: Add MultidrawIndirect HLE Macro.
2022-10-01 20:57:00 -04:00
Liam
1225627515
macro_jit_x64: fix miscompilation of bit extraction operations
2022-10-01 20:31:21 -04:00
bunnei
4242064560
Merge pull request #8874 from vonchenplus/align_index_buffer_size
...
Align index buffe size when vertex_buffer_unified_memory enable
2022-10-01 10:28:50 -07:00
Liam
b80f7faebe
macro_jit_x64: cancel exit for taken branch
2022-10-01 01:32:24 -04:00
bunnei
d9e375acc3
Merge pull request #8910 from vonchenplus/astc_decode_error
...
video_core: Modify astc texture decode error fill value
2022-09-30 15:34:11 -07:00
Liam
087c6c2ef1
vulkan: automatically use larger staging buffer sizes when possible
2022-09-25 02:28:03 -04:00
FengChen
d4cb0eac87
video_core: Fix legacy to generic location unpaired
2022-09-20 12:03:31 +08:00
Feng Chen
c864cb5772
Merge branch 'master' into mipmap
2022-09-20 11:56:43 +08:00
FengChen
9a95c7fa14
video_core: Generate mipmap texture by drawing
2022-09-20 11:55:43 +08:00
Morph
809126c94a
astc: Enable parallel CPU astc decoding
...
Given the issues with GPU accelerated ASTC decoding with NVIDIA's latest drivers, parallelize astc decoding on the CPU.
Uses half the available threads in the system for astc decoding.
2022-09-16 10:16:42 -04:00
FengChen
88007077e2
video_core: Modify astc texture decode error fill value
2022-09-15 17:04:44 +08:00
FengChen
92b1f8d5da
Align index buffe size when vertex_buffer_unified_memory enable
2022-09-10 20:01:33 +08:00
lat9nq
0cef3b47f3
Merge pull request #8819 from liamwhite/cash-money
...
video_core: add option for pessimistic flushing
2022-09-08 22:46:58 -04:00
Morph
9533365486
style: General style changes to match with the rest of the codebase
2022-08-31 08:51:47 -04:00
Morph
7e379207ec
(shader/pipeline)_cache: Raise shader/pipeline cache version
...
Since the following commit: a83a5d2e4c
, many games will refuse to boot unless the shader/pipeline cache has been invalidated.
2022-08-31 08:39:37 -04:00
Fernando S
a83a5d2e4c
Merge pull request #8752 from vonchenplus/rectangle_texture
...
video_code: support rectangle texture
2022-08-31 10:40:45 +02:00
Liam
db3eb168cd
video_core: add option for pessimistic flushing
2022-08-25 12:32:14 -04:00
FengChen
b2a6dde438
video_code: support rectangle texture
2022-08-25 12:45:58 +08:00
Narr the Reg
0c8aeb09d2
video_core: vulkan: rasterizer: Workaround on viewport swizzle on AMD
2022-08-23 18:38:34 -05:00
liamwhite
064f836d1c
Merge pull request #8784 from Docteh/nosnek
...
code: dodge PAGE_SIZE #define
2022-08-21 12:59:01 -04:00
vonchenplus
0a8c5c8622
video_core: support framebuffer crop rect top not zero
2022-08-20 21:41:40 +08:00
Kyle Kienapfel
14e9de6678
code: dodge PAGE_SIZE #define
...
Some header files, specifically for OSX and Musl libc define PAGE_SIZE to be a number
This is great except in yuzu we're using PAGE_SIZE as a variable
Specific example
`static constexpr u64 PAGE_SIZE = u64(1) << PAGE_BITS;`
PAGE_SIZE PAGE_BITS PAGE_MASK are all similar variables.
Simply deleted the underscores, and then added YUZU_ prefix
Might be worth noting that there are multiple uses in different classes/namespaces
This list may not be exhaustive
Core::Memory 12 bits (4096)
QueryCacheBase 12 bits
ShaderCache 14 bits (16384)
TextureCache 20 bits (1048576, or 1MB)
Fixes #8779
2022-08-19 16:08:40 -07:00
Liam
c5c425914f
video_core: implement R16G16B16X16 texture format
2022-08-19 17:17:38 -04:00
bunnei
d04bc95934
Merge pull request #8739 from merryhime/swizzle_table
...
video_core/textures/decoders: Avoid SWIZZLE_TABLE
2022-08-13 22:03:32 -07:00
Merry
f2fbf6d910
video_core/textures/decoders: Avoid SWIZZLE_TABLE
2022-08-09 00:27:26 +01:00
DJRobX
d8b160c883
Make vsync setting work for Vulkan
2022-08-07 20:57:47 -07:00
bunnei
9dc8d02acc
Merge pull request #8658 from liamwhite/plgp
...
video_core: differentiate between tiled and untiled framebuffer sizes for unaccelerated blits
2022-08-06 23:00:46 -07:00
bunnei
0f2fc6335e
Merge pull request #8700 from liamwhite/xc3-vk-crash
...
vk_texture_cache: return VK_NULL_HANDLE for views of null images
2022-08-06 13:11:34 -07:00
Liam
c40cec5e58
renderer_vulkan: add format fallbacks for R16G16B16_SFLOAT, R16G16B16_SSCALED, R8G8B8_SSCALED
2022-08-02 18:39:33 -04:00
Liam
1d364adf3e
vk_texture_cache: return VK_NULL_HANDLE for views of null images
2022-08-02 13:31:42 -04:00
bunnei
5ae0e5ba67
Merge pull request #8678 from liamwhite/stop-waiting
...
video_core: stop waiting for shader compilation on user cancel
2022-07-31 14:47:43 -07:00
Liam
b9360681df
renderer_opengl: delete shader source after linking
2022-07-30 13:21:26 -04:00
Liam
fc013d88cb
video_core: stop waiting for shader compilation on user cancel
2022-07-29 23:33:40 -04:00
Liam
cbe5b8a13e
video_core: differentiate between tiled and untiled framebuffer sizes for unaccelerated copies
2022-07-27 21:52:06 -04:00
liamwhite
ea861cc1c4
Merge pull request #8542 from Morph1984/gpu-use-old-q
...
gpu_thread: Use the previous MPSCQueue implementation
2022-07-27 15:55:28 -04:00
Andrea Pappacoda
cdb240f3d4
chore: make yuzu REUSE compliant
...
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.
Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.
The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.
Following REUSE has a few advantages over the current approach:
- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
`.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
files like binary assets / images is always accurate and up to date
To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.
[REUSE]: https://reuse.software
Follow-up to 01cf05bc75
2022-07-27 12:53:49 +02:00
Liam
382b41b18f
video_core: use correct byte size for framebuffer
2022-07-19 17:46:26 -04:00
bunnei
02282477e7
yuzu: settings: Remove framerate cap and merge unlocked framerate setting.
...
- These were all somewhat redundant.
2022-07-16 23:11:39 -07:00
Morph
fa09f7aa6c
gpu_thread: Use the previous MPSCQueue implementation
...
The bounded MPSCQueue implementation causes crashes in Fire Emblem Three Houses, use the previous implementation for now.
2022-07-06 01:33:17 -04:00
Morph
aec129c1ab
renderer_(gl/vk): Implement ASTC_10x6_UNORM
...
- Used by Monster Hunter Rise Update 10.0.2
2022-07-05 20:33:43 -04:00
lat9nq
d41ffb592c
Revert "vulkan_device: Block AMDVLK's VK_KHR_push_descriptor"
2022-06-29 16:35:06 -04:00
german77
c34a95fa25
video_core: Replace VKUpdateDescriptorQueue with UpdateDescriptorQueue
2022-06-26 20:21:45 -05:00
german77
b5d6194f6d
video_core: Replace VKSwapchain with Swapchain
2022-06-26 20:21:45 -05:00
german77
a5e419535f
video_core: Replace VKQueryCache with QueryCache
2022-06-26 20:21:45 -05:00
german77
9775fae4eb
video_core: Replace VKScheduler with Scheduler
2022-06-26 20:21:45 -05:00
german77
a262dc02b5
video_core: Replace VKBlitScreen with BlitScreen
2022-06-26 20:21:45 -05:00
german77
fca5752690
video_core: Replace VKFenceManager with FenceManager
2022-06-26 20:21:45 -05:00
liamwhite
0ae4eae9a6
Merge pull request #8460 from Morph1984/bounded-q
...
bounded_threadsafe_queue: Use constexpr capacity and mask
2022-06-15 19:39:22 -04:00
Morph
25429998e3
bounded_threadsafe_queue: Use constexpr capacity and mask
...
While this is the primary change, we also:
- Remove the mpsc namespace and rename Queue to MPSCQueue
- Make Slot a private struct within MPSCQueue
- Remove the AlignedAllocator template argument, as we use std::allocator
- Replace instances of mask + 1 with capacity, and mask + 2 with capacity + 1
2022-06-15 16:59:13 -04:00
Morph
4572634a4e
vk_compute_pass: Explicitly cast to VkAccessFlags
...
According to the standard, a narrowing conversion is an implicit conversion from an integer or unscoped enumeration type to an integer type that cannot represent all the values of the original type, except when the value is a literal or constant expression.
MSVC, unlike GCC or Clang, determines this to be a narrowing conversion despite the enumeration exclusively containing values that fit within the range of a 32 bit integer, emitting a warning since designated initializers prohibit narrowing conversions.
To solve this, explicitly cast to the type we are initializing.
2022-06-15 07:12:16 -04:00
Mai
103997ee56
Merge pull request #8383 from Morph1984/shadow-of-the-past
...
yuzu: Make variable shadowing a compile-time error
2022-06-14 21:08:58 -04:00
Morph
5568763a57
vk_compute_pass: Use VK_ACCESS_NONE
...
This enumeration was introduced in Vulkan 1.3, prefer using this instead of defaulting the enum.
Also resolves a narrowing conversion warning on MSVC.
2022-06-14 09:14:13 -04:00
Mai
a3b12e3809
Merge pull request #8439 from liamwhite/monkey-compiler
...
general: fix compilation on GCC 12
2022-06-14 08:34:16 -04:00
Morph
fcfe192e83
vk_compute_pass: Silence Wextra warning
...
Silences a warning about using enumerated and non-enumerated types in a conditional expression.
2022-06-14 05:29:57 -04:00
Liam
ebecdd3a74
general: fix compilation on MinGW GCC 12
2022-06-13 20:09:32 -04:00
Liam
084d7d6b01
common: Change semantics of UNREACHABLE to unconditionally crash
2022-06-13 20:09:00 -04:00
Morph
efc89c032b
CMakeLists: Make variable shadowing a compile-time error
...
Now that the entire project is free of variable shadowing, we can enforce this as a compile time error to prevent any further introduction of this logic bug.
2022-06-13 18:19:23 -04:00
bunnei
5282efac1b
Merge pull request #8413 from behunin/bounded-queue
...
gpu_thread: Move to bounded queue
2022-06-11 00:07:18 -07:00
bunnei
ae83d5c6d3
Merge pull request #8393 from lat9nq/default-vulkan
...
general: Set renderer_backend's default to Vulkan
2022-06-11 00:06:59 -07:00
Levi Behunin
4dd6bcd206
gpu_thread: Move to bounded queue
2022-06-02 19:37:46 -06:00
Billy Laws
ea89cf8639
Maxwell3D: Fix 3D semaphore counter type 0 handling
...
Counter type 0 actually releases the semaphore payload rather than a constant zero as was previously thought. This is required by Skyrim.
2022-06-02 21:46:38 +01:00
Liam
989d4a7a41
core/debugger: Improved stepping mechanism and misc fixes
2022-06-01 02:15:15 -04:00
lat9nq
b43ae9d5ed
vulkan_library: Add debug logging
2022-05-30 10:57:59 -04:00
bunnei
1c8b509441
Merge pull request #8332 from Morph1984/reduce_exec_size
...
general: Use smaller array types where applicable
2022-05-29 02:33:24 -07:00
bunnei
a9beb4746e
Merge pull request #8379 from lat9nq/amd-push-desc-workaround
...
vulkan_device: Block AMDVLK's VK_KHR_push_descriptor
2022-05-25 13:07:39 -07:00
bunnei
79352ee9d5
Merge pull request #8369 from lat9nq/amd-wmel-workaround
...
vulkan_device: Workaround extension bug
2022-05-25 13:07:28 -07:00
lat9nq
3a8c2ae328
vulkan_device: Workaround extension bug
...
A bug occurs in yuzu when VK_KHR_workgroup_memory_explicit_layout is
available but 16-bit integers are not supported in the host driver.
Disable usage of the extension when this case arises.
2022-05-25 01:22:15 -04:00
lat9nq
7f53cd1e96
vulkan_device: Block AMDVLK's VK_KHR_push_descriptor
...
Recent AMD Vulkan drivers (22.5.2 or 2.0.226 for specifically Vulkan)
have a broken VK_KHR_push_descriptor implementation that causes a crash
in yuzu. Disable it for the time being.
2022-05-25 01:17:48 -04:00
bunnei
4118aad491
Merge pull request #8311 from asLody/fix-stencil-faces
...
vk_rasterizer: fix stencil test when two faces are disabled
2022-05-24 18:37:31 -07:00
Alexandre Bouvier
020982508d
video_core: Support new VkResult
2022-05-17 17:37:10 +02:00
Morph
370d3fa1e3
video_core/surface: Use u8 for PixelFormat block tables
...
Using this smaller type saves 33280 bytes in the compiled executable.
2022-05-13 00:51:11 -04:00
Morph
b3f8c7ce58
codecs/vp9: Use u8 for norm and map luts
...
Using this smaller type saves 1536 bytes in the compiled executable.
2022-05-13 00:51:05 -04:00
Morph
2fb6df3fe9
Merge pull request #8314 from liamwhite/gl-flip-2
...
OpenGL: interpret face flips according to GL NDC
2022-05-11 17:51:18 -04:00
Morph
dca63391b6
Merge pull request #8313 from liamwhite/dma-bpp
...
maxwell_dma: fix bytes_per_pixel
2022-05-11 17:51:02 -04:00
Liam
e7ba9fd7e1
maxwell_dma: use fallback if remapping is enabled
2022-05-10 19:26:48 -04:00
Liam
e158951695
video_core/macro: clear code on upload address assignment
2022-05-10 17:07:21 -04:00
Fernando Sahmkow
5562ae9cc5
VideoCore: Add option to dump the macros.
...
Co-Authored-By: liamwhite <liamwhite@users.noreply.github.com>
2022-05-08 21:37:34 -04:00
Liam
7fe5004f90
video_core/macro_jit_x64: warn on invalid parameter access
2022-05-08 02:48:03 -04:00
Liam
b317f54f22
OpenGL: implement face flips according to NDC
2022-05-06 20:05:21 -04:00
Liam
4f1a2c2562
maxwell_dma: fix bytes per pixel
2022-05-06 18:18:00 -04:00
Lody
535bc61b4c
vk_rasterizer: fix stencil test when two faces are disabled
2022-05-06 14:47:55 +08:00
Mai M
ca28b447ac
Merge pull request #8280 from Tachi107/spdx-fixup
...
chore: add missing SPDX tags
2022-04-28 23:28:42 -04:00
Mai M
5687bc6e10
Merge pull request #8282 from liamwhite/gcc-12
...
GCC 12 fixes
2022-04-28 23:28:07 -04:00
Liam
709d7fd92c
GCC 12 fixes
2022-04-28 16:50:34 -04:00
Andrea Pappacoda
01cf05bc75
chore: add missing SPDX tags
...
Follow-up to 99ceb03a1c
2022-04-28 18:24:11 +02:00
Morph
213120a98b
renderer_vulkan: Update screen info if the framebuffer size has changed
2022-04-26 02:48:40 -04:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
german77
3e77466b86
bootmanager: Don't create another screenshot request if previous one is not done yet
2022-04-18 01:00:48 -05:00
Fernando Sahmkow
f783883bf8
video_core: implement formats for N64 emulation
2022-04-14 11:06:27 -04:00
Liam
d4571b123d
buffer_cache: cap vertex buffer sizes
2022-04-14 10:46:48 -04:00
Liam
a24e7ba61b
maxwell3d: add small_index_2 register
2022-04-14 09:57:06 -04:00
bunnei
bf3c6f8812
Merge pull request #8149 from liamwhite/front-face
...
OpenGL: flip front faces if Z scale is inverted
2022-04-09 01:39:39 -07:00
Merry
bbc585881a
video_core: Replace lock_guard with scoped_lock
2022-04-07 19:44:07 +01:00
Fernando S
4265372099
Merge pull request #8161 from liamwhite/gl-s8d24
...
OpenGL: fix S8D24 to ABGR8 conversions
2022-04-07 16:59:41 +02:00
Fernando S
03d5794183
Merge pull request #8152 from liamwhite/gl-crop
...
OpenGL: fix cropping
2022-04-07 16:58:59 +02:00
Liam
52ebdd42c6
OpenGL: fix S8D24 to ABGR8 conversions
2022-04-06 19:44:33 -04:00
bunnei
02473ea7d5
Revert "texture_cache/util: Remove unneeded ReadBlockUnsafe"
2022-04-04 16:26:53 -07:00
ameerj
494c41dd5a
texture_cache/util: Remove unneeded ReadBlockUnsafe
...
This call was reading GPU memory into the dst buffer, which is then overwritten by the SwizzleTexture call.
2022-04-04 15:57:54 -04:00
Liam
b7be6a4316
OpenGL: fix cropping
2022-04-04 12:51:09 -04:00
Liam
c59c035d74
Vulkan: crop to screen dimensions if crop not explicitly requested
2022-04-04 11:45:15 -04:00
Liam
a57531854e
OpenGL: propagate face flip condition
2022-04-04 10:32:14 -04:00
Liam
cb913e5c02
OpenGL: flip front faces if Z scale is inverted
2022-04-04 10:19:40 -04:00
Andrea Pappacoda
0c214cb5b9
fix: typos
2022-04-02 16:34:07 +02:00
Fernando S
550844e5e8
Merge pull request #8128 from FernandoS27/gc-fixes
...
GPU Garbage Collection: Fix regressions.
2022-04-01 17:19:55 +02:00
Fernando S
b1fdc02465
Merge pull request #8066 from ameerj/gpu-decode-fixes
...
codec: Fix GPU decoder detection on Windows and a memory leak
2022-04-01 01:37:22 +02:00
Fernando Sahmkow
e9e671d101
GPU Garbage Collection: Fix regressions.
2022-04-01 01:36:24 +02:00
bunnei
9b52ee4558
Merge pull request #8076 from ameerj/nv-vk-msaa-scale
...
Vulkan: Use 3D helpers for MSAA scaling on NV drivers 510+
2022-03-30 23:00:44 -07:00
ameerj
3e489782e1
gl_rasterizer: Avoid scenario locking already owned mutex
...
gpu.TickWork() may lock the texture_cache and buffer_cache mutexes, which are owned by the thread prior to invoking TickWork().
Defer invoking gpu.TickWork() until the scope ends, where the owned mutexes are released.
2022-03-28 20:35:15 -04:00
bunnei
af04f8b8e9
Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory."
2022-03-26 12:38:30 -07:00
Fernando Sahmkow
7a9d9e575b
Texture Cache: Add Cached CPU system.
2022-03-25 04:24:05 +01:00
bunnei
ab6a5784fa
Merge pull request #7720 from FernandoS27/yfc-gc
...
First Nugget: Reworked Garbage Collection to be smarter [originally from Project YFC]
2022-03-24 20:16:11 -07:00
Fernando Sahmkow
9872d4bc4f
GC: Address Feedback.
2022-03-25 03:05:56 +01:00
bunnei
ca12a77670
hle: nvflinger: Migrate android namespace -> Service::android.
2022-03-24 18:13:33 -07:00
bunnei
7f4165fc05
hle: vi: Integrate new NVFlinger and HosBinderDriverServer service.
2022-03-24 18:13:33 -07:00
bunnei
05d80fba38
hle: nvflinger: Move BufferTransformFlags to its own header.
2022-03-24 18:13:32 -07:00
bunnei
d456b9d554
hle: nvflinger: Move PixelFormat to its own header.
2022-03-24 18:13:32 -07:00
Fernando Sahmkow
9edbbf2af4
Garbage Collection: Final tuning.
2022-03-25 01:51:52 +01:00
Fernando Sahmkow
5e982a7812
Buffer Cache: Tune to the levels of the new GC.
2022-03-25 01:51:51 +01:00
Fernando Sahmkow
ecb3342145
Garbage Collection: Redesign the algorithm to do a better use of memory.
2022-03-25 01:51:51 +01:00
ameerj
8d45dd3b73
Vulkan: Use 3D helpers for MSAA scaling on NV drivers 510+
...
Nvidia Vulkan drivers 510+ crash when blitting MSAA images. Fall-back to 3D scale helpers for MSAA image scaling.
2022-03-23 23:30:17 -04:00
Liam
dea5de91d2
buffer_cache: reset cached write bits after flushing invalidations
2022-03-23 20:59:01 -04:00
bunnei
82ac66f8a4
Merge pull request #8048 from ameerj/include-purge
...
general: Reduce unused includes across the project
2022-03-21 18:03:54 -07:00
ameerj
15f9472b15
codec: Plug GPU decoder memory leak
2022-03-21 20:22:52 -04:00
ameerj
109566fc8f
codec: Disable HW_FRAMES method check on Windows
...
It was reported that this method causes crashes on certain Linux decoding backends, hence the check to avoid it.
This subsequently caused Windows GPU decoders to never be selected and always fall back to CPU decoding, disable the check on Windows for now.
2022-03-21 20:21:09 -04:00
bunnei
ff2e891022
Merge pull request #7812 from FernandoS27/made-straight-from-the-nut
...
BufferCache: Find direction of the stream buffer increase.
2022-03-20 15:23:53 -07:00
Fernando Sahmkow
3b0d233cbd
BufferCache: Find direction of the stream buffer increase.
2022-03-20 21:37:23 +01:00
Fernando S
7c05c987a3
Merge pull request #8036 from ameerj/starbit-nv
...
vk_texture_cache: Do not reinterpret DepthStencil source images
2022-03-20 13:35:59 +01:00
bunnei
150f6db4d1
Merge pull request #7840 from lioncash/bitor
...
texture_cache: Amend unintended bitwise OR in SynchronizeAliases
2022-03-20 02:19:30 -07:00
ameerj
866b7c20a8
general: Fix clang/gcc build errors
2022-03-20 02:25:09 -04:00
ameerj
923decae5a
common: Reduce unused includes
2022-03-19 15:01:31 -04:00
ameerj
1bc7d61b57
video_core: Reduce unused includes
2022-03-19 15:01:31 -04:00
ameerj
d618bba8a6
general: Reduce core.h includes
2022-03-18 02:13:02 -04:00
ameerj
4d840aa903
vk_texture_cache: Do not reinterpret DepthStencil source images
...
Fixes star pointer interactions in Super Mario Galaxy on some drivers, notably Nvidia.
Co-Authored-By: Fernando S. <1731197+fernandos27@users.noreply.github.com>
2022-03-17 20:55:05 -04:00
Fernando S
a616f49864
Merge pull request #8030 from liamwhite/s8d24-conversion
...
Vulkan: convert S8D24 <-> ABGR8
2022-03-18 00:36:06 +01:00
Liam
6407f16d81
Address review comments
2022-03-16 18:00:42 -04:00
Fernando S
c3c351e2c2
Merge pull request #8023 from ameerj/kirby-pop-in
...
maxwell_3d: Implement a safer CB data upload
2022-03-16 12:14:08 +01:00
Liam
bcc2d7e69b
Vulkan: convert S8D24 <-> ABGR8
2022-03-15 20:05:21 -04:00
ameerj
5119a57614
maxwell_3d: Implement a safer CB data upload
...
This makes constant buffer uploads safer and more accurate by updating the GPU memory as soon as the CB Data method is invoked. The previous implementation was deferring the updates until a different maxwell 3d method was detected, then writing all CB data at once.
2022-03-14 19:18:36 -04:00
Fernando S
f9e1f559b1
Merge pull request #8000 from liamwhite/hagi
...
Initial support for Wii Hagi emulator
2022-03-15 00:08:05 +01:00
byte[]
be0e6a2bb4
Maxwell3D: Link to override constant definition in nouveau
2022-03-14 11:06:25 -04:00
byte[]
364c67e49b
Maxwell3D: restore original topology when topology overrides are disabled
2022-03-14 11:00:08 -04:00
Liam
37aa472269
Maxwell3D: Use override constants from nouveau
...
This fixes some incorrect rendering in Sunshine
2022-03-14 10:11:58 -04:00
ameerj
e8c50e709e
emit_spirv, vk_compute_pass: Resolve VS2022 compiler errors
2022-03-12 02:54:33 -05:00
Liam
56c646d82c
Maxwell3D: Restrict topology override effect to after the register is set
2022-03-11 19:42:12 -05:00
Liam
70e632f153
Maxwell3D: mark index buffers as dirty after updating counts
2022-03-11 08:51:22 -05:00
Liam
82c3042c0f
TextureCacheRuntime: allow converting D24S8 to ABGR8
...
I can't see how this would be useful, but Galaxy uses it.
2022-03-10 20:25:34 -05:00
Liam
f1521183f8
Maxwell3D: read small-index draw and primitive topology override registers
...
This allows Galaxy and Sunshine to render for the first time.
2022-03-10 19:21:04 -05:00
bunnei
f2743b41b0
Merge pull request #7986 from lat9nq/vk-callback
...
core, video_core: Fix two crashes when failing to create the emulated GPU instance
2022-03-08 12:36:57 -08:00
lat9nq
b5e60ae1b0
video_core: Cancel Scoped's exit call on GPU failure
...
When CreateRenderer fails, the GraphicsContext that was std::move'd into
it is destroyed before the Scoped that was created to manage its
currency. In that case, the GraphicsContext::Scoped will still call its
destructor at the ending of the function. And because the context is
destroyed, the Scoped will cause a crash as it attempts to call a
destroyed object's DoneCurrent function.
Since we know when the call would be invalid, call the Scoped's Cancel
method. This prevents it from calling a method on a destroyed object.
2022-03-07 18:21:56 -05:00
Fernando S
58b52f4884
Merge pull request #7930 from asLody/dma-semaphore
...
MaxwellDMA: Implement semaphore operations
2022-03-07 21:53:38 +01:00
Lody
4498908e72
MaxwellDMA: Implement semaphore operations
2022-03-07 13:46:18 +08:00
Ameer J
370e480c8c
gl_graphics_pipeline: Improve shader builder synchronization using fences ( #7969 )
...
* gl_graphics_pipeline: Improve shader builder synchronization
Make use of GLsync objects to ensure better synchronization between shader builder threads and the main context
* gl_graphics_pipeline: Make built_fence access threadsafe
* gl_graphics_pipeline: Use GLsync objects only when building in parallel
* gl_graphics_pipeline: Replace GetSync calls with non-blocking waits
The spec states that a ClientWait on a Fence object ensures the changes propagate to the calling context
2022-03-06 16:46:49 +01:00
ameerj
7f7df43da2
gl_fence_manager: Minor optimization to signal querying
...
Per the spec, bufSize is the number of integers that will be written, in this case, 1.
Also, the length argument is optional if the information of the number of elements written is not needed.
2022-02-27 17:57:33 -05:00
bunnei
56d9052b73
Merge pull request #7953 from ameerj/radv-rdna2-crash
...
vulkan_device: Blacklist RADV on RDNA2 from VK_EXT_vertex_input_dynamic_state
2022-02-26 01:19:13 -08:00
Mai M
91d802f68d
Merge pull request #7948 from Morph1984/11-11-10-float
...
maxwell_to_(gl/vk): Add 11_11_10 float vertex format
2022-02-26 00:09:44 -05:00
Ameer J
5f8d6bc504
vulkan_device: Blacklist RADV on RDNA2 from VK_EXT_vertex_input_dynamic_state
...
RDNA2 devices running under the RADV driver were crashing when VK_EXT_vertex_input_dynamic_state was enabled.
Blacklisting these devices until a proper fix is established.
2022-02-25 23:09:03 -05:00
Morph
e292b2d991
maxwell_to_(gl/vk): Add 11_11_10 float vertex format
...
- Used by パワプロクンポケットR
2022-02-25 17:11:17 -05:00
Lody
6978093404
vk_blit_screen: Add missing format bgra8
2022-02-24 19:25:39 +08:00
voidanix
7712e46d64
vulkan_device: fix missing format in ANV
...
Currently Mesa's ANV driver does not support
VK_FORMAT_B5G6R5_UNORM_PACK16, implement an alternative for it.
2022-02-21 09:21:41 +01:00
bunnei
8ec32e9755
Merge pull request #7814 from FernandoS27/another-bug-in-my-schedule
...
Vulkan: Fix Scheduler Chunks when their FuncType is 0.
2022-02-02 19:15:06 -07:00
Lioncash
e015dc8264
texture_cache: Ensure has_blacklisted is always initialized
...
Resolves a -Wmaybe_uninitialized warning
2022-02-02 14:37:27 -05:00
Lioncash
7367e55d1d
texture_cache: Remove dead code within SynchronizeAliases
...
Since these were being copied by value, none of the changes applied in
the loop would be reflected.
However, from the looks of it, this would already be applied within
CopyImage() anyways, so this can be removed.
2022-02-02 14:37:22 -05:00
Lioncash
856f576c05
texture_cache: Amend unintended bitwise OR in SynchronizeAliases
2022-02-02 14:20:58 -05:00
Lioncash
f785f73e92
general: Replace NonCopyable struct with equivalents
2022-02-02 13:17:12 -05:00
Morph
26a9dc3f65
Merge pull request #7824 from lioncash/scache
...
video_core/shader_cache: Take std::span in RemoveShadersFromStorage()
2022-02-01 01:58:38 -05:00
Lioncash
360a97ab54
video_core/shader_cache: Remove unused algorithm include
2022-02-01 01:41:05 -05:00
Lioncash
540ed72e99
video_core/shader_cache: Take std::span in RemoveShadersFromStorage()
...
Same behavior, but without the need to move into the function to avoid
an allocation.
2022-02-01 01:40:41 -05:00
Fernando Sahmkow
8a6e6465a7
Rasterizer: Refactor inlineToMemory.
2022-02-01 01:47:28 +01:00
Fernando Sahmkow
35ed051742
Vulkan: Fix Scheduler Chunks when their FuncType is 0.
2022-01-31 17:08:08 +01:00
Fernando Sahmkow
d0a5a48948
GPU: Improve syncing.
2022-01-29 23:02:04 +01:00
Fernando Sahmkow
4258d515e6
Rasterizer: Implement Inline2Memory Acceleration.
2022-01-29 22:53:27 +01:00
Fernando Sahmkow
f54280dafd
Inline2Memory: Flush before writting buffer.
2022-01-29 17:42:28 +01:00
ameerj
f300a1d54b
buffer_cache: Reduce stream buffer allocations when expanding from the left
...
The existing stream buffer optimization accounts for size increases at the end of the allocated buffer.
This adds the same optimization, increasing the size from the beginning of the buffer as well to reduce buffer allocations when expanding the same buffer from the left.
2022-01-27 15:31:43 -05:00
Lioncash
f6a049337e
common/xbyak_api: Make BuildRegSet() constexpr
...
This allows us to eliminate any static constructors that would have been
emitted due to the function not being constexpr.
2022-01-26 16:29:15 -05:00
bunnei
40050c1188
Merge pull request #7780 from lioncash/macro
...
video_core/macro: Move impl classes into their cpp files
2022-01-26 12:39:59 -08:00
Morph
c93dd45997
Merge pull request #7779 from lioncash/gpu-iface
...
gpu: Remove obsoleted CDmaPusher() accessors
2022-01-25 16:16:04 -05:00
Lioncash
a8a4f37628
video_core/macro: Add missing <cstring> header
...
Necessary since memcpy is used.
2022-01-25 14:10:02 -05:00
Lioncash
81d1a1133d
video_core/macro_interpreter: Move impl class to the cpp file
...
Keeps the implementation hidden from the intended API and lessens the
header dependencies on the interpreter's header.
2022-01-25 14:03:48 -05:00
Lioncash
cfd9f7d25b
video_core/macro_hle: Return unique_ptr directly from GetHLEProgram()
...
Same behavior, but less code and header dependencies.
2022-01-25 13:50:14 -05:00
Lioncash
a05d9405b9
video_core/macro: Remove unused parameter from Execute()
...
Simplifies the function interface.
2022-01-25 13:41:38 -05:00
Lioncash
74f80299b0
video_core/macro_jit_x64: Remove unused impl class member
...
Reduces the size of the impl class a tiny bit.
2022-01-25 13:33:09 -05:00
Lioncash
f11eefed56
video_core/macro_jit_x64: Decouple PersistentCallerSavedRegs() from impl
...
This doesn't depend on class state and can just be a regular function.
2022-01-25 13:31:54 -05:00
Lioncash
6b873b72ae
video_core/macro_jit_x64: Move impl class into cpp file
...
Keeps the implementation internalized and also reduces API-facing header
dependencies.
Notably, this fully internalizes all of the xbyak externals.
2022-01-25 13:31:46 -05:00
Lioncash
a3c81745b1
video_core/macro_hle: Move impl class into cpp file
...
Given it's intended to be an internal implementation class, we can move
it into the cpp file to ensure that.
This also lets us move some header dependencies into the cpp file as
well.
2022-01-25 13:15:48 -05:00
Lioncash
d8486a9968
gpu: Tidy up forward declarations
...
Over time a few forward declarations became unnecessary, so we can
remove these to tidy up the header a little bit.
2022-01-25 13:05:39 -05:00
Lioncash
9b38c8ef08
gpu: Remove obsoleted CDMAPusher() accessors
...
These were obsoleted in 2c47f8aa18
but
were accidentally overlooked.
2022-01-25 12:53:56 -05:00
Lioncash
e7af84670d
vk_fsr: Replace comma operator with semicolon
...
Generally, we should be ending statements with a semicolon not a comma
Resolves a clang diagnostic.
2022-01-25 12:42:27 -05:00
Jan Beich
d24a4b79d4
video_core: constify AVCodec for ffmpeg >= 5.0
...
src/video_core/command_classes/codecs/codec.cpp:177:16: error: assigning to 'AVCodec *' from 'const AVCodec *' discards qualifiers
av_codec = avcodec_find_decoder(codec);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
2022-01-20 11:09:21 +00:00
Georg Lehmann
d15814d39f
vulkan_device: Fix sType for VkPhysicalDeviceShaderAtomicInt64Features
2022-01-19 19:48:46 +01:00
ameerj
a5bff8e9b3
astc_decoder: Combine FastReplicate functions to work around new NV driver bug
...
The new Nvidia drivers have a bug where the FastReplicateTo6 function produces a lookup into the REPLICATE_TO_8 table rather than the REPLICATE_TO_6 table.
This seems to be an optimization gone wrong. Combining the logic of the FastReplicate functions seems to address the bug.
2022-01-16 16:13:20 -05:00
Fernando S
a95c49e7d0
Merge pull request #7658 from ameerj/sparse-fixes
...
video_core/memory_manager: Fixes for sparse memory management
2022-01-06 13:50:14 +01:00
Mai M
7116a7d28b
Merge pull request #7673 from german77/no_return
...
glsl: Remove unreachable return
2022-01-05 06:41:16 -05:00
Narr the Reg
41bbb31af4
video_core: Remove unnecesary maybe_unused flag
2022-01-04 21:25:47 -06:00
bunnei
afb06b1495
Merge pull request #7636 from vonchenplus/buffer_queue_query
...
core:hle:service:nvflinger Implement few type in bufferqueue query method
2022-01-04 11:28:49 -08:00
Fernando S
118d5fa3b0
Merge pull request #7670 from ameerj/vsync-block
...
gpu: Add shut down method to synchronize threads before destruction
2022-01-04 14:16:24 +01:00
bunnei
c68a0d17fc
Merge pull request #7251 from FernandoS27/shader-dump
...
ShaderDecompiler: Add a debug option to dump the game's shaders.
2022-01-03 17:56:30 -08:00
ameerj
c17938f96b
gpu: Add shut down method to synchronize threads before destruction
2022-01-03 20:47:26 -05:00
Fernando Sahmkow
f58ee3f15f
ShaderDecompiler: Add a debug option to dump the game's shaders.
2022-01-04 02:39:00 +01:00
ameerj
7652543231
Revert "Merge pull request #7668 from ameerj/fence-stop-token"
...
This reverts commit e773354477
, reversing
changes made to abbbdc2bc0
.
2022-01-03 20:28:54 -05:00
ameerj
d866916f42
gpu: Use std::stop_token in WaitFence for VSync thread
...
Fixes a hang that may occur when stopping emulation and the VSync thread is blocked on the syncpoint condition variable.
2022-01-03 12:31:33 -05:00
Fernando S
3fa9702952
Merge pull request #7624 from ameerj/intel-msaa-scale
...
vk_texture_cache: Use 3D scale helpers for MSAA texture scaling on Intel Windows drivers
2022-01-03 00:40:14 +01:00
Fernando S
ae7da0b12d
Merge pull request #7629 from ameerj/nv-driver-fixes
...
shaders: Add fixes for NVIDIA drivers 495+
2022-01-03 00:39:59 +01:00
ameerj
951c61aeaa
texture_cache/util: Fix s32 overflow when resolving overlaps
2021-12-31 20:03:22 -05:00
ameerj
285b6dbc39
video_core/memory_manager: Fixes for sparse memory management
2021-12-31 17:04:02 -05:00
ameerj
2428214c4b
video_core/memory_manager: Deduplicate Read/WriteBlock
2021-12-31 02:08:22 -05:00
ameerj
8c907c620d
glsl: Add boolean reference workaround
2021-12-29 19:03:50 -05:00
ameerj
b84d429c2e
glsl_context_get_set: Add alternative cbuf type for broken drivers
...
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.
2021-12-29 19:03:50 -05:00
Feng Chen
e18bf4b062
Remove invalid header include
2021-12-28 18:51:11 +08:00
bunnei
f67605e6aa
Merge pull request #7622 from ameerj/vk-rescale-invalid-ptr
...
vk_texture_cache: Fix invalidated pointer access
2021-12-28 00:46:37 -08:00
ameerj
f9e0681d59
vk_texture_cache: Use 3D scale helpers for MSAA texture scaling on Intel Windows drivers
...
Fixes a crash when scaling MSAA textures in titles such as Sonic Colors Ultimate.
2021-12-23 22:35:19 -05:00
ameerj
cbc0f0a66e
blit_image: Remove unused function
2021-12-23 21:06:32 -05:00
ameerj
481b210c0d
vk_texture_cache: Fix invalidated pointer access
...
The vulkan ImageView held a reference to its source image for rescale status checking. This pointer is sometimes invalidated when the texture cache slot_images container is resized.
To avoid an invalid pointer dereference, the ImageView now holds a reference to the container itself.
2021-12-23 20:55:48 -05:00
Fernando S
648c7b4ed6
Merge pull request #7375 from vonchenplus/convert_legacy
...
Convert all legacy attributes to generic attributes
2021-12-22 17:36:05 +01:00
bunnei
36df305b13
Merge pull request #7599 from FernandoS27/primrestart-vulkan
...
Vulkan: Fix Primitive Restart and implement Logical Operations
2021-12-22 00:19:23 -08:00
Jan Beich
e57b13ad94
video_core/codecs: re-enable VAAPI/VDPAU on BSDs after 72aa418b0b
2021-12-18 20:57:30 +00:00
bunnei
2030522d86
Merge pull request #7587 from liushuyu/fix-linux-decoding
...
[Patch v2] externals/ffmpeg: refactor ffmpeg searching and handling in cmake
2021-12-18 02:33:07 -08:00
vonchenplus
4908a07c20
Address format clang
2021-12-18 14:27:07 +08:00
Fernando Sahmkow
6c00151d17
Vulkan: Fix the checks for primitive restart extension.
2021-12-18 07:17:08 +01:00
Fernando S
04b4f3b051
Merge pull request #7399 from ameerj/art-refactor
...
video_core: Refactoring post A.R.T. merge
2021-12-18 07:09:58 +01:00
Feng Chen
e49184e606
Merge branch 'yuzu-emu:master' into convert_legacy
2021-12-18 13:57:14 +08:00
Fernando Sahmkow
14d2c77f91
Vulkan: implement Logical Operations.
2021-12-18 06:52:28 +01:00
Fernando Sahmkow
6430fc29a9
Vulkan: Implement VK_EXT_primitive_topology_list_restart
2021-12-18 05:47:48 +01:00
bunnei
7cf74abbf5
Merge pull request #7551 from vonchenplus/fix_blit_image_view_mismatching
...
Fix blit image/view not compatible
2021-12-15 21:39:53 -08:00
liushuyu
3f765ea9a4
video_core/codecs: (re-spin) refactor ffmpeg searching and handling
2021-12-15 20:57:01 -07:00
bunnei
2f32133ad5
Revert "video_core/codecs: refactor ffmpeg searching and handling in cmake"
2021-12-15 00:02:53 -08:00
bunnei
156215d1fa
Merge pull request #7565 from liushuyu/fix-linux-decoding
...
video_core/codecs: refactor ffmpeg searching and handling in cmake
2021-12-14 22:27:13 -08:00
liushuyu
dd72e4dce4
CI: fix CI on Linux
2021-12-13 22:31:19 -07:00
liushuyu
a2d73eaa10
video_core/codecs: skip decoders that use hw frames ...
...
... this would resolve some edge-cases where multiple devices are
present and ffmpeg is unable to auto-supply the hw surfaces
2021-12-13 22:29:19 -07:00
Morph
14110230c7
maxwell_to_vk: Add ASTC_2D_5X4_UNORM
2021-12-10 22:44:24 -05:00
Feng Chen
1598426493
Fix blit image/view not compatible
2021-12-10 12:41:09 +08:00
Morph
ae4869650a
maxwell_to_vk: Add ASTC_2D_8X5_UNORM
...
- Used by Lego City Undercover
2021-12-09 13:53:53 -05:00
Morph
429320aee8
Merge pull request #7495 from FernandoS27/text-blit-fix-again
...
Texture Cache: Fix mismatching image/views on blits
2021-12-09 05:26:21 -05:00
Morph
47a724780f
renderer_vulkan: Add R16G16_UINT
...
- Used by Immortals Fenyx Rising
2021-12-08 10:55:11 -05:00
bunnei
815189eaf3
Merge pull request #7488 from vonchenplus/support_multiple_videos_playing
...
Support multiple videos playing
2021-12-07 18:38:14 -08:00
ameerj
228a381aed
vk_texture_cache: Add ABGR src format check for D24S8 conversions
2021-12-05 15:54:58 -05:00
ameerj
c22c4f5d59
renderer_opengl: Minor refactoring of filter selection
2021-12-05 15:42:45 -05:00
ameerj
218d790bd6
texture_cache: Fix image convert dimensions assertion
2021-12-05 15:42:45 -05:00
ameerj
b8f3e5157b
blit_image: Refactor upscale factors usage
...
The image view itself can be queried to see if it is being rescaled or not, removing the need to pass the upscale/down shift factors from the texture cache.
2021-12-05 15:42:44 -05:00
ameerj
35d94dcb2b
vk_texture_cache: Add a function to ImageView to check if src image is rescaled
2021-12-05 15:39:00 -05:00
ameerj
4a13f9eecd
blit_image: Refactor ConvertPipeline functions
2021-12-05 15:39:00 -05:00
ameerj
ad99bbf5fe
blit_image: Refactor ConvertPipelineEx functions
...
reduces much of the duplication between the color/depth variants
2021-12-05 15:38:59 -05:00
ameerj
b387a26f30
vk_blit_screen: Minor refactor of filter pipeline selection
2021-12-05 15:35:35 -05:00
ameerj
75c4aec8ab
Revert "Merge pull request #7395 from Morph1984/resolve-comments"
...
This reverts commit d20f91da11
, reversing
changes made to 5082712b4e
.
2021-12-05 15:35:35 -05:00
Feng Chen
5462485cc3
Address feedback
2021-12-05 00:06:14 +08:00
Fernando Sahmkow
a5c212516c
Texture Cache: Fix crashes on NVIDIA.
2021-12-04 11:26:58 +01:00
bunnei
e482dd82b9
Merge pull request #7467 from liushuyu/fix-linux-decoding
...
video_core/codecs: more robust ffmpeg hwdecoder selection logic
2021-12-03 17:11:12 -08:00
liushuyu
e7f10de11a
video_core/cmake: link against libva explicitly ...
...
... to fix build on Flatpak (and self-builds)
2021-12-02 22:35:30 -07:00
liushuyu
a578df4c6b
video_core/codecs: more fixes for VAAPI detection ...
...
* skip impersonated VAAPI implementaions ("imposter detection")
* place VAAPI priority below CUDA/NVDEC/CUVID
2021-12-02 21:31:51 -07:00
liushuyu
20a46790d7
video_core/codec: address comments
2021-12-02 21:01:34 -07:00
liushuyu
cd27f211c8
video_core/codecs: more robust ffmpeg hwdecoder selection logic
2021-12-02 21:01:34 -07:00
Morph
762b8ad448
general: Replace high_resolution_clock with steady_clock
...
On some OSes, high_resolution_clock is an alias to system_clock and is not monotonic in nature. Replace this with steady_clock.
2021-12-02 14:20:43 -05:00
Feng Chen
2c47f8aa18
Support multiple videos playing
2021-12-02 12:48:42 +08:00
Feng Chen
524a9baa7e
Add missing pixel format mapping
2021-11-29 12:39:37 +08:00
Fernando S
3031223153
Merge pull request #7396 from FernandoS27/blit-this-mf
...
TextureCache: Eliminate format deduction as full depth conversion has been supported.
2021-11-28 12:16:31 +01:00
Fernando Sahmkow
5a3463bc2b
Texture Cache: Secure insertions against deletions.
2021-11-28 10:53:27 +01:00
Fernando Sahmkow
ecefc932e6
Texture Cache: Redesigning the blitting system (again).
2021-11-27 11:22:16 +01:00
Fernando Sahmkow
1624f307d0
Texture Cache: Further fix regressions.
2021-11-26 17:03:48 +01:00
liushuyu
60928cf8cd
video_core/codec: address comments
2021-11-24 18:06:38 -07:00
liushuyu
72aa418b0b
video_core/codecs: fix multiple decoding issues on Linux ...
...
* when someone installed Intel video drivers on an AMD system, the
decoder will select the Intel VA-API decoding driver and yuzu will
crash due to incorrect driver selection; the fix will check if the
currently about-to-use driver is loaded in the kernel
* when using NVIDIA driver on Linux with a ffmpeg that does not have
CUDA capability enabled, the decoder will crash; the fix simply
making the decoder prefers the VDPAU driver over CUDA on Linux
2021-11-24 17:23:57 -07:00
Fernando Sahmkow
08674aee87
Texture Cache: Fix issue with blitting 3D textures.
2021-11-22 06:07:21 +01:00
Fernando Sahmkow
1e474fb9d1
Texture Cache: Correct conversion shaders.
2021-11-22 00:21:42 +01:00
Fernando Sahmkow
0902119302
Texture Cache: Always copy on NVIDIA.
2021-11-22 00:06:56 +01:00
Fernando Sahmkow
8532849439
TextureCache: Simplify blitting of D24S8 formats and fix bugs.
2021-11-22 00:00:01 +01:00
Fernando Sahmkow
d7f4434bd5
VulkanTexturECache: Use reinterpret on D32_S8 formats.
2021-11-21 21:09:49 +01:00
Fernando Sahmkow
b96caf200d
HostShaders: Fix D24S8 convertion shaders.
2021-11-21 21:04:04 +01:00
bunnei
d20f91da11
Merge pull request #7395 from Morph1984/resolve-comments
...
general: Resolve comments in PR #7368
2021-11-21 02:42:24 -08:00
bunnei
5082712b4e
Merge pull request #7389 from ameerj/screenshot-1x
...
Fix screenshot dimensions when at 1x scale
2021-11-21 02:31:32 -08:00
Fernando Sahmkow
779f4ac72d
TextureCache: Eliminate format deduction as full depth conversion has been supported.
2021-11-21 05:37:01 +01:00
Morph
a41c6dafea
vk_texture_cache: Mark VkBufferUsageFlags as static constexpr
2021-11-20 21:49:37 -05:00
Morph
095bc88428
vk_blit_image: Consolidate CreatePipelineTargetEx functions
2021-11-20 21:18:37 -05:00
bunnei
ea6fa044f3
Merge pull request #7368 from FernandoS27/vulkan-conv
...
Fix ART Blit detection regression and add D24S8 <-> RGBA8 conv to Vulkan
2021-11-20 16:51:13 -08:00
ameerj
fe1f06c856
Fix screenshot dimensions when at 1x scale
...
This was regressed by ART.
Prior to ART, the screenshots were saved at the title's framebuffer resolution. A misunderstanding of the existing logic led to screenshot dimensions becoming dependent on the host render window size.
This changes the behavior to match how it was prior to ART at 1x, with screenshots now always being the title's framebuffer dimensions scaled by the resolution scaling factor.
2021-11-20 17:50:24 -05:00
Fernando Sahmkow
da2fe81905
TextureCache: Refactor and fix linux compiling.
2021-11-20 14:46:19 +01:00
Fernando Sahmkow
4ca6e9a9e2
TextureCache: Assure full conversions on depth/stencil write shaders.
2021-11-20 06:17:01 +01:00
Fernando Sahmkow
0857f82913
TextureCache: Implement buffer copies on Vulkan.
2021-11-20 06:15:29 +01:00
bunnei
c3e1ffc44b
Merge pull request #7294 from vonchenplus/fix_image_update_error_when_width_too_small
...
Fix image update/download error when width too small
2021-11-19 15:56:27 -08:00
Fernando Sahmkow
e02cff2f69
TextureCache: Add R16G16 to D24S8 converter.
2021-11-20 00:02:12 +01:00
Fernando Sahmkow
1d5e6a51d7
TextureCache: Add B10G11R11 to D24S8 converter.
2021-11-19 23:22:44 +01:00
Fernando Sahmkow
6f896d1fae
TextureCache: Further fixes on resolve algorithm.
2021-11-19 23:02:04 +01:00
Feng Chen
4dd85f86a8
Implement convert legacy to generic
2021-11-19 22:53:58 +08:00
bunnei
c45af76ea0
Merge pull request #7357 from Morph1984/s8_uint
...
video_core: Implement S8_UINT format
2021-11-19 01:16:49 -08:00
Fernando Sahmkow
b805c7bf05
TextureCache: Implement additional D24S8 convertions.
2021-11-19 06:27:44 +01:00
Fernando Sahmkow
0ff228405f
TextureCache: force same image format when resolving an image.
2021-11-19 05:46:57 +01:00
Fernando Sahmkow
b130f648d7
TextureCache: Fix regression caused by ART and improve blit detection algorithm to be smarter.
2021-11-19 03:17:54 +01:00
Fernando Sahmkow
2ec7fcecb7
Vulkan: implement D24S8 <-> RGBA8 convertions.
2021-11-19 03:17:02 +01:00
Morph
dc61b7045b
renderer_vulkan: Implement S8_UINT stencil format
...
It should be noted that on Windows, only nvidia gpus support this format natively as of this commit.
2021-11-18 00:05:51 -05:00
ameerj
f7e155d8b9
gl_texture_cache: Round format conversion PBO to next power of 2
2021-11-17 23:49:44 -05:00
Morph
6dd6dc046c
renderer_opengl: Implement S8_UINT stencil format
2021-11-17 15:05:07 -05:00
Morph
2348eb41f3
video_core: Add S8_UINT stencil format
2021-11-17 15:04:38 -05:00
Feng Chen
894cc9d876
Fix image update/download error when width too small
2021-11-17 12:21:17 +08:00
ameerj
20ed7ba441
texture_cache: Use pixel format conversion when supported by the runtime
2021-11-16 22:32:46 -05:00
ameerj
50c3d53076
gl_texture_cache: Make FormatConversionPass more generic
...
This allows the usage of the FormatConversionPass to be applied to more than the previously used BGR conversion scenarios.
2021-11-16 22:32:11 -05:00
ameerj
35ca6274f4
gl_texture_cache: Rename BGRCopyPass to FormatConversionPass
2021-11-16 22:31:58 -05:00
Fernando Sahmkow
1c8a3d8d29
TextureCache: Fix Automatic Anisotropic.
2021-11-17 03:15:08 +01:00
FernandoS27
1128cc35b9
TextureCache: OGL query device memory if possible.
2021-11-17 01:45:50 +01:00
Fernando Sahmkow
978f598ff6
TextureCache: Fix OGL cleaning
2021-11-17 00:59:46 +01:00
Fernando Sahmkow
282e04bffb
TextureCache: Add automatic anisotropic filtering and refactor code.
2021-11-16 23:14:51 +01:00
Fernando Sahmkow
5230378709
TextureCache: Make a better Anisotropic setter.
2021-11-16 22:11:33 +01:00
Fernando Sahmkow
6c97ab571a
Texture Cache: revert Image changes.
2021-11-16 22:11:33 +01:00
FernandoS27
d46a71e786
HostShader: fix Gaussian filter.
2021-11-16 22:11:33 +01:00
FernandoS27
de1c8c5c2c
Texture Cahe/Shader decompiler: Resize PointSize on rescaling, refactor and make reaper more agressive on 4Gb GPUs.
2021-11-16 22:11:33 +01:00
ameerj
917b2466ad
texture_cache: Refactor Render Target scaling function
2021-11-16 22:11:33 +01:00
ameerj
9fc1fa1b0d
gl_resource_manager: Ensure non EXT_framebuffer objects are created
2021-11-16 22:11:33 +01:00
FernandoS27
099b0b3167
Texture Cache: Fix memory usage on ScaleDown.
2021-11-16 22:11:33 +01:00
FernandoS27
9189aacfe2
OpenGL: Fix viewport/Scissor scaling on downscaling.
2021-11-16 22:11:33 +01:00
FernandoS27
c97c46747d
Vulkan: fix regression.
2021-11-16 22:11:33 +01:00
ameerj
87abab71ff
host_shaders: Misc copyright/style changes
2021-11-16 22:11:33 +01:00
ameerj
99124b7261
FSR: Fix GCC build errors
2021-11-16 22:11:33 +01:00
Marshall Mohror
bb03675485
Vulkan: Reimplement FSR constant generation functions to avoid GCC warnings
2021-11-16 22:11:33 +01:00
ameerj
47369faaab
vk_blit_screen: Fix AA destruction order
2021-11-16 22:11:32 +01:00
Marshall Mohror
dcc5b4f6b0
Presentation: Only use FP16 in scaling shaders on supported devices in Vulkan
2021-11-16 22:11:32 +01:00
ameerj
a39e867c73
renderer_vulkan/blit_image: Use generic color state on Depth to Color blits
...
Fixes Bayonetta 2 on AMD
2021-11-16 22:11:32 +01:00
ameerj
282a4501d9
vk_texture_cache: Refactor 3D scaling helpers
2021-11-16 22:11:32 +01:00
ameerj
93c9eb196f
gl_rasterizer: Fix ScissorTest and Clear when scaling
2021-11-16 22:11:32 +01:00
ameerj
172d4f1e3b
gl_texture_cache: Simplify scaling procedures
2021-11-16 22:11:32 +01:00
Fernando Sahmkow
5c6fa88935
OpenGlTextureCache: Fix state invalidation on rescaling.
2021-11-16 22:11:32 +01:00
Fernando Sahmkow
c5dbd93adb
VulkanBufferCache: Avoid adding barriers between multiple copies.
2021-11-16 22:11:32 +01:00
Fernando Sahmkow
99547d2656
HostShader: Fix gaussian and add attribution.
2021-11-16 22:11:32 +01:00
Fernando Sahmkow
21a8ba0437
Vulkan: Fix FXAA in AMD.
2021-11-16 22:11:32 +01:00
Fernando Sahmkow
6cdfaee7b4
Texture Cache: Fix blitting.
2021-11-16 22:11:32 +01:00
FernandoS27
e6f1ed08fb
Vulkan: Implement FXAA
2021-11-16 22:11:32 +01:00
Marshall Mohror
056894f07a
OpenGL: fix FXAA with scaling
2021-11-16 22:11:32 +01:00
Marshall Mohror
48cf376462
OpenGL: Implement FXAA
2021-11-16 22:11:32 +01:00
FernandoS27
2eff80b47f
QtGUI: Add buttton to toggle the filter.
2021-11-16 22:11:32 +01:00
FernandoS27
9e065b9c7d
VideoCore: Add gaussian filtering.
2021-11-16 22:11:32 +01:00
FernandoS27
bf01b7993d
TextureCache: Improve Reaper.
2021-11-16 22:11:32 +01:00
FernandoS27
bb3e95133d
Vulkan: fix waiting on semaphore.
2021-11-16 22:11:32 +01:00
Marshall Mohror
916b882ea8
Update scaleforce to use FP16
2021-11-16 22:11:32 +01:00
FernandoS27
d37d10e7a7
TextureCache: fix rescaling in aliases and overlap joins.
2021-11-16 22:11:31 +01:00
Marshall Mohror
7506ac4118
Presentation: Fix turning FSR on and off in settings
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
4ad22c7d2b
Video Core: fix building for GCC.
2021-11-16 22:11:31 +01:00
FernandoS27
826a350e2b
Vulkan Rasterizer: Fix clears on integer textures.
2021-11-16 22:11:31 +01:00
FernandoS27
150bc45401
Texture cache: fix Intel with rescaler.
2021-11-16 22:11:31 +01:00
FernandoS27
f3ff8bdc0e
TextureCache: Fix blitting filter in Vulkan and correct viewport/scissor calculation when downscaling.
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
3b61de74e6
Texture Cache: fix memory managment and optimize scaled downloads, uploads.
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
c2ca55c9d5
Texture Cache: ease the requirements of textures being blacklisted.
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
50b4c774cb
Vulkan: Fix Blit Depth Stencil
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
425ab9ef4b
Texture Cache: Fix downscaling and correct memory comsumption.
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
b60966041c
Presentation: add Nearest Neighbor filter.
2021-11-16 22:11:31 +01:00
Marshall Mohror
37cb0377ae
vulkan: Implement FidelityFX Super Resolution
2021-11-16 22:11:31 +01:00
FernandoS27
d4f5193bd3
Texture Cache: Rescale conversions between depth and color
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
ef1dc42635
Texture cache: Fix memory consumption and ignore rating when a depth texture is rendered.
2021-11-16 22:11:31 +01:00
ameerj
618de4e787
vulkan: Fix rescaling push constant usage
2021-11-16 22:11:31 +01:00
Fernando Sahmkow
b7ccc58f23
Texture Cahe: Fix downscaling on SMO.
2021-11-16 22:11:31 +01:00
ameerj
0f14c9379e
texture_cache_base: Remove unused function declarations
2021-11-16 22:11:31 +01:00
ameerj
ebf36f23dd
vk_texture_cache: Use 3D to scale images when blit is unsupported
2021-11-16 22:11:31 +01:00
ameerj
4de584005f
texture_cache: Fix infinitely recursive ImageCanRescale check
2021-11-16 22:11:31 +01:00
ameerj
b1ae935f11
vk_texture_cache: Fix BlitScale of non-2D images
2021-11-16 22:11:31 +01:00
ameerj
abd07e4158
video_core: Refactor resolution scale function
2021-11-16 22:11:31 +01:00
ameerj
b14f2c7c82
texture_cache: Fix image resolves when src/dst are not both scaled
2021-11-16 22:11:30 +01:00
lat9nq
1c93476a80
video_core,yuzu: Move UpdateRescalingInfo call to video_core
...
This only needs to happen once per game boot, so we can just call it
during CreateGPU and be done with it, avoiding the need to call it in
the frontends.
2021-11-16 22:11:30 +01:00
ameerj
3233fa5dc8
gl_texture_cache: Disable scissor test when scaling textures
...
Fixes a bug on BOTW where some objects were no longer being rendered after blitting
2021-11-16 22:11:30 +01:00
ameerj
89a7e566c7
vk_texture_cache: Fix unsupported blit format error checking
2021-11-16 22:11:30 +01:00
ameerj
f8339cd703
vk_texture_cache: Fix early returns on unsupported scales
2021-11-16 22:11:30 +01:00
ameerj
31478c6c1b
video_core: Misc resolution scaling related refactoring
2021-11-16 22:11:30 +01:00
ameerj
88ef04dbaf
texture_cache: Refactor scaled image size calculation
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
237a43004f
Texture Cache: Fix calculations when scaling.
2021-11-16 22:11:30 +01:00
ameerj
e0a3830855
gl_texture_cache: Fix BGR pbo size for scaled textures
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
ea82bd4b7e
Texture Cache: Fix Rescaling on Multisample
2021-11-16 22:11:30 +01:00
Fernando Sahmkow
19ca0c9ab5
TextureCache: Base fixes on rescaling.
2021-11-16 22:11:30 +01:00
ameerj
36f261edef
vk_texture_cache: Simplify scaled image management
2021-11-16 22:11:30 +01:00
ameerj
8183142cd4
gl_texture_cache: Fix scaling backup logic
2021-11-16 22:11:30 +01:00
ameerj
122ddeb7ff
vk_rasterizer: Fix scaling on Y_NEGATE
2021-11-16 22:11:30 +01:00
ameerj
16017ac450
vk_texture_cache: Use nearest neighbor scaling when available
2021-11-16 22:11:30 +01:00
ameerj
27af298e78
gl_texture_cache: Fix depth and integer format scaling blits
2021-11-16 22:11:30 +01:00
ameerj
b027fac794
gl_texture_cache/rescaling_pass: minor cleanup
2021-11-16 22:11:30 +01:00
ameerj
c8a971be91
vk_texture_cache: Minor cleanup
2021-11-16 22:11:30 +01:00
ameerj
6000fe69a4
image_info: Mark MSAA textures as non-rescalable
...
Blitting or resolving multisampled images requires the dimensions of the src and dst to be equal for valid usage, making them difficult for resolution scaling using the current implementation.
2021-11-16 22:11:30 +01:00
ameerj
fcf2b2c78a
gl_texture_cache: Simplify scaling
...
We don't need to reconstruct new textures every time we ScaleUp/ScaleDown. We can scale up once, and revert to the original texture whenever scaling down.
Fixes memory leaks due to glDeleteTextures being deferred for later handling on some drivers
2021-11-16 22:11:29 +01:00
ameerj
ae8d19d17e
Renderers: Unify post processing filter shaders
2021-11-16 22:11:29 +01:00
ameerj
29710f3250
gl_texture_cache: fix scaling on upload
2021-11-16 22:11:29 +01:00
Fernando Sahmkow
a6b88e85bf
Renderer: Implement Bicubic and ScaleForce filters.
2021-11-16 22:11:29 +01:00
Fernando Sahmkow
c5bbbf3902
Texture Cache: fix scaling on upload and stop scaling on base resolution.
2021-11-16 22:11:29 +01:00
ameerj
68e038404c
shader, video_core: Fix GCC build errors
2021-11-16 22:11:29 +01:00
ameerj
65781f88f8
emit_spirv: Fix RescalingLayout alignment
2021-11-16 22:11:29 +01:00
Fernando Sahmkow
d7c9792169
TextureCache: Fix Buffer Views Scaling.
2021-11-16 22:11:29 +01:00
Fernando Sahmkow
4b1393a691
Texture Cache: Correctly fix Blits Rescaling.
2021-11-16 22:11:29 +01:00
ameerj
ed675cfd8c
texture_cache: Disable dst_image scaling in BlitImage
...
Fixes scaling in Super Mario Party
2021-11-16 22:11:29 +01:00
ameerj
dc28284437
emit_spirv: Fix RescalingLayout alignment
2021-11-16 22:11:29 +01:00
ReinUsesLisp
e66d5b88a6
shader: Properly scale image reads and add GL SPIR-V support
...
Thanks for everything!
2021-11-16 22:11:29 +01:00
ReinUsesLisp
fc9bb3c3fe
shader: Properly blacklist and scale image loads
2021-11-16 22:11:29 +01:00
ReinUsesLisp
c7a1cbad44
texture_cache: Add getter to query if image view is rescaled
2021-11-16 22:11:29 +01:00
ReinUsesLisp
526e47f148
vk_rasterizer: Minor style change
2021-11-16 22:11:29 +01:00
ReinUsesLisp
c9238555f7
gl_texture_cache: Fix scaling blits
2021-11-16 22:11:29 +01:00
ReinUsesLisp
cfeb161c7e
glsl/glasm: Pass and use scaling parameters in shaders
2021-11-16 22:11:29 +01:00
ReinUsesLisp
4a512d6827
gl_rasterizer: Properly scale viewports and scissors
2021-11-16 22:11:29 +01:00
ameerj
05d98d9bbf
gl_texture_cache: Fix multi layered texture Scale
2021-11-16 22:11:29 +01:00
ameerj
b6060873ce
gl_compute_pipeline: Add downscale factor to shader uniforms
2021-11-16 22:11:29 +01:00
ameerj
9bc7b04ca5
gl_rasterizer: Fix rescale dirty state checking
2021-11-16 22:11:29 +01:00
ameerj
f086c82e1f
gl_graphics_pipeline: Add downscale factor to shader uniforms
2021-11-16 22:11:28 +01:00
ReinUsesLisp
2182d25750
texture_cache: Fix blacklists on compute
2021-11-16 22:11:28 +01:00
ReinUsesLisp
56ccda1d99
texture_cache: Simplify image view queries and blacklisting
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
48d81506a3
Vulkan: Fix downscaling Blit.
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
07c564f38b
Texture Cache: Implement Rating System.
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
cee7eba64e
OpenGL: set linear mag filter when blitting a downscaled image.
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
117f8ee7a4
Vulkan: Fix AA when rescaling.
2021-11-16 22:11:28 +01:00
Fernando Sahmkow
0e8cf38f39
Texture Cache: Implement Blacklisting.
2021-11-16 22:11:28 +01:00
ReinUsesLisp
d2388dd0d0
vulkan: Implement rescaling shader patching
2021-11-16 22:11:28 +01:00
ReinUsesLisp
dc72d4d4f5
vk_texture_cache: Properly scale blit source images
2021-11-16 22:11:28 +01:00
ReinUsesLisp
baf0993d5c
vk_graphics_pipeline: Use Shader::NumDescriptors when possible
2021-11-16 22:11:28 +01:00
ReinUsesLisp
6f3a41abe2
opengl: Use Shader::NumDescriptors when possible
2021-11-16 22:11:28 +01:00
ReinUsesLisp
74efa57c1b
texture_cache: Add image getters
2021-11-16 22:11:28 +01:00
ameerj
fad2c92a39
gl_texture_cache: Simplify rescaling
2021-11-16 22:11:28 +01:00
ameerj
d5143c83a9
texture_cache: Fix typo in aliased image rescaling
2021-11-16 22:11:28 +01:00
ReinUsesLisp
0fb4b84383
vk_texture_cache: Simplify and optimize scaling blits
2021-11-16 22:11:28 +01:00
ReinUsesLisp
520c4a44f6
vk_texture_cache: Fix scaling blit validation errors
2021-11-16 22:11:28 +01:00
ameerj
fddf372c68
gl_texture_cache: Implement ScaleDown
2021-11-16 22:11:27 +01:00
ameerj
0a6c895af7
gl_texture_cache: Rescale fixes for multi-layered textures
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
dfc65cd0a3
Texture Cache: Implement Rescaling on Aliases and Blits.
2021-11-16 22:11:27 +01:00
ReinUsesLisp
d464b122d5
Fix blits with mips
2021-11-16 22:11:27 +01:00
ReinUsesLisp
973f8f1d08
Fix blits
2021-11-16 22:11:27 +01:00
ameerj
de66a69ed4
renderer_gl: Resolution scaling fixes
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
8704c93913
TextureCache: Fix rescaling of ImageCopies
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
778700ff9d
TextureCache: Modify Viewports/Scissors according to Rescale.
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
71ca84d829
Settings: eliminate rescaling_factor.
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
84f2aea896
Texture Cache: More rescaling fixes.
2021-11-16 22:11:27 +01:00
ameerj
10e5065a5c
gl_texture_cache: WIP texture rescale
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
ba18047e8d
Texture Cache: Implement Vulkan UpScaling & DownScaling
2021-11-16 22:11:27 +01:00
Fernando Sahmkow
22f4b290b6
VideoCore: Initial Setup for the Resolution Scaler.
2021-11-16 22:11:27 +01:00
ameerj
c50f170597
codes: Rename ComposeFrameHeader to ComposeFrame
...
These functions were composing the entire frame, not just the headers. Rename to more accurately describe them.
2021-11-12 23:52:19 -05:00
ameerj
d35391b9f4
vp8: Implement header composition
...
Enables frame decoding with FFmpeg
2021-11-12 23:52:18 -05:00
ameerj
b39b33b1fe
codecs: Add VP8 codec class
2021-11-12 19:49:45 -05:00
Feng Chen
70d51f72ec
vulkan_device: Add missing vulkan image format R5G6B5 in GetFormatProperties
...
- Used by Dragon Quest Builders
2021-11-05 10:31:40 -04:00
Morph
d607ceacf4
gl_rasterizer: Remove unused includes
...
This removes unused includes, especially the core includes which were causing this file to be recompiled every time files included by those headers are modified.
2021-10-31 23:57:51 -04:00
lat9nq
61121d1b22
gl_device: Force GLASM on NVIDIA drivers 495-496
...
GLSL shaders currently do not render correctly on the recent NVIDIA
drivers. This adds a check that forces assembly shaders for these
drivers since they seem unaffected and adds a warning informing of the
decision.
Developers can disable the check by enabling graphics debugging.
2021-10-28 19:38:49 -04:00
Fernando S
5299554bb0
Merge pull request #7206 from vonchenplus/fix_vulkan_viewport_issue
...
Vulkan Rasterizer: Fix viewport issue
2021-10-24 01:53:04 +02:00
Ameer J
494e34af6a
Merge pull request #7070 from FernandoS27/want-you-bad
...
Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan.
2021-10-23 18:02:23 -04:00
Fernando Sahmkow
ad8afaf1ef
Vulran Rasterizer: address feedback.
2021-10-23 23:46:29 +02:00
Feng Chen
b769bea61b
Fix vulkan viewport issue
2021-10-22 22:56:31 +08:00
bunnei
c871320760
Merge pull request #7198 from ameerj/settings-chrono
...
settings: Remove std::chrono usage
2021-10-19 09:55:50 -07:00
ameerj
ef811c6425
settings: Remove std::chrono usage
...
Alleviates the dependency on chrono for all files that include settings.h
2021-10-17 00:37:49 -04:00
Ameer J
3791c7ca82
Merge pull request #7077 from FernandoS27/face-down
...
A series of fixes to queries and indexed samplers.
2021-10-16 21:41:54 -04:00
Ameer J
5b735a4c9d
Merge pull request #7127 from FernandoS27/i-saw-a-wabbit
...
A few fixes on Vulkan and Rasterizer Caching
2021-10-16 21:37:43 -04:00
Morph
894b483a0d
Merge pull request #7157 from ameerj/vic-surface-size
...
vic: Use the minimum of surface/frame dimensions when writing the final frame to the GPU
2021-10-13 20:41:17 -04:00
Ameer J
018cf3853e
Merge pull request #7109 from vonchenplus/fix_h264_max__reference_num_error
...
h264: Use max allowed max_num_ref_frames when using CPU decoding
2021-10-12 14:08:37 -04:00
ameerj
f346b04d12
vic: Use the minimum of surface/frame dimensions when writing the final frame to the GPU
...
Addresses possible buffer overflow behavior.
2021-10-10 18:44:16 -04:00
Feng Chen
ba8be75037
h264: Use max allowed max_num_ref_frames when using CPU decoding
2021-10-10 20:07:19 +08:00
Valeri
0394e4bb8e
vic: Allow surface to be higher than frame
...
Touhou Genso Wanderer Lotus Labyrinth R decodes 1920x1080 videos into 1920x1088 surface.
Only allow mismatch for height, since larger width would result in increasingly offset rows and somewhat defeat entire purpose of this check.
2021-10-09 20:22:09 +03:00
ameerj
403fc86c11
vic: Avoid memory corruption when multiple streams with different dimensions are decoded
...
This is a work around to avoid buffer overflow errors until multi channel/multi stream decoding is supported.
2021-10-08 01:22:38 -04:00
ameerj
5aae61775f
vic: Refactor frame writing methods
2021-10-07 14:56:44 -04:00
ameerj
899fdb9c44
vic: Implement RGBX frame format
2021-10-07 11:06:57 -04:00
Fernando S
f84328934f
Merge pull request #7118 from ameerj/vc-gpu-impl
...
gpu: Migrate implementation to the cpp file
2021-10-06 20:02:31 +02:00
bunnei
5b2fa8dd41
Merge pull request #7115 from ameerj/log-compile
...
common/logging: Reduce dependent header include overhead
2021-10-05 10:05:46 -07:00
bunnei
158a693111
Merge pull request #7101 from ameerj/vk-tess-topology
...
vk_graphics_pipeline: Force patch list topology when tessellation is used
2021-10-04 15:37:32 -07:00
Fernando Sahmkow
0498669b4b
Vulkan: Fix failing barrier on refresh.
2021-10-04 20:56:15 +02:00
FernandoS27
bb8bf740e9
RasterizerInterface: Correct size of CPU addresses to cache.
2021-10-04 20:47:31 +02:00
FernandoS27
7f4de3466a
Vulkan: Fix the master Semaphore
2021-10-04 20:46:58 +02:00
ameerj
6c0d902373
nvhost_ctrl: Refactor usage of gpu.LockSync()
...
This seems to only be used to protect a later gpu function call. So we can move the lock into that call instead.
2021-10-03 00:35:57 -04:00
ameerj
427bf76e62
gpu: Migrate implementation to the cpp file
2021-10-03 00:35:57 -04:00
ameerj
5daf3abe65
common/logging: Move Log::Entry declaration to a separate header
...
This reduces the load of requiring to include std::chrono in all files which include log.h
2021-10-01 20:48:49 -04:00
bunnei
8bd5742349
Merge pull request #7061 from ameerj/dma-buffer-misc
...
buffer_cache, maxwell_dma: Minor refactoring and code fixes
2021-09-30 12:34:28 -07:00
bunnei
91341b421d
Merge pull request #7036 from ameerj/ogl-bgr-v2
...
gl_texture_cache: Unify BGR copy passes using PBOs
2021-09-29 16:10:56 -07:00
ameerj
6f35fb8d26
vk_graphics_pipeline: Force patch list topology when tessellation is used
...
Fixes a crash on some drivers when tessellation is used but the IA topology is not patch list.
2021-09-28 16:39:42 -04:00
bunnei
24c0dde958
Merge pull request #7076 from ameerj/amd-botw
...
vk_texture_cache: Disable cube compatibility flag on non-mesa AMD GCN4 and earlier
2021-09-28 10:46:56 -07:00
Morph
5114819b6b
Merge pull request #7078 from ameerj/vc-jthread-fixes
...
video_core: Fix jthread related hangs when stopping emulation
2021-09-26 16:40:13 -04:00
ameerj
73666fb262
general: Update style to clang-format-12
2021-09-24 15:52:05 -04:00
ameerj
ab63a193d7
video_core: Fix jthread related hangs when stopping emulation
...
jthread on some compilers is more picky when it comes to the order in which objects are destroyed.
2021-09-23 20:34:02 -04:00
ameerj
1e1ecca691
vk_texture_cache: Disable cube compatibility flag on non-mesa AMD GCN4 and earlier
...
Fixes rainbow textures on BOTW.
2021-09-23 19:40:53 -04:00
Fernando Sahmkow
d702b393a4
Vulkan Query Cache: make sure to wait for the query result.
2021-09-24 01:14:17 +02:00
Fernando Sahmkow
8fdb51ab46
QueryCache: Flush queries in order of running.
2021-09-24 01:13:42 +02:00
Fernando Sahmkow
60a3980561
Vulkan Rasterizer: Correct DepthBias/PolygonOffset on Vulkan.
2021-09-23 03:49:10 +02:00
bunnei
7b22d61fb1
Merge pull request #7003 from ameerj/unlocked-present-mode
...
vk_swapchain: Use immediate present mode when mailbox is unavailable and FPS is unlocked
2021-09-20 14:34:21 -07:00
ameerj
24049591f6
maxwell_dma: Minor refactoring
2021-09-19 20:36:41 -04:00
ameerj
1ea8073783
buffer_cache: Minor fixes
...
Loop through the tmp_intervals by reference, rather than by copy, and fix gl clear buffer size calculation.
2021-09-19 20:35:07 -04:00
bunnei
a9c3619d26
Merge pull request #7019 from ameerj/videocore-jthread
...
videocore: Use std::jthread for worker threads
2021-09-18 20:37:40 -07:00
bunnei
ff54d9615f
Merge pull request #7011 from ameerj/vk-validation-0x0
...
vulkan_debug_callback: Ignore InvalidCommandBuffer-VkDescriptorSet errors
2021-09-16 17:17:04 -07:00
ameerj
22162f906b
host_shaders: Remove opengl_copy_bgra.comp
2021-09-16 19:49:13 -04:00
ameerj
ab808fe7cf
gl_texture_cache: Migrate BGRCopyPass from util_shaders
...
The BGR copies no longer use shaders.
2021-09-16 19:49:12 -04:00
Fernando S
a606b1448b
Merge pull request #7027 from ameerj/sorry-amd
...
vulkan_device: Reorder Float16Int8 declaration
2021-09-16 07:05:58 +02:00
ameerj
e3c153efa4
vulkan_device: Reorder Float16Int8 declaration
...
This variable was going out of scope before its usage in the vulkan device creation, causing a crash on very specific drivers.
2021-09-16 00:54:24 -04:00
ameerj
5601e1cb00
Revert "Merge pull request #7006 from FernandoS27/a-motherfucking-driver"
...
This reverts commit 62e88d0e74
, reversing
changes made to edf3da346f
.
2021-09-16 00:51:22 -04:00
ameerj
7f737b022a
util_shaders: Unify BGRA copy passes
2021-09-15 21:10:52 -04:00
ameerj
84f7e7e91c
vk_scheduler: Use std::jthread
2021-09-15 20:49:07 -04:00
ameerj
877cd60b00
gpu: Use std::jthread for async gpu thread
2021-09-15 20:49:07 -04:00
Morph
2df2b3719a
renderers: Log total pipeline count
2021-09-14 13:18:26 -04:00
ameerj
db1c4b125f
vulkan_debug_callback: Ignore InvalidCommandBuffer-VkDescriptorSet errors
...
This validation error is spammed on some titles, asserting that VkDescriptorSet 0x0[] was destroyed.
This is likely a validation layer bug when using VK_KHR_push_descriptor, which can avoid using traditional VkDescriptorSet. It should be safe to ignore for now.
2021-09-13 23:08:59 -04:00
Morph
d86a9b9a4b
Merge pull request #6943 from FernandoS27/omae-wa-mou-shindeiru
...
Vulkan: Disable VK_EXT_SAMPLER_FILTER_MINMAX in GCN AMD
2021-09-13 17:33:15 -04:00
Fernando Sahmkow
7a712da2b3
Vulkan: Disable VK_EXT_SAMPLER_FILTER_MINMAX in GCN AMD since it's broken.
2021-09-13 23:29:57 +02:00
Morph
62e88d0e74
Merge pull request #7006 from FernandoS27/a-motherfucking-driver
...
Vulkan: Blacklist Int8Float16 Extension on AMD on driver 21.9.1
2021-09-13 17:25:56 -04:00
Morph
fde9b84b21
Merge pull request #6944 from FernandoS27/dear-drunk-me
...
Vulkan/Descriptors: Increase sets per pool on AMD propietary driver.
2021-09-13 17:20:07 -04:00
Fernando Sahmkow
e7c8a0bb23
Vulkan: Blacklist Int8Float16 Extension on AMD on driver 21.9.1
2021-09-13 23:17:37 +02:00
Fernando S
1bb28dfe2c
Merge pull request #7001 from ameerj/wario-fix
...
vk_rasterizer: Fix dynamic StencilOp updating when two faces are enabled
2021-09-13 23:16:59 +02:00
Fernando Sahmkow
e7ca37b1e5
Vulkan/Descriptors: Increase sets per pool on AMFD propietary driver.
2021-09-13 23:09:18 +02:00
ameerj
35e5a67a83
vk_swapchain: Use immediate present mode when mailbox is unavailable and FPS is unlocked
...
Allows drivers that do not support VK_PRESENT_MODE_MAILBOX_KHR the ability to present at a framerate higher than the monitor's refresh rate when the FPS is unlocked.
2021-09-12 20:32:23 -04:00
Mai M
e4318d2207
Merge pull request #7002 from ameerj/vk-state-unused
...
vk_state_tracker: Remove unused function
2021-09-12 17:31:56 -04:00
ameerj
678f73069f
vk_rasterizer: Fix dynamic StencilOp updating when two faces are enabled
...
This function was incorrectly using the stencil_two_side_enable register when dynamically updating the StencilOp.
2021-09-12 16:19:12 -04:00
ameerj
8e289ade15
vk_state_tracker: Remove unused function
2021-09-12 15:28:24 -04:00
Morph
e67463df24
shader_environment: Add missing <algorithm> include
2021-09-11 17:19:16 -04:00
Morph
63b4c8f9f7
vk_descriptor_pool: Add missing <algorithm> include
2021-09-11 17:19:16 -04:00
Morph
76abf55f25
slot_vector: Add missing <algorithm> include
2021-09-11 17:19:15 -04:00
Morph
554c46d186
video_core/memory_manager: Add missing <algorithm> include
2021-09-11 17:19:15 -04:00
Morph
ae028ddf22
codec: Add missing <string_view> include
2021-09-11 17:19:14 -04:00
Fernando S
be4e192903
Merge pull request #6846 from ameerj/nvdec-gpu-decode
...
nvdec: Add GPU video decoding for all capable drivers and platforms
2021-09-11 23:11:32 +02:00
Fernando S
82c867164b
Merge pull request #6901 from ameerj/vk-clear-bits
...
vk_rasterizer: Only clear depth/stencil buffers when specified in attachment aspect mask
2021-09-11 22:36:22 +02:00
Fernando S
ec6490f5ad
Merge pull request #6941 from ameerj/swapchain-srgb
...
vk_swapchain: Prefer linear swapchain format when presenting sRGB images
2021-09-11 22:36:03 +02:00
Fernando S
472aad69db
Merge pull request #6953 from ameerj/anv-semaphore
...
renderer_vulkan: Wait on present semaphore at queue submit
2021-09-11 22:35:52 +02:00
Feng Chen
0292374807
Fix blend equation enum error
2021-09-07 10:12:09 +08:00
ameerj
7d854fbdb0
renderer_vulkan: Wait on present semaphore at queue submit
...
The present semaphore is being signalled by the call to acquire the
swapchain image. This semaphore is meant to be waited on when rendering
to the swapchain image. Currently it is waited on when presenting, but
moving its usage to be waited on in the command buffer submission allows
for proper usage of this semaphore.
Fixes the device lost when launching titles on the Intel Linux Mesa driver.
2021-09-02 13:13:20 -04:00
bunnei
b2572a56d3
Merge pull request #6900 from ameerj/attr-reorder
...
structured_control_flow: Add DemoteCombinationPass
2021-09-01 17:36:26 -07:00
bunnei
956171f024
Merge pull request #6897 from FernandoS27/pineapple-does-not-belong-in-pizza
...
Project <tentative title>: Rework Garbage Collection.
2021-08-31 09:11:21 -07:00
bunnei
ec19d9594f
Merge pull request #6879 from ameerj/decoder-assert
...
vk_blit_screen: Fix non-accelerated texture size calculation
2021-08-30 15:24:04 -07:00
ameerj
4fda7f1c82
structured_control_flow: Conditionally invoke demote reorder pass
...
This is only needed on select drivers when a fragment shader discards/demotes.
2021-08-30 11:46:24 -04:00
Fernando Sahmkow
fe0acec539
Garbage Collection: Make it more agressive on high priority mode.
2021-08-29 18:57:17 +02:00
Fernando Sahmkow
ff48f06fb9
Garbage Collection: Adress Feedback.
2021-08-29 18:19:53 +02:00
ameerj
27f8f3333f
vulkan_device: Enable VK_KHR_swapchain_mutable_format if available
...
Silences validation errors when creating sRGB image views of linear swapchain images
2021-08-29 02:03:36 -04:00
ameerj
3c65c8580f
vk_swapchain: Prefer linear swapchain format when presenting sRGB images
...
Fixes broken sRGB when presenting from a secondary GPU.
2021-08-29 02:03:35 -04:00
Fernando Sahmkow
ba82bb359b
Garbage Collection: enable as default, eliminate option.
2021-08-28 17:55:37 +02:00
Fernando Sahmkow
d540d284b5
VideoCore: Rework Garbage Collection.
2021-08-28 17:54:12 +02:00
ameerj
eb2624ed65
vp9_types: Minor refactor of VP9 info structs.
2021-08-25 21:42:43 -04:00
ameerj
3de38c9a70
vp9_types: Remove unused Vp9PictureInfo members
2021-08-25 21:29:22 -04:00
Fernando S
3843995ceb
Merge pull request #6919 from ameerj/vk-int8-capability
...
vulkan_device: Add a check for int8 support
2021-08-25 23:46:08 +02:00
Ameer J
de71a4d70d
Merge pull request #6894 from FernandoS27/bunneis-left-ear
...
GPU_MemoryManger: Fix GetSubmappedRange.
2021-08-25 16:50:03 -04:00
ameerj
4d535799eb
vulkan_device: Add a check for int8 support
...
Silences validation errors when shaders use int8 without specifying its support to the API
2021-08-24 21:22:41 -04:00
ameerj
e0397f00d0
vk_rasterizer: Only clear depth and stencil buffers when set in attachment aspect mask
...
Silences validation errors for clearing the depth/stencil buffers of framebuffer attachments that were not specified to have depth/stencil usage.
2021-08-21 02:37:15 -04:00
Ameer J
bde6b899a1
Merge pull request #6888 from v1993/patch-3
...
video_core: eliminate constant ternary
2021-08-21 00:16:18 -04:00
Fernando Sahmkow
ef2066b272
GPU_MemoryManger: Fix GetSubmappedRange.
2021-08-19 22:57:22 +02:00
Valeri
4fd655cb46
video_core: eliminate constant ternary
...
`via_header_index` is already checked above, so it would never be true in this branch
2021-08-19 21:22:05 +03:00
ameerj
b384129c63
h264: Lower max_num_ref_frames
...
GPU decoding seems to be more picky when it comes to the maximum number of reference frames.
2021-08-16 14:40:53 -04:00
ameerj
cd016d3cb5
configure_graphics: Add GPU nvdec decoding as an option
...
Some system configurations may see visual regressions or lower performance using GPU decoding compared to CPU decoding. This setting provides the option for users to specify their decoding preference.
Co-Authored-By: yzct12345 <87620833+yzct12345@users.noreply.github.com>
2021-08-16 14:40:53 -04:00
ameerj
a832aa699f
codec: Improve libav memory alloc and cleanup
2021-08-16 14:40:53 -04:00
ameerj
bc3efb79cc
codec: Fallback to CPU decoding if no compatible GPU format is found
2021-08-16 14:40:53 -04:00
lat9nq
92bc51b66a
cmake: Add VDPAU and NVDEC support to FFmpeg
...
Adds {h264_,vp9_}{nvdec,vdpau} hwaccels.
2021-08-16 14:40:52 -04:00
ameerj
537c6ac8fe
vk_blit_screen: Fix non-accelerated texture size calculation
...
Addresses the potential OOB access in UnswizzleTexture.
2021-08-16 14:28:10 -04:00
Merry
1770503185
xbyak: Update include path
2021-08-15 19:26:38 +01:00
bunnei
87d63b858a
Merge pull request #6861 from yzct12345/const-mempy-is-all-the-speed
...
decoders: Optimize memcpy for the other functions
2021-08-15 02:38:12 -07:00
bunnei
0509fe3377
Merge pull request #6838 from ameerj/sws-align
...
vic: Specify sws_scale height stride.
2021-08-12 11:28:33 -07:00
ameerj
356e10898f
codec: Replace deprecated av_init_packet usage
2021-08-12 01:28:01 -04:00
ameerj
659039ca6d
nvdec: Implement GPU accelerated decoding for all platforms
...
Supplements the VAAPI intel gpu decoder by implementing the D3D11VA decoder for Windows, and CUVID/VDPAU for Nvidia and AMD on drivers linux respectively.
2021-08-12 01:28:01 -04:00
yzct12345
430255caf8
decoders: Templates allow memcpy optimizations
2021-08-12 04:45:25 +00:00
Fernando S
6a082df427
Merge pull request #6820 from yzct12345/split-cache
...
texture_cache: Split out template definitions
2021-08-10 12:23:05 +02:00
ameerj
a779cede7c
vic: Specify sws_scale height stride.
...
Silences a sws_scale runtime warning about unaligned strides.
2021-08-09 23:24:16 -04:00
Mai M
2da91ec75b
Merge pull request #6844 from ameerj/vp9-empty-frame
...
vp9: Ensure the first frame is complete
2021-08-08 19:02:39 -04:00
ameerj
fa22695705
vp9: Ensure the first frame is complete
...
Silences a runtime error due to the first frame missing the frame data, and being set to hidden despite being a key-frame.
2021-08-08 13:49:00 -04:00
yzct12345
c4eafcc861
texture_cache: Address ameerj's review
2021-08-08 11:02:51 +00:00
Fernando S
859deda3bb
Merge pull request #6834 from K0bin/buffer-image-granularity
...
Respect Vulkan bufferImageGranularity
2021-08-08 11:57:40 +02:00
bunnei
bd0e1d3a25
Merge pull request #6830 from ameerj/nvdec-unimpld-codec
...
nvdec: Better logging for unimplemented codecs
2021-08-07 12:37:39 -07:00
Robin Kertels
bb29dcb7f2
vulkan_memory_allocator: Respect bufferImageGranularity
2021-08-07 15:28:05 +02:00
ameerj
928b64d2ce
nvdec: Better logging for unimplemented codecs
2021-08-07 01:08:33 -04:00
bunnei
268b5764c7
Merge pull request #6791 from ameerj/astc-opt
...
astc_decoder: Various performance and memory optimizations
2021-08-06 21:45:24 -07:00
yzct12345
e80323b8b0
texture_cache: Address ameerj's review
2021-08-07 01:27:47 +00:00
bunnei
f183668a87
Merge pull request #6799 from ameerj/vp9-fixes
...
nvdec: Fix VP9 reference frame refreshes
2021-08-06 17:46:46 -07:00
ameerj
e3688f0627
vp9: Cleanup unused variables
...
With reference frames refreshes fix, we no longer need to buffer two frames in advance.
We can also remove other unused or otherwise unneeded variables.
2021-08-06 20:08:11 -04:00
ameerj
a3f80a97a3
vp9: Fix reference frame refreshes
...
This resolves the artifacting when decoding VP9 streams.
2021-08-06 20:08:08 -04:00
yzct12345
02e98f6c93
texture_cache: Don't change copyright year
2021-08-05 20:52:12 +00:00
yzct12345
5566f3dbc0
texture_cache: Address ameerj's review
2021-08-05 20:46:24 +00:00
yzct12345
f9563c8f24
texture_cache: Split templates out
2021-08-05 13:52:30 +00:00
yzct12345
2868d4ba84
nvdec: Implement VA-API hardware video acceleration ( #6713 )
...
* nvdec: VA-API
* Verify formatting
* Forgot a semicolon for Windows
* Clarify comment about AV_PIX_FMT_NV12
* Fix assert log spam from missing negation
* vic: Remove forgotten debug code
* Address lioncash's review
* Mention VA-API is Intel/AMD
* Address v1993's review
* Hopefully fix CMakeLists style this time
* vic: Improve cache locality
* vic: Fix off-by-one error
* codec: Async
* codec: Forgot the GetValue()
* nvdec: Address ameerj's review
* codec: Fallback to CPU without VA-API support
* cmake: Address lat9nq's review
* cmake: Make VA-API optional
* vaapi: Multiple GPU
* Apply suggestions from code review
Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
* nvdec: Address ameerj's review
* codec: Use anonymous instead of static
* nvdec: Remove enum and fix memory leak
* nvdec: Address ameerj's review
* codec: Remove preparation for threading
Co-authored-by: Ameer J <52414509+ameerj@users.noreply.github.com>
2021-08-03 23:43:11 -04:00
yzct12345
f56d0db5bd
decoders: Optimize swizzle copy performance ( #6790 )
...
This makes UnswizzleTexture up to two times faster. It is the main bottleneck in NVDEC video decoding.
2021-08-02 11:18:58 -04:00
Fernando S
30f0b7cf31
Merge pull request #6720 from ameerj/vk-screenshot
...
renderer_vulkan: Implement screenshots
2021-08-01 13:31:33 +02:00
Ameer J
db32c3762b
Merge pull request #6765 from ReinUsesLisp/y-negate-vk
...
vk_rasterizer: Flip viewport on Y_NEGATE
2021-08-01 01:47:37 -04:00
ameerj
c439fc9be9
astc_decoder: Reduce workgroup size
...
This reduces the amount of over dispatching when there are odd dimensions (i.e. ASTC 8x5), which rarely evenly divide into 32x32.
2021-08-01 01:22:27 -04:00
ameerj
5ab8053511
astc_decoder: Compute offset swizzles in-shader
...
Alleviates the dependency on the swizzle table and a uniform which is constant for all ASTC texture sizes.
2021-08-01 01:22:26 -04:00
ameerj
b2862e4772
astc_decoder: Make use of uvec4 for payload data
2021-07-31 22:28:04 -04:00
ameerj
a75d70fa90
astc_decoder: Simplify Select2DPartition
2021-07-31 21:36:26 -04:00
ameerj
5665d05547
astc_decoder: Optimize the use EncodingData
...
This buffer was a list of EncodingData structures sorted by their bit length, with some duplication from the cpu decoder implementation.
We can take advantage of its sorted property to optimize its usage in the shader.
Thanks to wwylele for the optimization idea.
2021-07-31 21:36:26 -04:00
ameerj
15c0c213b1
astc.h: Move data to cpp implementation
...
Moves leftover values that are no longer used by the gpu decoder back to the cpp implementation.
2021-07-31 21:26:42 -04:00
bunnei
7530594602
Merge pull request #6759 from ReinUsesLisp/pipeline-statistics
...
renderer_vulkan: Add setting to log pipeline statistics
2021-07-30 11:18:52 -07:00
ReinUsesLisp
b185567a03
vk_rasterizer: Flip viewport on Y_NEGATE
...
Matches OpenGL's behavior. I don't believe this register flips geometry,
but we have to try to match behavior on both backends.
2021-07-29 02:17:53 -03:00
ameerj
7ac99bb127
renderers: Add explicit invert_y bool to screenshot callback
...
OpenGL and Vulkan images render in different coordinate systems. This allows us to specify the coordinate system of the screenshot within each renderer
2021-07-28 21:46:08 -04:00
ameerj
75e7f54fb0
renderer_vulkan: Implement screenshots
2021-07-28 21:45:55 -04:00
ameerj
548bac8989
vk_blit_screen: Add public CreateFramebuffer method
2021-07-28 21:43:02 -04:00
ameerj
1e6c5d323d
vk_blit_screen: Make Draw method more generic
...
Allows specifying the framebuffer and render area dimensions, rather than being hard coded for the render window.
2021-07-28 21:37:30 -04:00
ReinUsesLisp
3b006f4fe2
renderer_vulkan: Add setting to log pipeline statistics
...
Use VK_KHR_pipeline_executable_properties when enabled and available to
log statistics about the pipeline cache in a game.
For example, this is on Turing GPUs when generating a pipeline cache
from Super Smash Bros. Ultimate:
Average pipeline statistics
==========================================
Code size: 6433.167
Register count: 32.939
More advanced results could be presented, at the moment it's just an
average of all 3D and compute pipelines.
2021-07-27 21:29:24 -03:00
bunnei
92887a65f0
Merge pull request #6749 from lioncash/rtarget
...
render_target: Add missing initializer for size extent
2021-07-27 17:28:53 -07:00
Rodrigo Locatti
ab206d6378
Merge pull request #6748 from lioncash/engine-init
...
video_core/engine: Consistently initialize rasterizer pointers
2021-07-27 16:17:20 -03:00
bunnei
2717e79c74
Merge pull request #6745 from lioncash/copies
...
video_core: Remove some unused variables
2021-07-27 11:38:32 -07:00
Lioncash
00e100de08
render_target: Add missing initializer for size extent
...
Everything else has a default constructor that does the straightforward
thing of initializing most members to a default value, except for the
size.
We explicitly initialize the size (and others, for consistency), to
prevent potential uninitialized reads from occurring. Particularly given
the largeish surface area that this struct is used in.
2021-07-27 07:41:21 -04:00
Lioncash
f8964dd89a
video_core/engine: Consistently initialize rasterizer pointers
...
Ensures all of the engines have consistent and deterministic
initialization of the rasterizer pointers.
2021-07-27 07:30:57 -04:00
Lioncash
8c82c594f0
vulkan_wrapper: Fix SetObjectName() always indicating objects as images
...
We should be using the passed in object type instead.
2021-07-27 07:19:15 -04:00
Lioncash
ec56a17acd
buffer_cache: Remove unused small_vector in CommitAsyncFlushesHigh()
...
Given this is non-trivial, the constructor is required to execute, so
this removes a bit of redundant codegen.
2021-07-27 06:24:44 -04:00
Lioncash
075a744e38
gl_shader_cache: Remove unused variable
2021-07-27 06:23:49 -04:00
Lioncash
296728ec46
vk_compute_pass: Remove unused captures
...
Resolves two compiler warnings.
2021-07-27 06:17:52 -04:00
bunnei
d6c799494c
Merge pull request #6696 from ameerj/speed-limit-rename
...
general: Rename "Frame Limit" references to "Speed Limit"
2021-07-26 18:51:00 -07:00
Rodrigo Locatti
7511f65e31
Merge pull request #6741 from ReinUsesLisp/stream-remove
...
vk_stream_buffer: Remove unused stream buffer
2021-07-26 20:35:01 -03:00
Rodrigo Locatti
1a94b3f452
Merge pull request #6740 from K0bin/hvv-fallback
...
Handle allocation failure in Staging buffer
2021-07-26 20:34:44 -03:00
Robin Kertels
75050c788c
vk_staging_buffer_pool: Fall back to host memory when allocation fails
2021-07-26 23:37:18 +02:00
Rodrigo Locatti
c6991fa900
Merge pull request #6728 from ReinUsesLisp/null-buffer-usage
...
vk_buffer_cache: Add transform feedback usage to null buffer
2021-07-26 18:30:45 -03:00
ReinUsesLisp
5f9a4817a5
vk_stream_buffer: Remove unused stream buffer
...
Remove unused file.
2021-07-26 18:19:53 -03:00
ReinUsesLisp
771dcb2a56
vk_compute_pass: Fix pipeline barrier for indexed quads
...
Use an index buffer barrier instead of a vertex input read barrier.
2021-07-26 05:51:09 -03:00
ReinUsesLisp
27ed6e7c2b
vk_buffer_cache: Add transform feedback usage to null buffer
...
Fixes bad API usages on Vulkan.
2021-07-26 05:49:37 -03:00
bunnei
98b26b6e12
Merge pull request #6585 from ameerj/hades
...
Shader Decompiler Rewrite
2021-07-25 11:39:04 -07:00
bunnei
84b9c42642
Merge pull request #6690 from ReinUsesLisp/dma-clear-fixups
...
buffer_cache: Misc fixups related to buffer clears
2021-07-24 01:27:50 -04:00
ameerj
c80ae87b4e
renderer_base: Removed redundant settings
...
use_framelimiter was not being used internally by the renderers.
set_background_color was always set to true as there is no toggle for the renderer background color, instead users directly choose the color of their choice.
2021-07-23 22:10:01 -04:00
ameerj
9dfbc9bdce
general: Rename "Frame Limit" references to "Speed Limit"
...
This setting is best referred to as a speed limit, as it involves the limits of all timing based aspects of the emulator, not only framerate.
This allows us to differentiate it from the fps unlocker setting.
2021-07-23 22:10:01 -04:00
ReinUsesLisp
a55ff22900
vulkan/blit_image: Commit descriptor sets within worker thread
...
Fixes race condition caused. The descriptor pool is not thread safe, so
we have to commit descriptor sets within the same thread.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
f6796cad9c
vulkan_device: Blacklist Volta and older from VK_KHR_push_descriptor
...
Causes crashes on Link's Awakening intro. It's hard to debug if it's our
fault due to bugs in validation layers.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
3c6d440015
Revert "renderers: Disable async shader compilation"
...
This reverts commit 4a152767286717fa69bfc94846a124a366f70065.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
8381490a04
opengl: Fix asynchronous shaders
...
Wait for shader to build before configuring it, and wait for the shader
to build before sharing it with other contexts.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
258f35515d
shader_environment: Receive cache version from outside
...
This allows us invalidating OpenGL and Vulkan separately in the future.
2021-07-22 21:51:40 -04:00
ameerj
56478bc9ac
shader: Fix disabled attribute default values
2021-07-22 21:51:40 -04:00
ameerj
c9528282d9
gl_device: Simplify GLASM setting logic
2021-07-22 21:51:40 -04:00
ReinUsesLisp
e1ed218b41
renderer_opengl: Use ARB_separate_shader_objects
...
Ensures that states set for a particular stage are not attached to other
stages which may not need them.
2021-07-22 21:51:40 -04:00
ameerj
94af0a00f6
glsl: Clamp shared mem size to GL_MAX_COMPUTE_SHARED_MEMORY_SIZE
2021-07-22 21:51:40 -04:00
ReinUsesLisp
8c166c68d4
gl_shader_cache: Properly implement asynchronous shaders
2021-07-22 21:51:40 -04:00
lat9nq
49946cf780
shader_recompiler, video_core: Resolve clang errors
...
Silences the following warnings-turned-errors:
-Wsign-conversion
-Wunused-private-field
-Wbraced-scalar-init
-Wunused-variable
And some other errors
2021-07-22 21:51:40 -04:00
ameerj
41493fbe89
renderers: Fix clang formatting
2021-07-22 21:51:40 -04:00
ameerj
8390286a89
renderers: Disable async shader compilation
...
The current implementation is prone to causing graphical issues. Disable until a better solution is implemented.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
be54aad1c4
maxwell_to_vk: Add R16_SNORM
2021-07-22 21:51:40 -04:00
ameerj
11f04f1022
shader: Ignore global memory ops on devices lacking int64 support
2021-07-22 21:51:40 -04:00
lat9nq
55233c2861
vulkan_device: Add missing include algorithm
2021-07-22 21:51:40 -04:00
ameerj
7277d7fe96
vulkan_device: Blacklist ampere devices from float16 math
2021-07-22 21:51:40 -04:00
ameerj
dbee32d302
gl_shader_cache: Fixes for async shaders
2021-07-22 21:51:40 -04:00
ReinUsesLisp
57171b23f9
vulkan_device: Enable VK_EXT_extended_dynamic_state on RADV 21.2 onward
2021-07-22 21:51:40 -04:00
ReinUsesLisp
8722668b3c
emit_spirv: Workaround VK_KHR_shader_float_controls on fp16 Nvidia
...
Fix regression on Fire Emblem: Three Houses when using native fp16.
2021-07-22 21:51:40 -04:00
ReinUsesLisp
fba6bd92d4
vk_rasterizer: Workaround bug in VK_EXT_vertex_input_dynamic_state
...
Workaround potential bug on Nvidia's driver where only updating high
attributes leaves low attributes out dated.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
5643a909bc
shader: Fix disabled and unwritten attributes and varyings
2021-07-22 21:51:39 -04:00
ReinUsesLisp
f94f0be521
vk_graphics_pipeline: Implement smooth lines
2021-07-22 21:51:39 -04:00
ReinUsesLisp
57a8921e01
vk_graphics_pipeline: Implement line width
2021-07-22 21:51:39 -04:00
lat9nq
fb9b1787f8
video_core: Enable GL SPIR-V shaders
2021-07-22 21:51:39 -04:00
lat9nq
1152d66ddd
general: Add setting shader_backend
...
GLASM is getting good enough that we can move it out of advanced
graphics settings. This removes the setting `use_assembly_shaders`,
opting for a enum class `shader_backend`. This comes with the benefits
that it is extensible for additional shader backends besides GLSL and
GLASM, and this will work better with a QComboBox.
Qt removes the related assembly shader setting from the Advanced
Graphics section and places it as a new QComboBox in the API Settings
group. This will replace the Vulkan device selector when OpenGL is
selected.
Additionally, mark all of the custom anisotropic filtering settings as
"WILL BREAK THINGS", as that is the case with a select few games.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
8a3427a4c8
glasm: Add passthrough geometry shader support
2021-07-22 21:51:39 -04:00
ReinUsesLisp
7dafa96ab5
shader: Rework varyings and implement passthrough geometry shaders
...
Put all varyings into a single std::bitset with helpers to access it.
Implement passthrough geometry shaders using host's.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
4f052a1f39
vk_graphics_pipeline: Implement conservative rendering
2021-07-22 21:51:39 -04:00
ReinUsesLisp
395bed3a0a
shader: Unify shader stage types
2021-07-22 21:51:39 -04:00
ReinUsesLisp
fb166b5ff4
shader: Emulate 64-bit integers when not supported
...
Useful for mobile and Intel Xe devices.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
3877918e96
gl_graphics_pipeline: Fix assembly shaders check for transform feedbacks
2021-07-22 21:51:39 -04:00
ReinUsesLisp
9bd0531384
gl_graphics_pipeline: Inline hash and operator== key functions
2021-07-22 21:51:39 -04:00
ReinUsesLisp
f5db8c7440
gl_shader_cache: Check previous pipeline before checking hash map
...
Port optimization from Vulkan.
2021-07-22 21:51:39 -04:00
ReinUsesLisp
218dedca1f
gl_graphics_pipeline: Port optimizations from Vulkan pipelines
2021-07-22 21:51:39 -04:00
ReinUsesLisp
df9b7e18f5
buffer_cache: Fix debugging leftover
2021-07-22 21:51:38 -04:00
ReinUsesLisp
838d7e4ca5
buffer_cache: Fix size reductions not having in mind bind sizes
...
A buffer binding can change between shaders without changing the
shaders. This lead to outdated bindings on OpenGL.
2021-07-22 21:51:38 -04:00
ameerj
fcff19e0fa
shaders: Allow shader notify when async shaders is disabled
2021-07-22 21:51:38 -04:00
ReinUsesLisp
ca67077ca8
vk_graphics_pipeline: Use VK_KHR_push_descriptor when available
...
~51% faster on Nvidia compared to previous method.
2021-07-22 21:51:38 -04:00
ReinUsesLisp
374eeda1a3
shader: Properly manage attributes not written from previous stages
2021-07-22 21:51:38 -04:00
ReinUsesLisp
0ffea97e2e
shader: Split profile and runtime info headers
2021-07-22 21:51:38 -04:00
ReinUsesLisp
cbbca26d18
shader: Add support for native 16-bit floats
2021-07-22 21:51:38 -04:00
ReinUsesLisp
376aa94819
shader: Rename maxwell/program.h to translate_program.h
2021-07-22 21:51:38 -04:00
ReinUsesLisp
69f9b97e7e
vulkan_device: Blacklist VK_EXT_vertex_input_dynamic_state on Intel
2021-07-22 21:51:38 -04:00
ameerj
d36f667bc0
glsl: Address rest of feedback
2021-07-22 21:51:38 -04:00
ameerj
3b339fbbf6
glsl: Conditionally use fine/coarse derivatives based on device support
2021-07-22 21:51:38 -04:00
ameerj
6eea88d614
glsl: Cleanup/Address feedback
2021-07-22 21:51:38 -04:00
ameerj
74f683787e
gl_shader_cache: Implement async shaders
2021-07-22 21:51:38 -04:00
ameerj
5e7b2b9661
glsl: Add stubs for sparse queries and variable aoffi when not supported
2021-07-22 21:51:38 -04:00
ameerj
ff3de0fb6b
gl_shader_cache: Remove const from pipeline source arguments
2021-07-22 21:51:38 -04:00
ameerj
413eb6983f
gl_shader_cache: Move OGL shader compilation to the respective Pipeline constructor
2021-07-22 21:51:38 -04:00
ameerj
e81c73a874
glsl: Address more feedback. Implement indexed texture reads
2021-07-22 21:51:38 -04:00
ameerj
6650c4799d
gl_rasterizer: Add texture fetch barrier for fragments
...
Fixes flicker seen in XC2
2021-07-22 21:51:37 -04:00
ameerj
8bb8bbf4ae
glsl: Implement fswzadd
...
and wip nv thread shuffle impl
2021-07-22 21:51:37 -04:00
ameerj
970fc39d98
glsl: Rebase fixes
2021-07-22 21:51:37 -04:00
ameerj
747b8556a4
glsl: Use textureGrad fallback when EXT_texture_shadow_lod is unsupported
2021-07-22 21:51:37 -04:00
ameerj
6577a63d36
glsl: skip gl_ViewportIndex write if device does not support it
2021-07-22 21:51:37 -04:00
ameerj
f4799e8fa1
glsl: Implement transform feedback
2021-07-22 21:51:37 -04:00
ameerj
e35ffbbeb0
glsl: Implement VOTE for subgroup size potentially larger
2021-07-22 21:51:36 -04:00
ameerj
3d086e6130
glsl: Implement some attribute getters and setters
2021-07-22 21:51:36 -04:00
ameerj
bd24fa9713
glsl: Query GL Device for FP16 extension support
2021-07-22 21:51:36 -04:00
ReinUsesLisp
53667ddd4e
glsl: Fixup build issues
2021-07-22 21:51:36 -04:00
ameerj
eaff1030de
glsl: Initial backend
2021-07-22 21:51:35 -04:00
ReinUsesLisp
8fb2048934
vk_rasterizer: Exit render passes on fragment barriers
2021-07-22 21:51:35 -04:00
Rodrigo Locatti
dbf7cb9f90
vk_graphics_pipeline: Fix path with no VK_EXT_extended_dynamic_state
2021-07-22 21:51:35 -04:00
ReinUsesLisp
94e751f415
buffer_cache: Invalidate fast buffers on compute
2021-07-22 21:51:35 -04:00
lat9nq
373f75d944
shader: Add shader loop safety check settings
...
Also add a setting for enable Nsight Aftermath.
2021-07-22 21:51:35 -04:00
ReinUsesLisp
ba3bdf1d41
vulkan_device: Enable VK_EXT_vertex_input_dynamic_state
2021-07-22 21:51:35 -04:00
ReinUsesLisp
41cca8b8ad
vk_pipeline_cache: Skip cached pipelines with different dynamic state
2021-07-22 21:51:35 -04:00
ReinUsesLisp
ea038d6653
vulkan: Add VK_EXT_vertex_input_dynamic_state support
...
Reduces the number of total pipelines generated on Vulkan.
Tested on Super Smash Bros. Ultimate.
2021-07-22 21:51:35 -04:00
ReinUsesLisp
cb78a1b494
shader: Reorder shader cache directories
2021-07-22 21:51:35 -04:00
ReinUsesLisp
3025b2f605
vk_rasterizer: Implement first index
2021-07-22 21:51:35 -04:00
ReinUsesLisp
d554778311
vulkan: Use VK_EXT_provoking_vertex when available
2021-07-22 21:51:35 -04:00
ameerj
cd8427367e
gl_buffer_cache: Use unorm internal formats for snorm texture buffer views
...
Fixes black textures in UE4 games
2021-07-22 21:51:35 -04:00
ReinUsesLisp
5befc0bf87
shader_environment: Fix local memory size calculations
2021-07-22 21:51:35 -04:00
ReinUsesLisp
60a96c49e5
buffer_cache: Fix copy based uniform bindings tracking
2021-07-22 21:51:35 -04:00
ameerj
15bdd27cac
shader_environment: Add shader_local_memory_crs_size to local memory size
...
Fixes DOOM 2016 missing local memory
2021-07-22 21:51:35 -04:00
ReinUsesLisp
7eaa74ad23
gl_texture_cache: Create image storage views
...
Fixes SULD.D tests.
2021-07-22 21:51:35 -04:00
ReinUsesLisp
b1ed64ac18
gl_shader_util: Move shader utility code to a separate file
2021-07-22 21:51:35 -04:00
ReinUsesLisp
12fe7210d2
gl_shader_cache: Store workers in shader cache object
2021-07-22 21:51:35 -04:00
ReinUsesLisp
cffd4716c5
vk_pipeline_cache,shader_notify: Add shader notifications
2021-07-22 21:51:35 -04:00
ReinUsesLisp
48aad8dc05
vk_pipeline_cache: Add asynchronous shaders
2021-07-22 21:51:35 -04:00
ReinUsesLisp
2a0aeaa3d2
vk_rasterizer: Flush work on clear and dispatches
2021-07-22 21:51:34 -04:00
FernandoS27
c736b9ffab
DMA: Restrict optimised path for BlockToLinear further.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
f45f7b5c2a
vk_swapchain: Handle outdated swapchains
...
Fixes pixelated presentation on Intel devices.
2021-07-22 21:51:34 -04:00
FernandoS27
562af30181
shader: Fix VertexA Shaders.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
b02c78b276
vk_buffer_cache: Handle null texture buffers
...
Fixes a crash on Age of Calamity cutscenes.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
8f099af6a8
nsight_aftermath_tracker: Fix SPIR-V module writes
2021-07-22 21:51:34 -04:00
ReinUsesLisp
8c954fcaee
vk_pipeline_cache: Set support_derivative_control to true
2021-07-22 21:51:34 -04:00
ReinUsesLisp
79f2fe1a39
glasm: Use ARB_derivative_control conditionally
2021-07-22 21:51:34 -04:00
ReinUsesLisp
4a2361a1e2
buffer_cache: Reduce uniform buffer size from shader usage
...
Increases performance significantly on certain titles.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
e57ee3b7fd
transform_feedback: Read buffer stride from index instead of layout
2021-07-22 21:51:34 -04:00
ReinUsesLisp
46bd362d0d
fixed_pipeline_state: Use regular for loop instead of ranges for perf
...
MSVC generates better code for it.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
d26271b014
vk_swapchain: Avoid recreating the swapchain on each frame
...
Recreate only when requested (or sRGB is changed) instead of tracking
the frontend's size. That size is still used as a hint.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
1148a4eac7
vulkan: Conditionally use shaderInt16
...
Add support for Polaris AMD devices.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
77372443c3
vulkan: Enable depth bounds and use it conditionally
...
Intel devices pre-Xe don't support this.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
c44b16124f
vk_buffer_cache: Add transform feedback usage to buffers
2021-07-22 21:51:34 -04:00
ReinUsesLisp
916ca74324
opengl: Declare fragment outputs even if they are not used
...
Fixes Ori and the Blind Forest's menu on GLASM. For some reason
(probably high level optimizations) it is not sanitized on SPIR-V for
OpenGL. Vulkan is unaffected by this change.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
a7e9756671
buffer_cache: Mark uniform buffers as dirty if any enable bit changes
2021-07-22 21:51:34 -04:00
ReinUsesLisp
99f2c31b64
vulkan_device: Enable float64 and int64 conditionally
...
Add Intel Xe support.
2021-07-22 21:51:34 -04:00
ReinUsesLisp
56d4a9ebde
texture_cache: Reduce invalid image/sampler error severity
2021-07-22 21:51:34 -04:00
ReinUsesLisp
b7764c3a79
shader: Handle host exceptions
2021-07-22 21:51:34 -04:00
ReinUsesLisp
3b595fe8b2
glasm: Prepare XFB from state instead of global registers
2021-07-22 21:51:33 -04:00
ReinUsesLisp
adb591a757
glasm: Use storage buffers instead of global memory when possible
2021-07-22 21:51:33 -04:00
ReinUsesLisp
a41b2ed391
gl_shader_cache: Add disk shader cache
2021-07-22 21:51:33 -04:00
ReinUsesLisp
a49532c8eb
video_core,shader: Clang-format fixes
2021-07-22 21:51:33 -04:00
ReinUsesLisp
eacf18cce9
gl_shader_cache: Rename Program abstractions into Pipeline
2021-07-22 21:51:33 -04:00
ReinUsesLisp
4017928213
gl_shader_cache: Do not flip tessellation on OpenGL
2021-07-22 21:51:33 -04:00
ReinUsesLisp
80884e3270
gl_graphics_program: Fix texture buffer bindings
2021-07-22 21:51:33 -04:00
ReinUsesLisp
1bccb43cbe
gl_shader_cache: Conditionally use viewport mask
2021-07-22 21:51:33 -04:00
ReinUsesLisp
c31521512f
gl_shader_cache,glasm: Conditionally use typeless image reads extension
2021-07-22 21:51:33 -04:00
ReinUsesLisp
df406246d9
gl_shader_cache: Improve GLASM error print logic
2021-07-22 21:51:33 -04:00
ReinUsesLisp
84feabac88
glasm: Implement forced early Z
2021-07-22 21:51:33 -04:00
ReinUsesLisp
6bc54e12a0
glasm: Set transform feedback state
2021-07-22 21:51:33 -04:00
ReinUsesLisp
69b910e9e7
video_core: Abstract transform feedback translation utility
2021-07-22 21:51:33 -04:00
ReinUsesLisp
c07cc9d6a5
gl_shader_cache: Pass shader runtime information
2021-07-22 21:51:33 -04:00
ReinUsesLisp
9e7b6622c2
shader: Split profile and runtime information in separate structs
2021-07-22 21:51:33 -04:00
ReinUsesLisp
54decced92
gl_shader_manager: Zero initialize current assembly programs
2021-07-22 21:51:32 -04:00
ReinUsesLisp
c0e4074721
gl_shader_manager: Remove unintentionally committed #pragma
2021-07-22 21:51:32 -04:00
ReinUsesLisp
690b1841e6
renderer_opengl: State track compute assembly programs
2021-07-22 21:51:32 -04:00
ReinUsesLisp
c5ca4fe451
renderer_opengl: State track assembly programs
2021-07-22 21:51:32 -04:00
ReinUsesLisp
85fc7e584e
HACK: Bind stages before and after bindings
...
Works around a bug where program parameters are only applied to the
current stage, and this one wasn't bound at the moment.
Affects all SSBO usages on GLASM.
2021-07-22 21:51:32 -04:00
ReinUsesLisp
8b7d5912d6
glasm: Support textures used in more than one stage
2021-07-22 21:51:32 -04:00
ReinUsesLisp
258f2dec1b
opengl: Initial (broken) support to GLASM shaders
2021-07-22 21:51:31 -04:00
ReinUsesLisp
568d813eea
vk_update_descriptor: Properly initialize payload on the update descriptor queue
2021-07-22 21:51:31 -04:00
ReinUsesLisp
01e18581b9
vk_pipeline_cache: Enable int8 and int16 types on Vulkan
2021-07-22 21:51:30 -04:00
ReinUsesLisp
dc02cb92e4
gl_rasterizer: Flush L2 caches before glFlush on GLASM
2021-07-22 21:51:30 -04:00
ReinUsesLisp
2c81ad8311
glasm: Initial GLASM compute implementation for testing
2021-07-22 21:51:30 -04:00
ReinUsesLisp
36f1586267
vk_scheduler: Use locks instead of SPSC a queue
...
This tries to fix a data race where we'd wait forever for the GPU.
2021-07-22 21:51:30 -04:00
ReinUsesLisp
56c47951c5
vk_query_cache: Wait before reading queries
2021-07-22 21:51:30 -04:00
ReinUsesLisp
a515036604
vk_master_semaphore: Use fetch_add to increase master semaphore tick
2021-07-22 21:51:30 -04:00
ReinUsesLisp
bfa47539f6
gl_shader_cache: Remove code unintentionally committed
2021-07-22 21:51:30 -04:00
ReinUsesLisp
bed090807a
Move SPIR-V emission functions to their own header
2021-07-22 21:51:30 -04:00
ReinUsesLisp
d621e96d0d
shader: Initial OpenGL implementation
2021-07-22 21:51:30 -04:00
ReinUsesLisp
48a17298d7
spirv: Support OpenGL uniform buffers and change bindings
2021-07-22 21:51:29 -04:00
FernandoS27
c49d56c931
shader: Address feedback
2021-07-22 21:51:29 -04:00
FernandoS27
b541f5e5e3
shader: Implement VertexA stage
2021-07-22 21:51:29 -04:00
ReinUsesLisp
f4b82b8dd7
vk_graphics_pipeline: Fix texture buffer descriptors
2021-07-22 21:51:29 -04:00
ReinUsesLisp
53acdda772
vk_scheduler: Allow command submission on worker thread
...
This changes how Scheduler::Flush works. It queues the current command
buffer to be sent to the GPU but does not do it immediately. The Vulkan
worker thread takes care of that. Users will have to use
Scheduler::Flush + Scheduler::WaitWorker to get the previous behavior.
Scheduler::Finish is unchanged.
To avoid waiting on work never queued, Scheduler::Wait sends the current
command buffer if that's what the caller wants to wait.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
c5425b38c1
vk_compute_pass: Fix -Wshadow warning
2021-07-22 21:51:29 -04:00
ReinUsesLisp
025b20f96a
shader: Move pipeline cache logic to separate files
...
Move code to separate files to be able to reuse it from OpenGL. This
greatly simplifies the pipeline cache logic on Vulkan.
Transform feedback state is not yet abstracted and it's still
intrusively stored inside vk_pipeline_cache. It will be moved when
needed on OpenGL.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
ac8835659e
vulkan: Defer descriptor set work to the Vulkan thread
...
Move descriptor lookup and update code to a separate thread. Delaying
this removes work from the main GPU thread and allows creating
descriptor layouts on another thread. This reduces a bit the workload
of the main thread when new pipelines are encountered.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
2f3c3dfc10
vulkan: Rework descriptor allocation algorithm
...
Create multiple descriptor pools on demand. There are some degrees of
freedom what is considered a compatible pool to avoid wasting large
pools on small descriptors.
2021-07-22 21:51:29 -04:00
ReinUsesLisp
5ed871398b
vk_graphics_pipeline: Generate specialized pipeline config functions and improve code
2021-07-22 21:51:29 -04:00
ReinUsesLisp
f4ace63957
shader: Accelerate pipeline transitions and use dirty flags for shaders
2021-07-22 21:51:29 -04:00
ReinUsesLisp
8fda599a31
vk_compute_pipeline: Fix index comparison oversight on compute texture buffers
2021-07-22 21:51:29 -04:00
ReinUsesLisp
0c0ee9d897
vulkan_device: Require shaderClipDistance and shaderCullDistance features
2021-07-22 21:51:29 -04:00
ReinUsesLisp
5b1b06f11e
vk_graphics_pipeline: Guard against non-tessellation pipelines using patches
2021-07-22 21:51:29 -04:00
Rodrigo Locatti
2dc86372c7
shader: Fix bugs and build issues on GCC
2021-07-22 21:51:29 -04:00
ReinUsesLisp
7a1f296cda
shader: Fix render targets with null attachments
2021-07-22 21:51:29 -04:00
ReinUsesLisp
0ace34575c
shader: Require dual source blending
2021-07-22 21:51:29 -04:00
ReinUsesLisp
d10cf55353
shader: Implement indexed textures
2021-07-22 21:51:28 -04:00
ReinUsesLisp
050e81500c
shader: Move microinstruction header to the value header
2021-07-22 21:51:28 -04:00
ReinUsesLisp
dd860b684c
shader: Implement D3D samplers
2021-07-22 21:51:28 -04:00
FernandoS27
f18a6dd1bd
shader: Implement SR_Y_DIRECTION
2021-07-22 21:51:28 -04:00
ReinUsesLisp
95815a3883
shader: Implement PIXLD.MY_INDEX
2021-07-22 21:51:28 -04:00
ReinUsesLisp
e3514bcd6b
spirv: Implement ViewportMask with NV_viewport_array2
2021-07-22 21:51:28 -04:00
ReinUsesLisp
183855e396
shader: Implement tessellation shaders, polygon mode and invocation id
2021-07-22 21:51:27 -04:00
lat9nq
7ae3ea6bee
vk_pipeline_cache: Silence GCC warnings
...
Silences `-Werror=missing-field-initializers` due to missing
initializers.
2021-07-22 21:51:27 -04:00
ReinUsesLisp
416e1b7441
spirv: Implement image buffers
2021-07-22 21:51:27 -04:00
ameerj
6c512f4bff
spirv: Implement alpha test
2021-07-22 21:51:27 -04:00
ReinUsesLisp
b126987c59
shader: Implement transform feedbacks and define file format
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a83579b50a
shader: Implement early Z tests
2021-07-22 21:51:27 -04:00
ReinUsesLisp
fa75b9b062
spirv: Rework storage buffers and shader memory
2021-07-22 21:51:27 -04:00
ReinUsesLisp
f263760c5a
shader: Implement geometry shaders
2021-07-22 21:51:27 -04:00
ReinUsesLisp
a33014022e
pipeline_helper: Simplify descriptor objects initialization
2021-07-22 21:51:27 -04:00
ameerj
3db2b3effa
shader: Implement ATOM/S and RED
2021-07-22 21:51:27 -04:00
ReinUsesLisp
479ca00071
nsight_aftermath_tracker: Report used shaders to Nsight Aftermath
2021-07-22 21:51:27 -04:00
ReinUsesLisp
ab543f1821
spirv: Guard against typeless image reads on unsupported devices
2021-07-22 21:51:27 -04:00
ReinUsesLisp
1030b612a3
vk_rasterizer: Request outside render pass execution context for compute
2021-07-22 21:51:27 -04:00
ReinUsesLisp
e5e79648cf
pipeline_helper: Add missing [[maybe_unused]]
2021-07-22 21:51:27 -04:00
ReinUsesLisp
7cb2ab3585
shader: Implement SULD and SUST
2021-07-22 21:51:26 -04:00
lat9nq
5bfcafa0a2
shader: Address feedback + clang format
2021-07-22 21:51:26 -04:00
lat9nq
0bb85f6a75
shader_recompiler,video_core: Cleanup some GCC and Clang errors
...
Mostly fixing unused *, implicit conversion, braced scalar init,
fpermissive, and some others.
Some Clang errors likely remain in video_core, and std::ranges is still
a pertinent issue in shader_recompiler
shader_recompiler: cmake: Force bracket depth to 1024 on Clang
Increases the maximum fold expression depth
thread_worker: Include condition_variable
Don't use list initializers in control flow
Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-22 21:51:26 -04:00
ReinUsesLisp
e9a91bc5cc
shader: Interact texture buffers with buffer cache
2021-07-22 21:51:26 -04:00
ReinUsesLisp
1f3eb601ac
shader: Implement texture buffers
2021-07-22 21:51:26 -04:00
ReinUsesLisp
bfeeb23ddc
vk_pipeline_cache: Fix num of pipeline workers on weird platforms
2021-07-22 21:51:26 -04:00
FernandoS27
72daa2a039
shader: Fix ShadowCube declaration type, set number of pipeline threads based on hardware
2021-07-22 21:51:26 -04:00
ReinUsesLisp
5b3c6d59c2
vk_compute_pass: Fix compute passes
2021-07-22 21:51:26 -04:00
ReinUsesLisp
5ed68e83db
shader: Remove atomic flags and use mutex + cond variable for pipelines
2021-07-22 21:51:26 -04:00
ReinUsesLisp
6ff2e9ba09
vk_pipeline_cache: Remove unnecesary scope in pipeline cache locking
2021-07-22 21:51:26 -04:00
FernandoS27
480dc0d5e6
vk_pipeline_cache: Small fixes to the pipeline cache
2021-07-22 21:51:26 -04:00
FernandoS27
12f5f32098
shader: Mark SSBOs as written when they are
2021-07-22 21:51:25 -04:00
FernandoS27
d819ba4489
shader: Implement ViewportIndex
2021-07-22 21:51:25 -04:00
ReinUsesLisp
d0a529683a
vulkan: Serialize pipelines on a separate thread
2021-07-22 21:51:25 -04:00
ReinUsesLisp
8771639d1e
vulkan: Create pipeline layouts in separate threads
2021-07-22 21:51:25 -04:00
ReinUsesLisp
2fc698b040
vulkan: Build pipelines in parallel at runtime
...
Wait from the worker thread for a pipeline to build before binding it to
the command buffer. This allows queueing pipelines to multiple threads.
2021-07-22 21:51:25 -04:00
ReinUsesLisp
0c933e20de
vk_pipeline_cache: Name SPIR-V modules
2021-07-22 21:51:25 -04:00
FernandoS27
4d0d29fc20
shader: Address feedback
2021-07-22 21:51:25 -04:00
FernandoS27
dc1a9a3bed
shader: Implement TLD
2021-07-22 21:51:25 -04:00
ReinUsesLisp
7a1c14269e
spirv: Add fixed pipeline point size
2021-07-22 21:51:25 -04:00
FernandoS27
34aba9627a
shader: Implement BRX
2021-07-22 21:51:25 -04:00
ReinUsesLisp
3c758d9b53
vk_pipeline_cache: Fix size hashing of shaders
2021-07-22 21:51:25 -04:00
ReinUsesLisp
e860870dd2
shader: Implement LDS, STS, LDL, and STS and use SPIR-V 1.4 when available
2021-07-22 21:51:25 -04:00
ReinUsesLisp
dbd882ddeb
shader: Better interpolation and disabled attributes support
2021-07-22 21:51:24 -04:00
ReinUsesLisp
675a82416d
spirv: Remove dependencies on Environment when generating SPIR-V
2021-07-22 21:51:24 -04:00
ReinUsesLisp
cb6039ccea
vk_pipeline_cache: Fix pipeline and shader caches
2021-07-22 21:51:24 -04:00
ReinUsesLisp
ec005be99d
shader: Fix rasterizer integration order issues
2021-07-22 21:51:24 -04:00
ReinUsesLisp
17063d16a3
shader: Implement TXQ and fix FragDepth
2021-07-22 21:51:24 -04:00
ReinUsesLisp
68a9505d8a
shader: Implement NDC [-1, 1], attribute types and default varying initialization
2021-07-22 21:51:24 -04:00
ameerj
3d07cef009
shader: Implement VOTE
2021-07-22 21:51:24 -04:00
ReinUsesLisp
d40faa1db0
vk_pipeline_cache: Fix ReleaseContents order
2021-07-22 21:51:24 -04:00
ReinUsesLisp
f8115a6a9e
vk_pipeline_cache: Add pipeline cache
2021-07-22 21:51:24 -04:00
ReinUsesLisp
c63cf4fa2e
vk_pipeline_cache: Add pipeline cache
2021-07-22 21:51:24 -04:00
ameerj
e4e1cc11b8
shader: Implement DMNMX, DSET, DSETP
2021-07-22 21:51:24 -04:00
ReinUsesLisp
76c8a962ac
spirv: Implement VertexId and InstanceId, refactor code
2021-07-22 21:51:23 -04:00
ReinUsesLisp
f91859efd2
shader: Implement I2F
2021-07-22 21:51:23 -04:00
ReinUsesLisp
260743f371
shader: Add partial rasterizer integration
2021-07-22 21:51:23 -04:00
ameerj
b9f7bf4472
spirv: Add SignedZeroInfNanPreserve logic
2021-07-22 21:51:23 -04:00
ReinUsesLisp
ab46371247
shader: Initial support for textures and TEX
2021-07-22 21:51:23 -04:00
ReinUsesLisp
274897dfd5
spirv: Fixes and Intel specific workarounds
2021-07-22 21:51:22 -04:00
ReinUsesLisp
704c6f353f
shader: Rename, implement FADD.SAT and P2R (imm)
2021-07-22 21:51:22 -04:00
ReinUsesLisp
e2bc05b17d
shader: Add denorm flush support
2021-07-22 21:51:22 -04:00
ReinUsesLisp
6db69990da
spirv: Add lower fp16 to fp32 pass
2021-07-22 21:51:22 -04:00
ReinUsesLisp
85cce78583
shader: Primitive Vulkan integration
2021-07-22 21:51:22 -04:00
ReinUsesLisp
c67d64365a
shader: Remove old shader management
2021-07-22 21:51:22 -04:00
ReinUsesLisp
2930dccecc
spirv: Initial SPIR-V support
2021-07-22 21:51:22 -04:00
bunnei
db46f8a70c
Merge pull request #6686 from ReinUsesLisp/vk-optimal-copy
...
vk_texture_cache: Use VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL when possible
2021-07-22 12:51:13 -04:00
ReinUsesLisp
a0c4557557
gl_buffer_cache: Use glClearNamedBufferSubData:GL_RED instead of GL_RGBA
...
Avoids reading out of bounds from the stack.
2021-07-20 18:51:45 -03:00
ReinUsesLisp
6e2ca7fbee
buffer_cache: Simplify clear logic
...
Use existing helper functions and avoid looping when
only one buffer has to be active.
2021-07-20 18:50:51 -03:00
bunnei
c53b688411
Merge pull request #6629 from FernandoS27/accel-dma-2
...
DMAEngine: Accelerate BufferClear [accelerateDMA Part 2]
2021-07-20 17:35:05 -04:00
Fernando S
f460bf937e
Merge pull request #6685 from ReinUsesLisp/radeonsi-client
...
gl_texture_cache: Workaround slow PBO downloads on radeonsi
2021-07-20 20:33:07 +02:00
ReinUsesLisp
ad189488b3
vk_texture_cache: Use VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL when possible
...
Silences performance warnings generated from validation layers on each frame.
2021-07-20 14:38:58 -03:00
ReinUsesLisp
2e2d6cf5e5
gl_texture_cache: Workaround slow PBO downloads on radeonsi
...
There's an optimization bug on non-git mesa versions where not
specifying GL_CLIENT_STORAGE_BIT causes very slow reads on the CPU
side.
Add this bit for all vendors.
2021-07-20 14:02:11 -03:00
Fernando S
9a26d96c98
vk_buffer_cache: Fix quad index array with 0 vertices ( #6627 )
2021-07-20 05:05:28 -03:00
Rodrigo Locatti
16f983d33a
Merge pull request #6580 from ReinUsesLisp/xfb-radv
...
vk_buffer_cache: Use emulated null buffers for transform feedback
2021-07-19 23:01:19 -03:00
Fernando S
b405a81a9c
Merge pull request #6679 from yzct12345/fix-lets-go
...
Fix Pokemon Let's Go on Vulkan
2021-07-19 03:29:54 +02:00
Fernando S
053860d9cb
Merge pull request #6670 from ReinUsesLisp/prepare-rt
...
texture_cache: Always prepare image views on render targets
2021-07-19 03:21:25 +02:00
Fernando S
41f4edd256
Merge pull request #6669 from ReinUsesLisp/fix-samples-sizes
...
texture_cache/util: Fix size calculations of multisampled images
2021-07-19 03:21:03 +02:00
yzct12345
03a7131563
Update src/video_core/renderer_vulkan/vk_texture_cache.cpp
...
Co-authored-by: Vitor K <vitor-kiguchi@hotmail.com>
2021-07-18 22:23:32 +00:00
yzct12345
b727b6784f
Update src/video_core/renderer_vulkan/vk_texture_cache.cpp
...
Co-authored-by: Vitor K <vitor-kiguchi@hotmail.com>
2021-07-18 22:23:12 +00:00
yzct12345
9e7f41cec6
Ignore wrong blit format
2021-07-18 21:56:06 +00:00
ReinUsesLisp
29c39838fe
vk_texture_cache: Finalize renderpass when downloading images
2021-07-18 18:00:30 -03:00
ReinUsesLisp
7850dd0a76
vk_compute_pass: Fix pipeline barriers on non-initialized ASTC images
2021-07-18 18:00:14 -03:00
ReinUsesLisp
a3ce26ae01
vk_compute_pass: Fix ASTC buffer setup synchronization
2021-07-18 17:59:31 -03:00
ReinUsesLisp
6d9f347e22
texture_cache/util: Fix size calculations of multisampled images
...
On the texture cache we handle multisampled images by keeping their real
size in samples (e.g. 1920x1080 with 4 samples is 3840x2160).
This works nicely with size matches and other comparisons, but the
calculation for guest sizes was not having this in mind, and the size
was being multiplied (again) by the number of samples per dimension.
For example a 3840x2160 texture cache image had its width and height
multiplied by 2, resulting in a much larger texture.
Fix this issue.
- Fixes performance regression on cooking related titles when an
unrelated bug was fixed.
2021-07-18 01:15:48 -03:00
ReinUsesLisp
cb08e5bdd2
texture_cache: Always prepare image views on render targets
...
Images used as render targets were not being "prepared", causing
desynchronizations on the texture cache. Needs #6669 to avoid
performance regressions on certain cooking titles.
- Fixes black shadows on Age of Calamity.
2021-07-18 00:49:32 -03:00
bunnei
3cd3230295
Merge pull request #6579 from ameerj/float-settings
...
settings: Eliminate usage of float-point setting values
2021-07-15 18:03:11 -04:00
Fernando S
96703b82bc
Merge pull request #6635 from ameerj/intel-vk-sm3dw
...
vk_rasterizer: Only clear valid color attachments
2021-07-15 16:52:51 +02:00
Fernando S
da4ca4f2f9
Merge pull request #6525 from ameerj/nvdec-fixes
...
nvdec: Fix Submit Ioctl data source, vic frame dimension computations
2021-07-15 15:17:50 +02:00
ameerj
b7fa264749
vic: Fix dimension compuation of YUV frames
...
Fixes out of bound memory crashes in Mario Golf
2021-07-15 00:51:50 -04:00
Fernando Sahmkow
1ae4b684ff
Buffer cache: Fixes, Clang and Feedback.
2021-07-15 02:02:08 +02:00
Fernando Sahmkow
1a95a7cdd9
GPUMemoryManager: Force inmediate invalidation when writting block.
2021-07-14 18:39:31 +02:00
Fernando Sahmkow
a0eb3f8a3e
Buffer Cache: Fixes to DMA Copy.
2021-07-14 18:25:33 +02:00
Fernando Sahmkow
495b8e31b5
DMAEngine: Revert flushing from Pitch to BlpockLinear.
2021-07-14 16:44:53 +02:00
Fernando Sahmkow
8039be8b19
BufferCache: fix clearing on forced download.
2021-07-14 16:44:15 +02:00
ameerj
e0978931e8
vk_rasterizer: Only clear valid color attachments
2021-07-13 16:04:27 -04:00
Fernando Sahmkow
b780d5b5c5
DMAEngine: Accelerate BufferClear
2021-07-13 03:49:47 +02:00
Fernando Sahmkow
bc19d28963
accelerateDMA: Fixes and feedback.
2021-07-12 10:33:35 +02:00
Fernando Sahmkow
be1a3f7a0f
accelerateDMA: Accelerate Buffer Copies.
2021-07-11 01:33:17 +02:00
Fernando Sahmkow
977904dd84
Buffer Cache: Address Feedback.
2021-07-10 21:34:55 +02:00
Fernando Sahmkow
5e78ad4378
Buffer Cache: Fix GCC copmpile error
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
4a09517336
Fence Manager: remove reference fencing.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
2c8f4ed27f
BufferCache: Additional download fixes.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
f75544a943
Buffer Cache: Revert unnecessary range reduction.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
cf38faee9b
Fence Manager: Force ordering on WFI.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
73638ca593
Buffer Cache: Eliminate the AC Hack as the base game is fixed in Hades.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
63915bf2de
Fence Manager: Add fences on Reference Count.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
35327dbde3
Videocore: Address Feedback & CLANG Format.
2021-07-09 22:20:36 +02:00
Fernando Sahmkow
0e4d4b4beb
Buffer Cache: Fix High Downloads and don't predownload on Extreme.
2021-07-09 22:20:36 +02:00
ReinUsesLisp
5a45d295da
vk_buffer_cache: Use emulated null buffers for transform feedback
...
Vulkan does not support null buffers on transform feedback bindings.
Emulate these using the same null buffer we were using for index
buffers.
2021-07-09 01:27:47 -03:00
ameerj
8284658bac
configure_graphics: Use u8 for bg_color values
2021-07-08 21:45:01 -04:00
Ameer J
5edc96f4a4
Merge pull request #6539 from lat9nq/default-setting
...
general: Move most settings' defaults and labels into their definition
2021-07-08 14:46:31 -04:00
Feng Chen
c7ad195fd3
Out of bound blit ( #6531 )
...
* Fix out of bound blit error
* Fix code read
* Fix ci error
Co-authored-by: Feng Chen <chen.feng@gloritysolutions.com>
2021-07-08 11:06:09 -07:00
lat9nq
2f0e1f5d02
util_shaders: Fix BindImageTexture
...
According to
https://gitlab.freedesktop.org/mesa/mesa/-/issues/3820#note_753371 we
need to set these to true for use with 3D textures.
Fixes BOTW teleporting on RadeonSI and iris.
2021-07-07 14:09:55 -04:00
bunnei
eb3cb3af35
Merge pull request #6497 from FernandoS27/scotty-doesnt-know
...
GPU Memory Manager - Correct handling of non continuous backing memory.
2021-07-06 17:26:21 -07:00
bunnei
bf50345d4c
Merge pull request #6537 from Morph1984/warnings
...
general: Enforce multiple warnings in MSVC
2021-07-05 17:09:23 -07:00
Ameer J
c770fa9823
Merge pull request #6540 from Kelebek1/nvdec
...
Slightly refactor NVDEC and codecs for readability and safety
2021-07-05 16:06:09 -04:00
Fernando Sahmkow
c6a9e91784
Texture Cache: Fix collision with multiple overlaps of the same sparse texture.
2021-07-04 22:32:36 +02:00
Fernando Sahmkow
a8a0927d42
Texture Cache: Fix GCC & Clang.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
8f9f142956
Texture Cache: Address feedback.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
fd98fcf7f0
Texture Cache: Improve accuracy of sparse texture detection.
2021-07-04 22:32:35 +02:00
Fernando Sahmkow
38165fb7e3
Texture Cache: Initial Implementation of Sparse Textures.
2021-07-04 22:32:03 +02:00
Fernando Sahmkow
0aab55d26a
TextureCacheOGL: Implement Image Copies for 1D and 1D Array.
2021-07-03 14:40:29 +02:00
Fernando Sahmkow
ebaa7e391c
TextureCache: Fix 1D to 2D overlapps.
2021-07-03 14:01:54 +02:00
Kelebek1
208a04dcff
Slightly refactor NVDEC and codecs for readability and safety
2021-07-01 06:22:05 +01:00
Ameer J
bab400daaf
Merge pull request #6459 from lat9nq/ubuntu-fixes
...
cmake: Improve Linux dependency checking for externals
2021-06-30 21:47:57 -04:00
lat9nq
7a8de138df
yuzu qt: Make most UISettings a BasicSetting
...
For simple primitive settings, moves their defaults and labels to
definition time.
Also fixes typo and clang-format
yuzu qt: config: Fix rng_seed
2021-06-28 19:13:53 -04:00
lat9nq
b91b76df4f
general: Make most settings a BasicSetting
...
Creates a new BasicSettings class in common/settings, and forces setting
a default and label for each setting that uses it in common/settings.
Moves defaults and labels from both frontends into common settings.
Creates a helper function in each frontend to facillitate reading the
settings now with the new default and label properties.
Settings::Setting is also now a subclass of Settings::BasicSetting. Also
adds documentation for both Setting and BasicSetting.
2021-06-28 17:32:17 -04:00
Morph
ec68cba440
Merge pull request #6502 from ameerj/vendor-title
...
main: Add GPU Vendor name to running title bar
2021-06-28 14:51:49 -04:00
Morph
22d7b89c15
video_core: Remove #pragma warning directives for external headers
2021-06-28 14:21:40 -04:00
Morph
a47704f4dd
video_core: Enforce C4242
2021-06-28 14:20:25 -04:00
Morph
d3d6613d33
video_core: Silence signed/unsigned mismatch warnings
2021-06-28 09:21:42 -04:00
ReinUsesLisp
9476309d53
buffer_cache: Only flush downloaded size
...
Fixes a regression unintentionally introduced by the garbage collector.
This makes regular memory downloads only flush the requested sizes.
This negatively affected Koei Tecmo games.
2021-06-26 03:29:34 -03:00
ReinUsesLisp
03abe8bf85
video_core: Enforce C4244
...
Enforce implicit integer casts to a smaller type as errors.
2021-06-26 03:29:34 -03:00
ReinUsesLisp
05bd50a1cf
codec,vic: Disable warnings in ffmpeg headers
2021-06-26 03:29:31 -03:00
ReinUsesLisp
3ab5bf6454
vk_buffer_cache: Silence implicit cast warnings
2021-06-26 02:17:36 -03:00
ReinUsesLisp
b4894faeae
buffer_cache/texture_cache: Make GC functions private
2021-06-26 02:17:36 -03:00
ReinUsesLisp
e79d02bf38
buffer_cache: Silence implicit cast warning
2021-06-26 02:17:36 -03:00
ReinUsesLisp
99b859db55
vulkan_device: Make device memory match the rest of the file
...
Match the style in the file.
2021-06-25 02:38:58 -03:00
bunnei
c805c0b395
Merge pull request #6496 from ameerj/astc-fixes
...
astc: Various robustness enhancements for the gpu decoder
2021-06-24 21:47:05 -07:00
bunnei
b9c2732121
Merge pull request #6519 from Wunkolo/mem-size-literal
...
common: Replace common_sizes into user-literals
2021-06-24 19:09:12 -07:00
Wunkolo
4569f39c7c
common: Replace common_sizes into user-literals
...
Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc
user-literals within literals.h.
To keep the global namespace clean, users will have to use:
```
using namespace Common::Literals;
```
to access these literals.
2021-06-24 09:27:40 -07:00
bunnei
1b09d6628b
Merge pull request #6517 from lioncash/fmtlib
...
externals: Update fmt to 8.0.0
2021-06-23 15:31:04 -07:00
Lioncash
d0b1f2bd05
General: Resolve fmt specifiers to adhere to 8.0.0 API where applicable
...
Also removes some deprecated API usages.
2021-06-23 13:48:21 -04:00
bunnei
d8d9bb0dfb
Merge pull request #6518 from lioncash/func
...
maxwell3d: Add missing return in default SizeInBytes() case
2021-06-23 09:43:00 -07:00
Lioncash
be6844c1ed
maxwell3d: Add missing return in default SizeInBytes() case
...
We were returning '1' in ComponentCount()'s default case but were
neglecting to do the same with SizeInBytes().
2021-06-23 11:50:40 -04:00
Mai M
17fff10e06
Merge pull request #6465 from FernandoS27/sex-on-the-beach
...
GPU: Implement a garbage collector for GPU Caches (project Reaper+)
2021-06-23 08:03:01 -04:00
Mai M
20f474b09a
Merge pull request #6508 from ReinUsesLisp/bootmanager-stop-token
...
bootmanager: Use std::stop_source for stopping emulation
2021-06-23 02:35:42 -04:00
Fernando Sahmkow
f9b940a442
Reaper: Set minimum cleaning limit on OGL.
2021-06-22 22:07:17 +02:00
Morph
81b1b71993
common: fs: Remove [[nodiscard]] attribute on Remove* functions
...
There are a lot of scenarios where we don't particularly care whether or not the removal operation and just simply attempt a removal.
As such, removing the [[nodiscard]] attribute is best for these functions.
2021-06-22 13:36:24 -04:00
ReinUsesLisp
4009ae1da2
bootmanager: Use std::stop_source for stopping emulation
...
Use its std::stop_token to abort shader cache loading.
Using std::stop_token instead of std::atomic_bool allows the usage of
other utilities like std::stop_callback.
2021-06-22 00:04:57 -03:00
ReinUsesLisp
cf116a28a6
vk_master_semaphore: Use jthread for debug thread
2021-06-21 19:56:07 -03:00
lat9nq
a01459df3d
gl_device: Expand on Mesa driver names
...
Makes this list a bit more capable at identifying Mesa drivers. Tries to
deal with two of the overloaded vendor strings in a more generic
fashion.
2021-06-20 23:04:07 -04:00
ameerj
fb16cbb17e
video_core: Add GPU vendor name to window title bar
2021-06-20 23:04:07 -04:00
Fernando Sahmkow
569a1962c0
Reaper: Guarantee correct deletion.
2021-06-20 19:11:41 +02:00
ameerj
851c76233d
util_shaders: Specify ASTC decoder memory barrier bits
2021-06-19 11:16:25 -04:00
ameerj
ace20ba4a4
astc_decoder.comp: Remove unnecessary LUT SSBOs
...
We can move them to instead be compile time constants within the shader.
2021-06-19 10:56:13 -04:00
ameerj
31b125ef57
astc: Various robustness enhancements for the gpu decoder
...
These changes should help in reducing crashes/drivers panics that may
occur due to synchronization issues between the shader completion and
later access of the decoded texture.
2021-06-19 09:00:33 -04:00
ameerj
0b172d12c0
vulkan_debug_callback: Skip logging known false-positive validation errors
...
Avoids overwhelming the log with validation errors that are not applicable
2021-06-17 22:16:32 -04:00
Fernando Sahmkow
719a6dd5a1
Reaper: Correct size calculation on Vulkan.
2021-06-17 08:48:41 +02:00
Ameer J
c5b517aa5f
Merge pull request #6469 from ReinUsesLisp/blit-view-compat
...
texture_cache/util: Avoid relaxed image views on different bytes per block
2021-06-16 21:08:07 -04:00
Fernando Sahmkow
ca6f47c686
Reaper: Change memory restrictions on TC depending on host memory on VK.
2021-06-17 00:29:48 +02:00
Fernando Sahmkow
0dd98842bf
Reaper: Address Feedback.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
954ad2a61e
Reaper: Setup settings and final tuning.
2021-06-16 21:35:03 +02:00
Fernando Sahmkow
d8ad6aa187
Reaper: Tune it up to be an smart GC.
2021-06-16 21:35:02 +02:00
ReinUsesLisp
a11bc4a382
Initial Reaper Setup
...
WIP
2021-06-16 21:35:02 +02:00
ReinUsesLisp
5b1efe522e
vulkan_memory_allocator: Release allocations with no commits
2021-06-16 21:35:01 +02:00
ameerj
5fc8393125
astc_decoder: Fix LDR CEM1 endpoint calculation
...
Per the spec, L1 is clamped to the value 0xff if it is greater than 0xff. An oversight caused us to take the maximum of L1 and 0xff, rather than the minimum.
Huge thanks to wwylele for finding this.
Co-Authored-By: Weiyi Wang <wwylele@gmail.com>
2021-06-15 20:19:01 -04:00
ameerj
b2955479e5
configure_graphics: Add Accelerate ASTC decoding setting
2021-06-15 20:19:00 -04:00
ameerj
c4ff7ecf51
textures: Reintroduce CPU ASTC decoder
...
Users may want to fall back to the CPU ASTC texture decoder due to hangs
and crashes that may be caused by keeping the GPU under compute heavy
loads for extended periods of time. This is especially the case in games
such as Astral Chain which make extensive use of ASTC textures.
2021-06-15 20:19:00 -04:00
ReinUsesLisp
3d89398b84
texture_cache/util: Avoid relaxed image views on different bytes per pixel
...
Avoids API usage errors on UE4 titles leading to crashes.
2021-06-14 21:03:57 -03:00
lat9nq
932c0184a7
cmake: Fix find_program usage for 3.15
...
yuzu requires CMake 3.15 yet find_program was using REQUIRED, which is
only available on 3.18 and later. Instead, we check for
"<VAR>-NOTFOUND".
In addition, check for additional requirements before building libusb or
FFmpeg with autotools. Otherwise, CMake configuration will pass yet
compilation will fail.
2021-06-13 01:15:54 -04:00
Fernando Sahmkow
588ab44470
GPUTHread: Remove async reads from Normal Accuracy.
2021-06-11 17:27:17 +02:00
ReinUsesLisp
7b0d8bd1fb
rasterizer: Update pages in batches
2021-06-11 17:27:17 +02:00
Markus Wick
6755025310
Fix GCC undefined behavior sanitizer.
...
* Wrong alignment in u64 LOG_DEBUG -> memcpy.
* Huge shift exponent in stride calculation for linear buffer, unused result -> skipped.
* Large shift in buffer cache if word = 0, skip checking for set bits.
Non of those were critical, so this should not change any behavior.
At least with the assumption, that the last one used masking behavior, which always yield continuous_bits = 0.
2021-06-10 21:07:27 +02:00
bunnei
df91c9f5e6
Merge pull request #6410 from lat9nq/avoid-oob
...
decoders: Avoid out-of-bounds access
2021-06-07 10:51:17 -07:00
lat9nq
287a0f72a5
decoders: Break instead of continue
...
continue causes a memory leak in A Hat in Time.
2021-06-04 05:12:14 -04:00
lat9nq
1feefabeba
decoders: Avoid out-of-bounds access
...
This is not a real fix, so assert here and continue before crashing.
2021-06-04 05:03:54 -04:00
ameerj
859ba21f6d
buffer_cache: Simplify uniform disabling logic
2021-06-01 13:26:58 -04:00
bunnei
0a6f685ad0
Merge pull request #6367 from ReinUsesLisp/vma-host
...
vulkan_memory_allocator: Allow textures to be allocated in host memory
2021-05-31 23:35:11 -07:00
bunnei
8592f8a2b4
video_core: gpu: WaitFence: Do not block threads during shutdown.
...
- Fixes a hang on shutdown when NVFlinger thread is waiting on a syncpoint that will never occur.
- Commonly observed when stopping emulation in Super Mario Odyssey.
2021-05-29 01:06:04 -07:00
Markus Wick
5a8cd1b118
Fix two GCC 11 warnings: Unneeded copies.
...
std::move created an unneeded copy.
iterating without reference also created copies.
2021-05-29 08:57:44 +02:00
bunnei
4b95b0df97
video_core: rasterizer_cache: Use u16 for cached page count.
...
- Greatly reduces the risk of overflow, at the cost of doubling the size of this array.
2021-05-27 14:47:24 -07:00
ReinUsesLisp
19454e71d8
vulkan_memory_allocator: Allow textures to be allocated in host memory
...
Allow Vulkan's allocator to use host memory when there's no more device
local memory. This delays OOM, but it will eventually still happen.
2021-05-27 05:50:48 -03:00
Morph
065867e2c2
common: fs: Rework the Common Filesystem interface to make use of std::filesystem ( #6270 )
...
* common: fs: fs_types: Create filesystem types
Contains various filesystem types used by the Common::FS library
* common: fs: fs_util: Add std::string to std::u8string conversion utility
* common: fs: path_util: Add utlity functions for paths
Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library
* common: fs: file: Rewrite the IOFile implementation
* common: fs: Reimplement Common::FS library using std::filesystem
* common: fs: fs_paths: Add fs_paths to replace common_paths
* common: fs: path_util: Add the rest of the path functions
* common: Remove the previous Common::FS implementation
* general: Remove unused fs includes
* string_util: Remove unused function and include
* nvidia_flags: Migrate to the new Common::FS library
* settings: Migrate to the new Common::FS library
* logging: backend: Migrate to the new Common::FS library
* core: Migrate to the new Common::FS library
* perf_stats: Migrate to the new Common::FS library
* reporter: Migrate to the new Common::FS library
* telemetry_session: Migrate to the new Common::FS library
* key_manager: Migrate to the new Common::FS library
* bis_factory: Migrate to the new Common::FS library
* registered_cache: Migrate to the new Common::FS library
* xts_archive: Migrate to the new Common::FS library
* service: acc: Migrate to the new Common::FS library
* applets/profile: Migrate to the new Common::FS library
* applets/web: Migrate to the new Common::FS library
* service: filesystem: Migrate to the new Common::FS library
* loader: Migrate to the new Common::FS library
* gl_shader_disk_cache: Migrate to the new Common::FS library
* nsight_aftermath_tracker: Migrate to the new Common::FS library
* vulkan_library: Migrate to the new Common::FS library
* configure_debug: Migrate to the new Common::FS library
* game_list_worker: Migrate to the new Common::FS library
* config: Migrate to the new Common::FS library
* configure_filesystem: Migrate to the new Common::FS library
* configure_per_game_addons: Migrate to the new Common::FS library
* configure_profile_manager: Migrate to the new Common::FS library
* configure_ui: Migrate to the new Common::FS library
* input_profiles: Migrate to the new Common::FS library
* yuzu_cmd: config: Migrate to the new Common::FS library
* yuzu_cmd: Migrate to the new Common::FS library
* vfs_real: Migrate to the new Common::FS library
* vfs: Migrate to the new Common::FS library
* vfs_libzip: Migrate to the new Common::FS library
* service: bcat: Migrate to the new Common::FS library
* yuzu: main: Migrate to the new Common::FS library
* vfs_real: Delete the contents of an existing file in CreateFile
Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now.
* input_profiles: Don't iterate the input profile dir if it does not exist
Silences an error produced in the log if the directory does not exist.
* game_list_worker: Skip parsing file if the returned VfsFile is nullptr
Prevents crashes in GetLoader when the virtual file is nullptr
* common: fs: Validate paths for path length
* service: filesystem: Open the mod load directory as read only
2021-05-25 19:32:56 -04:00
bunnei
5068279f23
Merge pull request #6248 from A-w-x/intelmesa
...
gl_device: Intel: Disable texture view formats workaround on mesa
2021-05-20 23:47:14 -07:00
bunnei
7d86a6ff02
Merge pull request #6317 from ameerj/fps-fix
...
perf_stats: Rework FPS counter to be more accurate
2021-05-18 19:56:29 -07:00
bunnei
93bc59b62d
Merge pull request #6322 from ameerj/fast-null-buffer
...
buffer_cache: Ensure null buffers cannot take the fast uniform bind path
2021-05-17 15:45:36 -07:00
ameerj
acf22336ec
buffer_cache: Ensure null buffers cannot take the fast uniform bind path
...
Fixes a crash in New Pokemon Snap
2021-05-16 07:43:40 -04:00
bunnei
a1138028a8
Merge pull request #6289 from ameerj/oob-blit
...
texture_cache: Handle out of bound texture blits
2021-05-15 21:32:37 -07:00
ameerj
5bef54618a
perf_stats: Rework FPS counter to be more accurate
...
The FPS counter was based on metrics in the nvdisp swapbuffers call. This metric would be accurate if the gpu thread/renderer were synchronous with the nvdisp service, but that's no longer the case.
This commit moves the frame counting responsibility onto the concrete renderers after their frame draw calls. Resulting in more meaningful metrics.
The displayed FPS is now made up of the average framerate between the previous and most recent update, in order to avoid distracting FPS counter updates when framerate is oscillating between close values.
The status bar update frequency was also changed from 2 seconds to 500ms.
2021-05-15 20:34:20 -04:00
ameerj
3671fd0a97
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.
2021-05-07 22:14:21 -04:00
bunnei
2a7eff57a8
hle: kernel: Rename Process to KProcess.
2021-05-05 16:40:52 -07:00
A-w-x
6a2084a204
gl_device: Intel: Disable texture view formats workaround on mesa
2021-04-26 18:14:10 +02:00
bunnei
3c5fb53634
Merge pull request #6237 from ameerj/nvdec-end-fix
...
nvhost_vic: Fix device closure
2021-04-25 23:05:58 -07:00
ameerj
ae758a236f
vk_texture_cache: Swap R and B channels of color flipped format
...
Swaps the Red and Blue channels of the A1B5G5R5_UNORM texture format, which was being incorrectly rendered.
2021-04-24 23:59:42 -04:00
ameerj
75e0d16caa
nvhost_vic: Fix device closure
...
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.
2021-04-24 19:22:09 -04:00
Lioncash
17b7f0389a
texture_cache/util: Fix src being used instead of dst within DeduceBlitImages
...
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.
2021-04-19 13:01:50 -04:00
bunnei
9ad77ba6d3
Merge pull request #6125 from ogniK5377/nvdec-close-dev
...
nvdrv: Cleanup CDMA Processor on device closure
2021-04-16 23:14:44 -07:00
Chloe Marcec
edb1d5d242
Address issues
2021-04-16 13:52:32 +10:00
bunnei
de5bf640b7
Merge pull request #6196 from bunnei/asserts-setting
...
core: settings: Add setting for debug assertions and disable by default.
2021-04-14 17:47:18 -07:00
bunnei
a4c6712a4b
common: Move settings to common from core.
...
- Removes a dependency on core and input_common from common.
2021-04-14 16:24:03 -07:00
bunnei
8146c8c5e7
Merge pull request #6191 from lioncash/vdtor
...
engine_interface: Add missing virtual destructor
2021-04-13 19:59:10 -07:00
bunnei
12a343ed8d
Merge pull request #6190 from lioncash/constfn2
...
vk_master_semaphore: Add missing const qualifier for IsFree()
2021-04-13 17:52:38 -07:00
bunnei
62b560e8e3
Merge pull request #6188 from lioncash/bits
...
vk_texture_cache: Make use of bit_cast where applicable
2021-04-13 16:44:49 -07:00
bunnei
154eb3cfbe
Merge pull request #6187 from lioncash/sign-conv
...
texure_cache/util: Resolve implicit sign conversions with std::reduce
2021-04-13 09:46:32 -07:00
Lioncash
31932904c5
engine_interface: Add missing virtual destructor
...
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.
2021-04-12 09:53:55 -04:00
Lioncash
9b331a5fb5
vk_master_semaphore: Deduplicate atomic access within IsFree()
...
We can just reuse the already existing KnownGpuTick() to deduplicate the
access.
2021-04-12 09:41:55 -04:00
Lioncash
c5f5d6e7f6
vk_master_semaphore: Add missing const qualifier for IsFree()
...
This member function doesn't modify class state.
2021-04-12 09:41:23 -04:00
Lioncash
4198c92ed0
vk_texture_cache: Make use of Common::BitCast where applicable
...
Also clarify the TODO comment a little more on the lacking
implementations for std::bit_cast.
2021-04-12 09:17:36 -04:00
Lioncash
fddb278aa3
texure_cache/util: Resolve implicit sign conversions with std::reduce
...
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.
2021-04-12 05:21:53 -04:00
Lioncash
4209588505
query_cache: Make use of std::erase_if
...
Same behavior, but much more straightforward to read.
2021-04-12 04:51:18 -04:00
Rodrigo Locatti
ddbd1387aa
Merge pull request #6181 from Joshua-Ashton/robustness_features
...
vulkan_device: Enable EXT_robustness2 features
2021-04-11 20:42:14 -03:00
Joshua Ashton
0ec6cb942d
vk_buffer_cache: Fix offset for NULL vertex buffers
...
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
2021-04-11 10:34:52 +01:00
Joshua Ashton
08337a492d
vulkan_device: Enable EXT_robustness2 features
...
When this was being made mandatory, these enablement of these features was removed, but this is still needed.
Fixes: 757fd1e917
("vulkan_device: Require VK_EXT_robustness2")
2021-04-11 09:48:38 +01:00
Joshua Ashton
bcf58c8210
renderer_vulkan: Check return value of AcquireNextImage
...
We can get into a really bad state by ignoring this
leading to device loss and using incorrect resources.
2021-04-11 09:27:50 +01:00
Markus Wick
e8bd9aed8b
video_core: Use a CV for blocking commands.
...
There is no need for a busy loop here. Let's just use a condition variable to save some power.
2021-04-07 22:38:52 +02:00
Markus Wick
e6fb49fa4b
video_core/gpu_thread: Keep the write lock for allocating the fence.
...
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.
2021-04-07 22:38:52 +02:00
Markus Wick
5145133a60
video_core/gpu_thread: Implement a ShutDown method.
...
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.
2021-04-07 22:38:52 +02:00
Markus Wick
4aec060f6d
common/threadsafe_queue: Provide Wait() method.
...
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.
2021-04-07 22:38:52 +02:00
lat9nq
a60653dcd3
vp9: Avoid memcpy with null pointers
...
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>
2021-04-05 00:44:38 -04:00
Rodrigo Locatti
5ee669466f
Merge pull request #5927 from ameerj/astc-compute
...
video_core: Accelerate ASTC texture decoding using compute shaders
2021-03-30 19:31:52 -03:00
Chloe Marcec
bf1c1788ca
nvdrv: Cleanup CDMA Processor on device closure
...
Brings us a step closer to unifying all channels to share a common interface.
2021-03-30 20:37:40 +11:00
Jan Beich
9b50b23a50
vulkan_common: enable OpenGL interop on other Unices
2021-03-30 00:25:25 +00:00
ameerj
2f83d9a61b
astc_decoder: Refactor for style and more efficient memory use
2021-03-25 16:53:51 -04:00
Jan Beich
8c016b02e7
gl_device: unblock async shaders on other Unix systems
...
Mesa is the primary OpenGL provider on all FreeDesktop systems.
For example, iris is used on Intel GPU + FreeBSD by default.
2021-03-24 19:59:20 +00:00
lat9nq
538f097f97
gl_device: Block async shaders on AMD and Intel
...
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.
2021-03-21 01:25:45 -04:00
Rodrigo Locatti
2f30c10584
astc_decoder: Reimplement Layers
...
Reimplements the approach to decoding layers in the compute shader. Fixes multilayer astc decoding when using Vulkan.
2021-03-13 12:16:03 -05:00
ameerj
c7553abe89
astc_decoder: Fix out of bounds memory access
...
resolves a crash with some anamolous textures found in Astral Chain.
2021-03-13 12:16:03 -05:00
ameerj
20eb368e14
renderer_vulkan: Accelerate ASTC decoding
...
Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
2021-03-13 12:16:03 -05:00
ameerj
f6566338eb
host_shaders: Modify shader cmake integration to allow for larger shaders
...
using a raw string to encapsulate the entire shader code limits us to shaders of size less than 2KB. This change overcomes this limitation.
2021-03-13 12:16:03 -05:00
ameerj
2985e5e94c
renderer_opengl: Accelerate ASTC texture decoding with a compute shader
...
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.
2021-03-13 12:16:03 -05:00
bunnei
4735d18bb9
Merge pull request #6028 from bunnei/raster-cache
...
video_core: rasterizer_accelerated: Use a flat array instead of interval_map for cached pages.
2021-03-12 21:57:27 -08:00
bunnei
a9d24b0df3
video_core: rasterizer_accelerated: Fix un/signed mismatch.
2021-03-12 21:52:49 -08:00
Rodrigo Locatti
daf5c5060b
Merge pull request #5891 from ameerj/bgra-ogl
...
renderer_opengl: Use compute shaders to swizzle BGR textures on copy
2021-03-09 02:47:51 -03:00
bunnei
d1a7b2eca7
Merge pull request #6021 from ReinUsesLisp/skip-cache-heuristic
...
buffer_cache: Heuristically decide to skip cache on uniform buffers
2021-03-08 17:48:55 -08:00
ameerj
5213f70230
texture_cache: Blacklist BGRA8 copies and views on OpenGL
...
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.
2021-03-04 14:14:49 -05:00
ameerj
0639244d85
renderer_opengl: Swizzle BGR textures on copy
...
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.
2021-03-04 14:14:19 -05:00
bunnei
b8b5891585
Merge pull request #5989 from ReinUsesLisp/cmdpool
...
vk_command_pool: Reduce the command pool size from 4096 to 4
2021-03-04 11:07:31 -08:00
bunnei
50ee9c46ab
video_core: rasterizer_accelerated: Fix delta check ordering.
2021-03-02 17:48:02 -08:00
bunnei
6ab839462c
video_core: rasterizer_accelerated: Improve error handling & fix implicit conversion.
2021-03-02 17:44:02 -08:00
bunnei
94da1e8a7e
video_core: rasterizer_accelerated: Use a flat array instead of interval_map for cached pages.
...
- Uses a fixed 64MB for the cache instead of an ever growing map.
- Slightly faster by using atomics instead of a single mutex for access.
- Thanks for Rodrigo for the idea.
2021-03-02 16:57:53 -08:00
ReinUsesLisp
5ad62e7bfc
buffer_cache: Heuristically decide to skip cache on uniform buffers
...
Some games benefit from skipping caches (Pokémon Sword), and others
don't (Animal Crossing: New Horizons). Add an heuristic to decide this
at runtime.
The cache hit ratio has to be ~98% or better to not skip the cache.
There are 16 frames of buffer.
2021-03-02 02:44:19 -03:00
ameerj
52e9d7fa49
gpu_thread: Remove Async NVDEC placeholders
...
This commit removes early placeholders for an implementation of async nvdec. With recent changes to the source code, the placeholders are no longer accurate, and can cause a nullptr dereference due to the nature of the cdma_pusher lifetime.
2021-02-28 22:03:00 -05:00
bunnei
55f556c53e
Merge pull request #5984 from jbeich/gcc-freebsd
...
common,video-core: unbreak GCC 11 build on FreeBSD 13
2021-02-27 14:15:00 -07:00
bunnei
09f7c355c6
Merge pull request #5953 from bunnei/memory-refactor-1
...
Kernel Rework: Memory updates and refactoring (Part 1)
2021-02-27 12:48:35 -07:00
Kelebek1
d31dbb1bc1
Implement glDepthRangeIndexeddNV
2021-02-24 22:26:53 +00:00
ReinUsesLisp
aae399c1a8
vk_command_pool: Reduce the command pool size from 4096 to 4
...
This allows drivers to reuse memory more easily and preallocate less.
The optimal number has been measured booting Pokémon Sword.
2021-02-23 19:08:24 -03:00
Jan Beich
1841ca4b9b
video_core: add missing header after 468bd9c1b0
...
src/video_core/shader_notify.cpp: In member function 'void VideoCore::ShaderNotify::MarkShaderComplete()':
src/video_core/shader_notify.cpp:33:10: error: 'unique_lock' is not a member of 'std'
33 | std::unique_lock lock{mutex};
| ^~~~~~~~~~~
src/video_core/shader_notify.cpp:6:1: note: 'std::unique_lock' is defined in header '<mutex>'; did you forget to '#include <mutex>'?
5 | #include "video_core/shader_notify.h"
+++ |+#include <mutex>
6 |
src/video_core/shader_notify.cpp: In member function 'void VideoCore::ShaderNotify::MarkSharderBuilding()':
src/video_core/shader_notify.cpp:38:10: error: 'unique_lock' is not a member of 'std'
38 | std::unique_lock lock{mutex};
| ^~~~~~~~~~~
src/video_core/shader_notify.cpp:38:10: note: 'std::unique_lock' is defined in header '<mutex>'; did you forget to '#include <mutex>'?
2021-02-23 00:04:36 +00:00
bunnei
20245e660f
Merge pull request #5936 from Kelebek1/Offsets
...
Offsets for TexelFetch and TextureGather in Vulkan
2021-02-21 21:23:45 -07:00
Morph
1a5d4d7840
gl_disk_shader_cache: Log total shader entries count on game load
2021-02-20 11:08:19 -05:00
bunnei
728ee181eb
Merge pull request #5924 from ReinUsesLisp/inline-bindings
...
vk_update_descriptor: Inline and improve code for binding buffers
2021-02-19 12:27:10 -08:00
bunnei
93e20867b0
hle: kernel: Migrate PageHeap/PageTable to KPageHeap/KPageTable.
2021-02-18 16:16:25 -08:00
bunnei
9cae3e6e90
Merge pull request #4973 from ameerj/nvdec-opt
...
nvdec: Reuse allocated buffers and general cleanup
2021-02-18 15:12:07 -08:00
ReinUsesLisp
24d0cc3ab8
vk_rasterizer: Fix loading shader addresses twice
...
This was recently introduced on a wrongly rebased commit.
2021-02-15 21:34:13 -03:00
bunnei
cffa6f4e62
Merge pull request #5923 from ReinUsesLisp/vk-dirty-pipeline
...
fixed_pipeline_cache: Use dirty flags to lazily update key
2021-02-15 13:17:27 -08:00
Kelebek1
9d8f793969
Review 1
2021-02-15 05:26:28 +00:00
Kelebek1
fb54c38631
Implement texture offset support for TexelFetch and TextureGather and add offsets for Tlds
...
Formatting
2021-02-15 00:36:37 +00:00
bunnei
eae9f2e440
yuzu: Various frontend improvements to avoid crashes and improve experience on Linux.
2021-02-14 00:20:41 -08:00
ReinUsesLisp
b8ffdbb167
vk_resource_pool: Load GPU tick once and compare with it
...
Other minor style improvements. Rename free_iterator to hint_iterator,
to describe better what it does.
2021-02-13 17:53:58 -03:00
ReinUsesLisp
21b40de318
vk_update_descriptor: Inline and improve code for binding buffers
...
Allow compilers with our settings inline hot code.
2021-02-13 17:46:24 -03:00
ReinUsesLisp
70353649d7
fixed_pipeline_cache: Use dirty flags to lazily update key
...
Use dirty flags to avoid building pipeline key from scratch on each draw
call. This saves a bit of unnecesary work on each draw call.
2021-02-13 17:44:47 -03:00
ameerj
c7325c6a4c
gl_texture_cache: Lazily create non-sRGB texture views for sRGB formats
...
This creates non-sRGB texture views for sRGB texture formats to allow for interfacing with these views in compute shaders using imageLoad and imageStore.
Co-Authored-By: Rodrigo Locatti <reinuseslisp@airmail.cc>
2021-02-13 13:27:50 -05:00
ameerj
b675c44e49
rebase, fix name shadowing, more const
2021-02-13 13:07:56 -05:00