Fernando Sahmkow
46bb609981
Kernel: Optimize condition variable threads management.
2019-11-21 11:13:29 -04:00
Fernando Sahmkow
2ab41ceff4
Kernel: Correct SignalProcessWideKey
...
When the target is 0, all threads must be processed.
2019-11-21 10:46:55 -04:00
Fernando Sahmkow
2d16507f9f
Kernel: Correct behavior of Condition Variables to be more similar to real hardware.
...
This commit ensures cond var threads act exactly as they do in the real
console. The original implementation uses an RBTree and the behavior of
cond var threads is that at the same priority level they act like a
FIFO.
2019-11-21 10:46:55 -04:00
Fernando Sahmkow
67a8bd1e70
Merge pull request #3126 from yuzu-emu/revert-3106-bitfield
...
Revert "common/bit_field: Silence sign-conversion warnings"
2019-11-16 14:23:15 -04:00
Fernando Sahmkow
7d16b2d2dd
Kernel: Correct Cancel Synchronization.
...
This commit corrects the behavior of cancel synchronization when the
thread is running/ready and ensures the next wait is cancelled as it's
suppose to.
2019-11-16 12:41:51 -04:00
Fernando Sahmkow
b6f6733131
Merge pull request #3081 from ReinUsesLisp/fswzadd-shuffles
...
shader: Implement FSWZADD and reimplement SHFL
2019-11-14 10:27:27 -04:00
Fernando Sahmkow
3d7c284e0f
GLSLDecompiler: Correct Texture Gather Offset.
...
This commit corrects the argument ordering in textureGatherOffset.
2019-11-07 11:43:56 -04:00
Fernando Sahmkow
23cabc98db
Shader_IR: Fix regression on TLD4
...
Originally on the last commit I thought TLD4 acted the same as TLD4S and
didn't have a mask. It actually does have a component mask. This commit
corrects that.
2019-10-30 21:14:57 -04:00
Fernando Sahmkow
9293c3a0f2
Shader_IR: Fix TLD4 and add Bindless Variant.
...
This commit fixes an issue where not all 4 results of tld4 were being
written, the color component was defaulted to red, among other things.
It also implements the bindless variant.
2019-10-30 12:02:03 -04:00
Fernando Sahmkow
3f9262195b
Video_Core: Implement texture format E5B9G9R9_SHAREDEXP.
...
This commit implements the E5B9G9R9 Texture format into the general
system and OpenGL backend.
2019-10-27 16:44:09 -04:00
Fernando Sahmkow
be856a38d6
Shader_IR: Address Feedback.
2019-10-26 15:38:30 -04:00
Fernando Sahmkow
e3afd6595a
Shader_IR: Clang format
2019-10-25 09:01:32 -04:00
Fernando Sahmkow
1244f2d368
Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.
2019-10-25 09:01:31 -04:00
Fernando Sahmkow
a05120ec0b
Shader_IR: Correct typo in Consistent method.
2019-10-25 09:01:30 -04:00
Fernando Sahmkow
33fcec3502
Shader_IR: allow lookup of texture samplers within the shader_ir for instructions that don't provide it
2019-10-25 09:01:30 -04:00
Fernando Sahmkow
8909f52166
Shader_IR: Implement Fast BRX and allow multi-branches in the CFG.
2019-10-25 09:01:30 -04:00
Fernando Sahmkow
acd6441134
Shader_Cache: setup connection of ConstBufferLocker
2019-10-25 09:01:29 -04:00
Fernando Sahmkow
1a58f45d76
VideoCore: Unify const buffer accessing along engines and provide ConstBufferLocker class to shaders.
2019-10-25 09:01:29 -04:00
Fernando Sahmkow
2ef696c85a
Shader_IR: Implement BRX tracking.
2019-10-25 09:01:29 -04:00
Fernando Sahmkow
c4a0aa9207
Merge pull request #2995 from ReinUsesLisp/ignore-gmem
...
shader_ir/memory: Ignore global memory when tracking fails
2019-10-22 13:22:43 -04:00
Fernando Sahmkow
7ecf9f7228
Merge pull request #2983 from lioncash/fallthrough
...
gl_shader_decompiler/vk_shader_decompiler: Resolve implicit fallthrough cases
2019-10-22 13:16:46 -04:00
Fernando Sahmkow
1509d2ffbd
Shader_Ir: Fix TLD4S from using a component mask.
...
TLD4S always outputs 4 values, the previous code checked a component
mask and omitted those values that weren't part of it. This commit
corrects that and makes sure all 4 values are set.
2019-10-22 10:59:07 -04:00
Fernando Sahmkow
c0eb1aecfd
Fermi2D: Use a different formula for delimiting blit areas.
2019-10-17 18:21:01 -04:00
Fernando Sahmkow
57a46c69f1
Fermi2D: limit blit area to only available area
...
Normaly OpenGL does not care if the areas exceed the texture regions but
other backends such as Vulkan do care about the limits of this areas.
This PR crops the areas of the blit in order that they don't surpass the
limits of the textures. This should help Vulkan and faulty OpenGL
drivers
2019-10-17 10:38:44 -04:00
Fernando Sahmkow
64e652d8cb
Kernel Thread: Cleanup THREADPROCESSORID_DONT_UPDATE.
2019-10-15 11:55:30 -04:00
Fernando Sahmkow
e28c7f5217
Kernel: Address Feedback 2
2019-10-15 11:55:28 -04:00
Fernando Sahmkow
a3524879be
Kernel: Clang Format
2019-10-15 11:55:27 -04:00
Fernando Sahmkow
c32520ceb7
Kernel: Reverse global accessor removal.
2019-10-15 11:55:26 -04:00
Fernando Sahmkow
3073615dbc
Kernel: Address Feedback.
2019-10-15 11:55:25 -04:00
Fernando Sahmkow
25f8606a6d
Kernel Scheduler: Make sure the global scheduler shutdowns correctly.
2019-10-15 11:55:24 -04:00
Fernando Sahmkow
b3c1deba49
Kernel_Thread: Eliminate most global accessors.
2019-10-15 11:55:23 -04:00
Fernando Sahmkow
0b72b34d89
KernelSVC: Assert that condition variable address is aligned to 4 bytes.
2019-10-15 11:55:22 -04:00
Fernando Sahmkow
96b1b144af
Kernel: Correct Paused scheduling
2019-10-15 11:55:21 -04:00
Fernando Sahmkow
1c6a11ab14
Kernel: Corrections to Wait Objects clearing in which a thread could still be signalled after a timeout or a cancel.
2019-10-15 11:55:20 -04:00
Fernando Sahmkow
27d571c084
Kernel: Correct redundant yields to only advance time forward.
2019-10-15 11:55:20 -04:00
Fernando Sahmkow
7176857177
Kernel: Corrections to ModifyByWaitingCountAndSignalToAddressIfEqual
2019-10-15 11:55:19 -04:00
Fernando Sahmkow
44e09e5f21
Kernel: Correct Results in Condition Variables and Mutexes
2019-10-15 11:55:18 -04:00
Fernando Sahmkow
1ec1e81373
Kernel: Clang Format
2019-10-15 11:55:17 -04:00
Fernando Sahmkow
e05a8c2385
Kernel: Remove global system accessor from WaitObject
2019-10-15 11:55:16 -04:00
Fernando Sahmkow
0cf26cee59
Scheduler: Implement Yield Count and Core migration on Thread Preemption.
2019-10-15 11:55:16 -04:00
Fernando Sahmkow
2d382de6fa
Scheduler: Corrections to YieldAndBalanceLoad and Yield bombing protection.
2019-10-15 11:55:15 -04:00
Fernando Sahmkow
b49c0dab87
Kernel: Initial implementation of thread preemption.
2019-10-15 11:55:14 -04:00
Fernando Sahmkow
103f3a2fe5
Scheduler: Add protections for Yield bombing
...
In case of redundant yields, the scheduler will now idle the core for
it's timeslice, in order to avoid continuously yielding the same thing
over and over.
2019-10-15 11:55:13 -04:00
Fernando Sahmkow
82218c925a
Kernel: Style and Corrections
2019-10-15 11:55:12 -04:00
Fernando Sahmkow
fcc6b34fff
Correct PrepareReschedule
2019-10-15 11:55:12 -04:00
Fernando Sahmkow
3a94e7ea33
Comment and reorganize the scheduler
2019-10-15 11:55:11 -04:00
Fernando Sahmkow
b5d1e44782
Add PrepareReschedule where required.
2019-10-15 11:55:10 -04:00
Fernando Sahmkow
b8b7ebcece
Correct compiling errors and addapt to the new interface.
2019-10-15 11:55:09 -04:00
Fernando Sahmkow
9031502974
Correct Supervisor Calls to work with the new scheduler,
2019-10-15 11:55:08 -04:00
Fernando Sahmkow
47c6c78c03
Redesign CPU Cores to work with the new scheduler
2019-10-15 11:55:07 -04:00
Fernando Sahmkow
57a71f899a
Add interfacing to the Global Scheduler
2019-10-15 11:55:07 -04:00
Fernando Sahmkow
a1ac0c6cb4
Addapt thread class to the new Scheduler
2019-10-15 11:55:06 -04:00
Fernando Sahmkow
b164d8ee53
Implement a new Core Scheduler
2019-10-15 11:55:04 -04:00
Fernando Sahmkow
a4ae11d63e
Core_Timing: Address Remaining feedback.
2019-10-12 07:26:38 -04:00
Fernando Sahmkow
91f6333e23
Core_Timing: Fix tests.
2019-10-12 07:23:08 -04:00
Fernando Sahmkow
e0650a2034
Core_Timing: Address Feedback and suppress warnings.
2019-10-11 14:44:14 -04:00
Fernando Sahmkow
cfc2f30dc4
AsyncGpu: Address Feedback
2019-10-11 13:41:15 -04:00
Fernando Sahmkow
f32a49d3d8
Surfaces: Implement R4G4B4A4U format.
2019-10-09 12:57:02 -04:00
Fernando Sahmkow
b9ddb517b1
Surfaces: Implement ASTC 6x6 10x10 12x12 8x6 6x5
2019-10-09 12:44:31 -04:00
Fernando Sahmkow
96f2b16356
Core Timing: Correct Idle and remove lefting pragma
2019-10-09 12:30:33 -04:00
Fernando Sahmkow
65aff6930b
Core Timing: General corrections and added tests.
2019-10-09 12:30:33 -04:00
Fernando Sahmkow
c9a1129c95
Tests: Eliminate old Core Timing Tests
2019-10-09 12:30:32 -04:00
Fernando Sahmkow
555866f8dc
Core Timing: Rework Core Timing to run all cores evenly.
2019-10-09 12:30:31 -04:00
Fernando Sahmkow
971870b89d
Merge pull request #2959 from ReinUsesLisp/cbuf-hsetp2
...
shader/half_set_predicate: Fix HSETP2 for constant buffers
2019-10-08 12:00:44 -04:00
Fernando Sahmkow
8f407adeeb
Merge pull request #2954 from ReinUsesLisp/fix-invalidation
...
gl_shader_disk_cache: Properly ignore existing cache
2019-10-06 17:48:14 -04:00
Fernando Sahmkow
47ccfabe18
Merge pull request #2944 from lioncash/ast
...
video_core/shader: Minor changes
2019-10-05 12:02:51 -04:00
Fernando Sahmkow
538f5880ff
GL_Renderer: Remove lefting snippet.
2019-10-04 19:59:55 -04:00
Fernando Sahmkow
75395605d6
NvFlinger: Remove leftover from corrections and clang format.
2019-10-04 19:59:54 -04:00
Fernando Sahmkow
9f2719d1a4
Gl_Rasterizer: Protect CPU Memory mapping from multiple threads.
2019-10-04 19:59:53 -04:00
Fernando Sahmkow
3f104464de
Core: Wait for GPU to be idle before shutting down.
2019-10-04 19:59:53 -04:00
Fernando Sahmkow
69fa2e6525
Nvdrv: Correct Event setup in Nvdrv
...
Events are supposed to be cleared on quering. This fixes that issue.
2019-10-04 19:59:52 -04:00
Fernando Sahmkow
782b7a0ca4
NVFlinger: Reverse the change that only signaled events on buffer acquire.
...
This has been hardware tested and it seems that NVFlinger will still
signal even if there are no buffers to present.
2019-10-04 19:59:51 -04:00
Fernando Sahmkow
ffc2ce89a0
Nvdrv: Do framelimiting only in the CPU Thread
2019-10-04 19:59:50 -04:00
Fernando Sahmkow
976d9ef43c
NvFlinger: Don't swap buffers if a frame is missing and always trigger event in sync gpu.
2019-10-04 19:59:49 -04:00
Fernando Sahmkow
5b5e60ffec
GPU_Async: Correct fences, display events and more.
...
This commit uses guest fences on vSync event instead of an articial fake
fence we had.
It also corrects to keep signaling display events while loading the game
as the OS is suppose to send buffers to vSync during that time.
2019-10-04 19:59:48 -04:00
Fernando Sahmkow
4e9f975935
Nvdrv: Correct Async regression and avoid signaling empty buffer vsyncs
2019-10-04 19:59:47 -04:00
Fernando Sahmkow
ab47a660c8
Texture_Cache: Blit Deduction corrections and simplifications.
2019-10-04 18:53:47 -04:00
Fernando Sahmkow
2036504a82
TextureCache: Add the ability to deduce if two textures are depth on blit.
2019-10-04 18:53:46 -04:00
Fernando Sahmkow
e6eae4b815
Shader_ir: Address feedback
2019-10-04 18:52:57 -04:00
Fernando Sahmkow
3c09d9abe6
Shader_Ir: Address Feedback and clang format.
2019-10-04 18:52:57 -04:00
Fernando Sahmkow
507a9c6a40
vk_shader_decompiler: Correct Branches inside conditionals.
2019-10-04 18:52:56 -04:00
Fernando Sahmkow
000ad558dd
vk_shader_decompiler: Clean code and be const correct.
2019-10-04 18:52:55 -04:00
Fernando Sahmkow
7c756baa77
Shader_IR: clean up AST handling and add documentation.
2019-10-04 18:52:55 -04:00
Fernando Sahmkow
5ea740beb5
Shader_IR: Correct OutwardMoves for Ifs
2019-10-04 18:52:54 -04:00
Fernando Sahmkow
100a4bd988
vk_shader_compiler: Don't enclose branches with if(true) to avoid crashing AMD
2019-10-04 18:52:54 -04:00
Fernando Sahmkow
189a50bc2a
gl_shader_decompiler: Refactor and address feedback.
2019-10-04 18:52:53 -04:00
Fernando Sahmkow
b3c46d6948
Shader_IR: corrections and clang-format
2019-10-04 18:52:53 -04:00
Fernando Sahmkow
466cd52ad4
vk_shader_compiler: Correct SPIR-V AST Decompiling
2019-10-04 18:52:52 -04:00
Fernando Sahmkow
2e9a810423
Shader_IR: allow else derivation to be optional.
2019-10-04 18:52:52 -04:00
Fernando Sahmkow
ca9901867e
vk_shader_compiler: Implement the decompiler in SPIR-V
2019-10-04 18:52:51 -04:00
Fernando Sahmkow
0366c18d87
Shader_IR: mark labels as unused for partial decompile.
2019-10-04 18:52:51 -04:00
Fernando Sahmkow
47e4f6a52c
Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes.
2019-10-04 18:52:50 -04:00
Fernando Sahmkow
38fc995f6c
gl_shader_decompiler: Implement AST decompiling
2019-10-04 18:52:50 -04:00
Fernando Sahmkow
6fdd501113
shader_ir: Declare Manager and pass it to appropiate programs.
2019-10-04 18:52:49 -04:00
Fernando Sahmkow
8be6e1c522
shader_ir: Corrections to outward movements and misc stuffs
2019-10-04 18:52:48 -04:00
Fernando Sahmkow
4fde66e609
shader_ir: Add basic goto elimination
2019-10-04 18:52:48 -04:00
Fernando Sahmkow
c17953978b
shader_ir: Initial Decompile Setup
2019-10-04 18:52:47 -04:00
Fernando Sahmkow
678d9ccad6
SDL: Fix missing header
...
This fixes linux and mingw builds.
2019-10-04 18:14:11 -04:00
Fernando Sahmkow
a755f24369
Merge pull request #2873 from ogniK5377/new-ioctls
...
Initial implementation of Ioctl2 & Ioctl3
2019-09-22 09:45:29 -04:00
Fernando Sahmkow
4ace69de9c
Merge pull request #2884 from ogniK5377/deglobal-sys-services
...
Remove usage of System::CurrentInterface() from most services
2019-09-22 09:38:13 -04:00