Commit graph

12893 commits

Author SHA1 Message Date
ReinUsesLisp
a075bbcf36 renderer_opengl: Add assembly program code paths
Add code required to use OpenGL assembly programs based on
NV_gpu_program5. Decompilation for ARB programs is intended to be added
in a follow up commit. This does **not** include ARB decompilation and
it's not in an usable state.

The intention behind assembly programs is to reduce shader stutter
significantly on drivers supporting NV_gpu_program5 (and other required
extensions). Currently only Nvidia's proprietary driver supports these
extensions.

Add a UI option hidden for now to avoid people enabling this option
accidentally.

This code path has some limitations that OpenGL compatibility doesn't
have:
- NV_shader_storage_buffer_object is limited to 16 entries for a single
OpenGL context state (I don't know if this is an intended limitation, an
specification issue or I am missing something). Currently causes issues
on The Legend of Zelda: Link's Awakening.
- NV_parameter_buffer_object can't bind buffers using an offset
different to zero. The used workaround is to copy to a temporary buffer
(this doesn't happen often so it's not an issue).

On the other hand, it has the following advantages:
- Shaders build a lot faster.
- We have control over how floating point rounding is done over
individual instructions (SPIR-V on Vulkan can't do this).
- Operations on shared memory can be unsigned and signed.
- Transform feedbacks are dynamic state (not yet implemented).
- Parameter buffers (uniform buffers) are per stage, matching NVN and
hardware's behavior.
- The API to bind and create assembly programs makes sense, unlike
ARB_separate_shader_objects.
2020-05-19 18:00:04 -03:00
ReinUsesLisp
541a254c2e yuzu: Add frontend settings for assembly shaders
Add settings for assembly shaders. Currently hidden to avoid users from
accidentally enabled them.
2020-05-19 17:53:17 -03:00
bunnei
c5fbedf14c Merge pull request #3665 from bunnei/device-save
FS: Improve emulation of device saves
2020-05-16 12:39:58 -04:00
bunnei
c04e78c136 Merge pull request #3945 from ogniK5377/nvflinger-pixformat
nv_flinger: Use enum for pixel format instead of u32
2020-05-16 02:00:50 -04:00
David Marcec
97c023e3f0 nv_flinger: Use enum for pixel format instead of u32 2020-05-16 13:47:55 +10:00
David Marcec
67d7c0f45e DmaPusher: Remove dead code in step 2020-05-16 12:42:27 +10:00
bunnei
738e2cca7c Merge pull request #3942 from ReinUsesLisp/flush-and-invalidate
vk_rasterizer: Match OpenGL's FlushAndInvalidate behavior
2020-05-15 21:34:07 -04:00
ReinUsesLisp
635a3add8b vk_rasterizer: Match OpenGL's FlushAndInvalidate behavior
Match OpenGL's behavior. This can fix or simplify bisecting issues on
Vulkan.
2020-05-15 20:40:08 -03:00
Morph
eedbf90664 frontend: Set minimum window size to 640x360 instead of 1280x720 (#3413) 2020-05-15 22:22:27 +02:00
bunnei
9e03fc2e29 Merge pull request #3927 from jroweboy/fix-bug
Frontend: Remove tracking for context wrapper
2020-05-14 00:07:38 -04:00
bunnei
84bd1a0189 Merge pull request #3757 from ogniK5377/better-voice-mixing
audio_renderer: Better voice mixing and 6 channel downmixing
2020-05-13 22:46:41 -04:00
bunnei
bcfcfaca32 Merge pull request #3909 from bunnei/timezone
Improve time zone support
2020-05-13 21:41:45 -04:00
bunnei
b0d4fdb600 Merge pull request #3899 from ReinUsesLisp/float-comparisons
shader_ir: Add separate instructions for ordered and unordered comparisons and fix NE on GLSL
2020-05-13 09:51:14 -04:00
bunnei
053399a553 time_zone: Use std::chrono::seconds for strong typing. 2020-05-12 18:44:07 -04:00
James Rowe
99f5c3ca7f Frontend: Remove tracking for context wrapper 2020-05-11 23:50:03 -06:00
bunnei
250593c05d Merge pull request #3816 from ReinUsesLisp/vk-rasterizer-enable
vk_graphics_pipeline: Implement rasterizer_enable on Vulkan
2020-05-11 18:22:51 -04:00
bunnei
f42b9c0a85 hle: service: time_zone_manager: Use current time zone setting. 2020-05-11 17:55:25 -04:00
bunnei
7aadcb796c common: Add module to get the current time zone. 2020-05-11 17:51:26 -04:00
bunnei
8588ac0645 core: settings: Add a setting for time zone. 2020-05-11 17:50:07 -04:00
David Marcec
9f8eb0c39a fix logic error & scale sample volume based on voice volume 2020-05-11 12:56:15 -04:00
David Marcec
7965018e64 pass by const ref instead 2020-05-11 12:56:15 -04:00
David Marcec
de00a5eb8c audio_renderer: Better voice mixing and 6 channel downmixing
Supersedes #3738 and #3321
2020-05-11 12:56:15 -04:00
bunnei
ee3b9071b5 service: fsp_srv: Stub implementation of OpenMultiCommitManager. 2020-05-11 12:54:30 -04:00
bunnei
3439618956 yuzu: game_list: Fix 'Open Save Data Location' for device saves. 2020-05-11 12:54:30 -04:00
bunnei
97e2eb439c file_sys: savefata_factory: Update to support DeviceSaveData. 2020-05-11 12:54:30 -04:00
bunnei
f870a935d4 file_sys: control_metadata: Expose device_save_data_size. 2020-05-11 12:54:30 -04:00
David Marcec
26bd4978a3 Stub SendKeyboardLockKeyEvent
Needed for Puchikon 4 SmileBASIC 1.0.0
2020-05-12 01:01:50 +10:00
ReinUsesLisp
f39591b20a gl_shader_decompiler: Properly emulate NaN behaviour on NE
"Not equal" operators on GLSL seem to behave as unordered when we expect
an ordered comparison.

Manually emulate this checking for LGE values (numbers, not-NaNs).
2020-05-10 02:59:33 -03:00
Rodrigo Locatti
bab843f4e9 Merge pull request #3839 from Morph1984/r8g8ui
texture: Implement R8G8UI
2020-05-09 05:28:55 -03:00
ReinUsesLisp
d8598a8717 shader_ir: Separate float-point comparisons in ordered and unordered
This allows us to use native SPIR-V instructions without having to
manually check for NAN.
2020-05-09 04:55:15 -03:00
bunnei
c8a4398fe8 Merge pull request #3842 from makigumo/maxwell_to_vk_vertexattribute_signed_int
maxwell_to_vk: implement missing signed int formats
2020-05-09 00:36:09 -04:00
James Rowe
2991e7441a Replace externals with Conan (#3735)
* Remove git submodules that will be loaded through conan

* Move custom Find modules to their own folder

* Use conan for downloading missing external dependencies

* CI: Change the yuzu source folder user to the user that the containers run on

* Attempt to remove dirty mingw build hack

* Install conan on the msvc build

* Only set release build type when using not using multi config generator

* Re-add qt bundled to workaround an issue with conan qt not downloading prebuilt binaries

* Add workaround for submodules that use legacy CMAKE variables

* Re-add USE_BUNDLED_QT on the msvc build bot
2020-05-08 17:09:29 -04:00
bunnei
4fb531a576 Merge pull request #3885 from ReinUsesLisp/viewport-swizzles
video_core: Implement viewport swizzles with NV_viewport_swizzle
2020-05-08 15:16:53 -04:00
bunnei
58bda1c7b8 Merge pull request #3879 from lioncash/global2
hle_ipc: Eliminate core memory globals
2020-05-07 19:13:34 -04:00
bunnei
2a51a66227 Merge pull request #3884 from ReinUsesLisp/border-colors
vk_sampler_cache: Use VK_EXT_custom_border_color when available
2020-05-07 12:18:53 -04:00
FearlessTobi
32bb64a0ec Menubar: fix mouse tracking bug
Co-Authored-By: Vitor K <vitor-k@users.noreply.github.com>
2020-05-06 22:14:52 +02:00
bunnei
a1d3586e60 Merge pull request #3815 from FernandoS27/command-list-2
GPU: More optimizations to GPU Command List Processing and DMA Copy Optimizations
2020-05-05 17:12:42 -04:00
bunnei
09789af434 Merge pull request #3881 from lioncash/mem-warning
kernel/memory: Resolve several compiler warnings
2020-05-05 15:41:18 -04:00
bunnei
97607e0675 Update src/video_core/gpu.cpp
Co-authored-by: David <25727384+ogniK5377@users.noreply.github.com>
2020-05-05 15:39:44 -04:00
bunnei
58b467877c Update src/video_core/gpu.cpp
Co-authored-by: David <25727384+ogniK5377@users.noreply.github.com>
2020-05-05 15:39:37 -04:00
ReinUsesLisp
aa86309d15 vk_sampler_cache: Use VK_EXT_custom_border_color when available
This should fix grass interactions on Breath of the Wild on Vulkan.
It is currently untested against validation layers.

Nvidia's Windows 443.09 beta driver or Linux 440.66.12 is required for
now.
2020-05-04 20:49:23 -03:00
bunnei
c52483e3c3 Merge pull request #3880 from lioncash/encoding
kernel/memory: Amend potential encoding warnings
2020-05-04 18:50:29 -04:00
ReinUsesLisp
1f5d41ac05 vk_graphics_pipeline: Implement viewport swizzles with NV_viewport_swizzle 2020-05-04 18:31:17 -03:00
ReinUsesLisp
9054f86f03 gl_rasterizer: Implement viewport swizzles with NV_viewport_swizzle 2020-05-04 17:51:30 -03:00
ReinUsesLisp
ff7b0d7329 maxwell_3d: Add viewport swizzles 2020-05-04 17:50:59 -03:00
bunnei
f79198dea0 Merge pull request #3843 from ogniK5377/GetPopFromGeneralChannelEvent
am: IHomeMenuFunctions:GetPopFromGeneralChannelEvent
2020-05-04 16:20:11 -04:00
bunnei
8cab30959a Merge pull request #3637 from FearlessTobi/port-5094
Port citra-emu/citra#5094: "yuzu: Option to hide mouse on inactivity"
2020-05-03 23:16:19 -04:00
bunnei
5da1786107 Merge pull request #3822 from ogniK5377/GetAccountId
acc: Return a unique value per account for GetAccountId
2020-05-03 23:15:03 -04:00
Lioncash
12b81f2581 kernel/memory: Remove #pragma once within cpp file
This isn't necessary in a cpp file and will cause warnings on clang.
2020-05-03 13:42:07 -04:00
Lioncash
0bf0d27552 kernel/memory: Remove unused includes
Prevents header churn and needing to recompile these files if these
headers are ever changed in the future.
2020-05-03 13:41:18 -04:00