Commit Graph

14862 Commits (de644d506f0496749154ffb938ae2c48889c0b6f)
 

Author SHA1 Message Date
ReinUsesLisp e2b67a868b shader/other: Implement thread comparisons (NV_shader_thread_group)
Hardware S2R special registers match gl_Thread*MaskNV. We can trivially
implement these using Nvidia's extension on OpenGL or naively stubbing
them with the ARB instructions to match. This might cause issues if the
host device warp size doesn't match Nvidia's. That said, this is
unlikely on proper shaders.

Refer to the attached url for more documentation about these flags.
https://www.khronos.org/registry/OpenGL/extensions/NV/NV_shader_thread_group.txt
5 years ago
ReinUsesLisp ed4e324991 shader_decompiler: Visit source nodes even when they assign to RZ
Some operations like atomicMin were ignored because they returned were
being stored to RZ. This operations have a side effect and it was being
ignored.
5 years ago
ReinUsesLisp 434856c636 vk_shader_decompiler: Don't assert for void returns
Atomic instructions can be used without returning anything and this is
valid code. Remove the assert.
5 years ago
Neodyblue ea14af2164 qt_themes: remove unknown qss property from dark theme
Qdarkstyle's qss file uses an overflow property.
According to `https://doc.qt.io/qt-5/stylesheet-reference.html`,
the property `overflow` doesn't exist, which leads to a warning message
in the console.
5 years ago
ReinUsesLisp ebaace294f buffer_cache: Remove unused boost headers 5 years ago
ReinUsesLisp a2dcc642c1 map_interval: Add interval allocator and drop hack
Drop the std::list hack to allocate memory indefinitely.

Instead use a custom allocator that keeps references valid until
destruction. This allocates fixed chunks of memory and puts pointers in
a free list. When an allocation is no longer used put it back to the
free list, this doesn't heap allocate because std::vector doesn't change
the capacity. If the free list is empty, allocate a new chunk.
5 years ago
ReinUsesLisp 19d4f28001 buffer_cache: Use boost::container::small_vector for maps in range
Most overlaps in the buffer cache only contain one mapped address.
We can avoid close to all heap allocations once the buffer cache is
warmed up by using a small_vector with a stack size of one.
5 years ago
ReinUsesLisp 891236124c buffer_cache: Use boost::intrusive::set for caching
Instead of using boost::icl::interval_map for caching, use
boost::intrusive::set. interval_map is intended as a container where the
keys can overlap with one another; we don't need this for caching
buffers and a std::set-like data structure that allows us to search with
lower_bound is enough.
5 years ago
ReinUsesLisp 3b0baf746e buffer_cache: Remove shared pointers
Removing shared pointers is a first step to be able to use intrusive
objects and keep allocations close to one another in memory.
5 years ago
ReinUsesLisp 599274e3f0 buffer_cache: Minor style changes
Minor style changes. Mostly done so I avoid editing it while doing other
changes.
5 years ago
VolcaEM cb75ccc1f7
clang-format 5 years ago
VolcaEM 235805edf3
nifm: correct assert in CreateTemporaryNetworkProfile
This has been wrong since 0432af5ad1
I haven't found a game that called this function (and I haven't tried this on a real Switch), and because of this I haven't been able to check if the number in assert OR the string in the assert is wrong, but one of the two is wrong:
NetworkProfileData is 0x18E, while SfNetworkProfileData is 0x17C, according to Switchbrew
Switchbrew doesn't officially say that NetworkProfileData's size is 0x18E but it's possible to calculate its size since Switchbrew provides the size and the offset of all the components of NetworkProfileData (which isn't currently implemented in yuzu, alongside SfNetworkProfileData)
NetworkProfileData documentation: https://switchbrew.org/wiki/Network_Interface_services#NetworkProfileData
SfNetworkProfileData documentation: https://switchbrew.org/wiki/Network_Interface_services#SfNetworkProfileData
Since I trust ogniK's work on reversing NIFM, I'd assume this was just a typo in the string
5 years ago
bunnei ae61e47cba
Merge pull request #3946 from ogniK5377/sysverdat-10-0-2
file_sys: Update SystemVersion archive to version 10.0.2
5 years ago
ReinUsesLisp 420cc13248 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.
5 years ago
ReinUsesLisp 47a7c4f4fe yuzu: Add frontend settings for assembly shaders
Add settings for assembly shaders. Currently hidden to avoid users from
accidentally enabled them.
5 years ago
bunnei cf4ee279c6
Merge pull request #3926 from ogniK5377/keyboard-states
hid: Clear keyboard states & fix logic issue
5 years ago
Morph d0fc12684a maxwell_to_vk: Add format B8G8R8A8_SRGB
Add format B8G8R8A8_SRGB and add Attachable capability for B8G8R8A8_UNORM
Used by Bravely Default II
5 years ago
Fernando Sahmkow 4cff5dd194 OpenGL: Enable Debug Context and Synchronous debugging when graphics debugging is enabled.
This commit aims to help easing debugging of driver crashes without
having to modify existing code.
5 years ago
Morph 9a36d8600c main: Log host system memory parameters
Logs both physical memory and swapfile sizes, this is useful for support.
5 years ago
bunnei 65010607b7
Merge pull request #3665 from bunnei/device-save
FS: Improve emulation of device saves
5 years ago
bunnei 3c378a31b5
Merge pull request #3945 from ogniK5377/nvflinger-pixformat
nv_flinger: Use enum for pixel format instead of u32
5 years ago
bunnei 74d5c0ed2f
Merge pull request #3944 from ogniK5377/dma_mget
DmaPusher: Remove dead code in step
5 years ago
David Marcec 17455b7222 file_sys: Update SystemVersion archive to version 10.0.2 5 years ago
David Marcec 6f0360690b nv_flinger: Use enum for pixel format instead of u32 5 years ago
David Marcec 4b9504028d DmaPusher: Remove dead code in step 5 years ago
bunnei 55c0dd1cb3
Merge pull request #3942 from ReinUsesLisp/flush-and-invalidate
vk_rasterizer: Match OpenGL's FlushAndInvalidate behavior
5 years ago
ReinUsesLisp 7a27b7f3a3 vk_rasterizer: Match OpenGL's FlushAndInvalidate behavior
Match OpenGL's behavior. This can fix or simplify bisecting issues on
Vulkan.
5 years ago
Morph b73f678ee8 frontend: Set minimum window size to 640x360 instead of 1280x720 (#3413) 5 years ago
bunnei 024c84d2db
Merge pull request #3927 from jroweboy/fix-bug
Frontend: Remove tracking for context wrapper
5 years ago
bunnei 0e2ded049d
Merge pull request #3757 from ogniK5377/better-voice-mixing
audio_renderer: Better voice mixing and 6 channel downmixing
5 years ago
bunnei 670a7f51e8
Merge pull request #3909 from bunnei/timezone
Improve time zone support
5 years ago
bunnei b1a1bd12ca
Merge pull request #3899 from ReinUsesLisp/float-comparisons
shader_ir: Add separate instructions for ordered and unordered comparisons and fix NE on GLSL
5 years ago
ReinUsesLisp 91dddca26e vk_rasterizer: Implement constant attributes
Constant attributes (in OpenGL known disabled attributes) are not
supported on Vulkan, even with extensions. To emulate this behavior we
return zero on reads from disabled vertex attributes in shader code.
This has no caching cost because attribute formats are not dynamic state
on Vulkan and we have to store it in the pipeline cache anyway.

- Fixes Animal Crossing: New Horizons terrain borders
5 years ago
ReinUsesLisp cf6a40fc12 vk_rasterizer: Remove buffer check in attribute selection
This was a left over from OpenGL when disabled buffers where not properly
emulated. We no longer have to assert this as it is checked in vertex
buffer initialization.
5 years ago
bunnei bba54e1880 time_zone: Use std::chrono::seconds for strong typing. 5 years ago
James Rowe 1585981eec Frontend: Remove tracking for context wrapper 5 years ago
David Marcec a79f060ea2 hid: Clear keyboard states & fix logic issue
Previously we never cleared the states of the entries and the key would stay held down, also looping over the key bytes for each key lead to setting every bit for the key state instead of the key we wanted
5 years ago
bunnei 1beaebe666
Merge pull request #3816 from ReinUsesLisp/vk-rasterizer-enable
vk_graphics_pipeline: Implement rasterizer_enable on Vulkan
5 years ago
bunnei 3c8cd62b0d hle: service: time_zone_manager: Use current time zone setting. 5 years ago
bunnei 33441fa728 common: Add module to get the current time zone. 5 years ago
bunnei 988e42a3f5 core: settings: Add a setting for time zone. 5 years ago
bunnei 5dec81fcbd
Merge pull request #3925 from ogniK5377/hid-SendKeyboardLockKeyEvent
Stub hid:SendKeyboardLockKeyEvent
5 years ago
David Marcec 16c0373adc fix logic error & scale sample volume based on voice volume 5 years ago
David Marcec c4e7ec7a99 pass by const ref instead 5 years ago
David Marcec 9de860a419 audio_renderer: Better voice mixing and 6 channel downmixing
Supersedes #3738 and #3321
5 years ago
bunnei 47b97b9577 service: fsp_srv: Stub implementation of OpenMultiCommitManager. 5 years ago
bunnei 551c61bf27 yuzu: game_list: Fix 'Open Save Data Location' for device saves. 5 years ago
bunnei ab9ddab0a2 file_sys: savefata_factory: Update to support DeviceSaveData. 5 years ago
bunnei 9c065c013e file_sys: control_metadata: Expose device_save_data_size. 5 years ago
David Marcec ecc8ccc9d3 Stub SendKeyboardLockKeyEvent
Needed for Puchikon 4 SmileBASIC 1.0.0
5 years ago