ReinUsesLisp
0aaa69e4d7
vk_swapchain: Silence TOCTOU race condition
...
It's possible that the window is resized from the moment we ask for its
size to the moment a swapchain is created, causing validation issues.
To workaround this Vulkan issue request the capabilities again just
before creating the swapchain, making the race condition less likely.
2020-02-26 17:07:18 -03:00
Fernando Sahmkow
f3d4d4eaa8
ARM_Interface: Cache the JITs instead of deleting/recreating.
...
This was a bug inherited from citra which was fixed by then at some
time. This commit corrects such bug and ensures JITs are correctly
recycled.
2020-02-26 15:53:47 -04:00
bunnei
1f57f679a4
Merge pull request #3440 from namkazt/patch-6
...
shader: implement LOP3 fast replace for old function
2020-02-26 10:24:35 -05:00
bunnei
01a05b48b7
Merge pull request #3431 from CJBok/npad-fix
...
InputCommon: analog_from_button get direction implementation
2020-02-25 21:39:26 -05:00
bunnei
795893a9a5
renderer_opengl: Create gl_framebuffer_data if empty.
2020-02-25 21:23:02 -05:00
bunnei
c6f78a4a6d
frontend: qt: bootmanager: Acquire a shared context in main emu thread.
2020-02-25 21:23:02 -05:00
bunnei
e25297536f
frontend: qt: bootmanager: Vulkan: Restore support for VK backend.
2020-02-25 21:23:01 -05:00
bunnei
14877b8f35
frontend: qt: bootmanager: OpenGL: Implement separate presentation thread.
2020-02-25 21:23:01 -05:00
bunnei
b2a38cce4e
frontent: qt: main: Various updates/refactoring for separate presentation thread.
2020-02-25 21:23:00 -05:00
bunnei
667f026c95
core: frontend: Refactor scope_acquire_window_context to scope_acquire_context.
2020-02-25 21:23:00 -05:00
bunnei
2e16c23784
frontend: sdl2: emu_window: Implement separate presentation thread.
2020-02-25 21:23:00 -05:00
bunnei
dc672ca4b3
renderer_opengl: Add texture mailbox support for presenter thread.
2020-02-25 21:22:59 -05:00
bunnei
add2c38b73
renderer_opengl: Add OGLRenderbuffer to resource/state management.
2020-02-25 21:22:58 -05:00
bunnei
0c82b00dfd
core: frontend: emu_window: Add TextureMailbox class.
2020-02-25 21:22:57 -05:00
bunnei
571451bdfe
core: settings: Add setting to enable vsync, which is on by default.
2020-02-25 20:57:02 -05:00
Mat M
45ac1c62c6
Merge pull request #3461 from ReinUsesLisp/r32i-rt
...
video_core/surface: Add R32_SINT render target format
2020-02-25 17:47:14 -05:00
Mat M
00e3eab9c1
Merge pull request #3460 from ReinUsesLisp/unused-format-getter
...
video_core/gpu: Remove unused functions
2020-02-25 17:46:07 -05:00
ReinUsesLisp
466ce715e4
video_core/surface: Add R32_SINT render target format
2020-02-25 17:19:34 -03:00
ReinUsesLisp
3c648e3e2d
video_core/gpu: Remove unused functions
2020-02-25 16:53:47 -03:00
bunnei
78ab2e0474
Merge pull request #3417 from ReinUsesLisp/r32i
...
texture: Implement R32I
2020-02-25 14:08:45 -05:00
FearlessTobi
7cbe6748c3
yuzu: Remove exit lock for game pausing
...
This removes the "exit lock" popup from yuzu when pausing a game.
Motivation
The exit lock feature is broken in many ways and doesn't work properly in a lot of games, causing it to appear every time you want to pause the game or stop it, even in places where it wouldn't on Switch.
Additionally, the feature of pausing a game doesn't exist like this on Switch and yuzu should be guaranteed to be deterministic anyway, so pausing the emulation shouldn't be able to interrupt any critical processes in any way.
2020-02-24 17:51:17 +01:00
bunnei
e22ad52cdb
Merge pull request #3425 from ReinUsesLisp/layered-framebuffer
...
texture_cache: Implement layered framebuffer attachments
2020-02-24 10:14:50 -05:00
ReinUsesLisp
1e9213632a
vk_shader_decompiler: Implement indexed textures
...
Implement accessing textures through an index. It uses the same
interface as OpenGL, the main difference is that Vulkan bindings are
forced to be arrayed (the binding index doesn't change for stacked
textures in SPIR-V).
2020-02-24 01:26:07 -03:00
ReinUsesLisp
1dda77d392
shader: Simplify indexed sampler usages
2020-02-24 01:26:07 -03:00
ReinUsesLisp
e2dd59e341
video_core: Implement more scaler attribute formats
...
While changing this, fix assert in vk_shader_decompiler. We now know
scaled formats are expected to be float in shaders attributes.
2020-02-24 00:27:37 -03:00
bunnei
2b4cdb73b6
Merge pull request #3424 from ReinUsesLisp/spirv-layer
...
vk_shader_decompiler: Implement Layer output attribute
2020-02-22 23:45:16 -05:00
bunnei
754aac331f
Merge pull request #3422 from ReinUsesLisp/buffer-flush
...
surface_base: Implement texture buffer flushes
2020-02-22 23:09:50 -05:00
bunnei
1989e1b9ac
audio_core: interpolate: Improvements to fix audio crackling.
...
- Fixes audio crackling in Crash Team Racing Nitro-Fueled, Super Mario Odyssey, and others.
- Addresses followup issues from #3310 .
2020-02-22 22:26:16 -05:00
Fernando Sahmkow
3d0a2375ca
Scheduler: Inline global scheduler in Scheduler Lock.
2020-02-22 12:39:17 -04:00
Fernando Sahmkow
a1bf353780
Kernel: Correct pending feedback.
2020-02-22 11:51:03 -04:00
Fernando Sahmkow
b9472eae44
System: Expose Host thread registering routines from kernel.
2020-02-22 11:18:07 -04:00
Fernando Sahmkow
d219a96cc8
Kernel: Address Feedback.
2020-02-22 11:18:07 -04:00
Fernando Sahmkow
ea956c823e
Kernel: Implement Scheduler locks
2020-02-22 11:18:07 -04:00
Fernando Sahmkow
5c90d22f3d
Kernel: Implement Time Manager.
2020-02-22 11:18:07 -04:00
Fernando Sahmkow
179bafa7cb
Kernel: Rename ThreadCallbackHandleTable and Setup Thread Ids on Kernel.
2020-02-22 11:18:06 -04:00
Fernando Sahmkow
0728dfef84
Kernel: Make global scheduler depend on KernelCore
2020-02-22 11:18:06 -04:00
bunnei
f5cf67140b
audio_core: interpolate: Fix include for climits (Linux build break).
2020-02-22 02:29:41 -05:00
bunnei
19bce3685a
Merge pull request #3310 from FearlessTobi/fast-resample
...
audio_core: Switch to a faster interpolation technique
2020-02-22 01:54:40 -05:00
ReinUsesLisp
7dc488a375
shader/texture: Fix illegal 3D texture assert
...
Fix typo in the illegal 3D texture assert logic. We care about catching
arrayed 3D textures or 3D shadow textures, not regular 3D textures.
2020-02-21 15:57:27 -03:00
Rodrigo Locatti
4a6a1aeab4
Merge pull request #3433 from namkazt/patch-1
...
renderer_vulkan: Add the rest of case for TryConvertBorderColor
2020-02-21 15:56:09 -03:00
Rodrigo Locatti
ef27b4b7b5
Merge pull request #3434 from namkazt/patch-2
...
vk_shader: Implement ImageLoad
2020-02-21 15:55:05 -03:00
Rodrigo Locatti
6b2719c0bb
Merge pull request #3435 from namkazt/patch-3
...
vulkan: add DXT23_SRGB
2020-02-21 15:48:19 -03:00
bunnei
dc7ebc2d01
Merge pull request #3423 from ReinUsesLisp/no-match-3d
...
texture_cache: Avoid matches in 3D textures
2020-02-21 12:16:51 -05:00
Nguyen Dac Nam
10d8afb302
nit: add const to where it need.
2020-02-21 21:16:45 +07:00
Nguyen Dac Nam
1956a34ee5
shader: implement LOP3 fast replace for old function
...
ref: https://devtalk.nvidia.com/default/topic/1070081/cuda-programming-and-performance/reverse-lut-for-lop3-lut/
2020-02-21 19:08:07 +07:00
Nguyen Dac Nam
c0c4da27d9
vk_device: remove left over from other branch
2020-02-21 08:56:18 +07:00
bunnei
fe8e5d8ae4
Merge pull request #3438 from bunnei/gpu-mem-manager-fix
...
video_core: memory_manager: Flush/invalidate asynchronously when possible.
2020-02-20 20:04:05 -05:00
Nguyen Dac Nam
ecf275887b
clang-format
2020-02-20 09:39:30 +07:00
Nguyen Dac Nam
fbbad95845
shader_decompiler: only add StorageImageReadWithoutFormat when available
2020-02-20 09:28:13 +07:00
bunnei
2342c0d50e
Merge pull request #3432 from brianclinkenbeard/update-httplib
...
Update httplib to 0.5.5
2020-02-19 21:15:06 -05:00
bunnei
bf0c929d4c
Merge pull request #3415 from ReinUsesLisp/texture-code
...
shader/texture: Allow 2D shadow arrays and simplify code
2020-02-19 20:06:14 -05:00
bunnei
d65fa7d65c
video_core: memory_manager: Flush/invalidate asynchronously on Unmap.
...
- Minor perf improvement.
2020-02-19 20:03:52 -05:00
bunnei
b2bc7682b4
Merge pull request #3414 from ReinUsesLisp/maxwell-3d-draw
...
maxwell_3d: Unify draw methods
2020-02-19 16:13:50 -05:00
bunnei
c8261a1a57
Merge pull request #3411 from ReinUsesLisp/specific-funcs
...
gl_rasterizer: Use the least generic OpenGL draw function possible
2020-02-19 15:37:41 -05:00
Nguyen Dac Nam
88cb05e6e7
shader_decompiler: add check in case of device not support ShaderStorageImageReadWithoutFormat
2020-02-19 12:57:22 +07:00
Nguyen Dac Nam
e61c7e9310
vk_device: setup shaderStorageImageReadWithoutFormat
2020-02-19 12:56:36 +07:00
Nguyen Dac Nam
47106ab152
vk_device: add check for shaderStorageImageReadWithoutFormat
2020-02-19 12:55:56 +07:00
Nguyen Dac Nam
1b6308727c
shader_conversion: I2F : add Assert for case src_size is Short
2020-02-19 11:40:35 +07:00
Nguyen Dac Nam
a2c2c5768f
fix warning
2020-02-19 11:10:26 +07:00
Nguyen Dac Nam
a8508f2bc0
clang-format fix
2020-02-19 11:02:59 +07:00
Nguyen Dac Nam
556f3a6e9a
shader_conversion: add conversion I2F for Short
2020-02-19 10:54:37 +07:00
bunnei
e545c2322c
Merge pull request #3410 from ReinUsesLisp/vk-draw-index
...
vk_shader_decompiler: Fix vertex id and instance id
2020-02-18 22:37:33 -05:00
Nguyen Dac Nam
2ef8af93aa
vk_shader: add Capability StorageImageReadWithoutFormat
2020-02-19 10:16:51 +07:00
Brian Clinkenbeard
ad4e5c15fb
httplib compatibility
2020-02-18 18:04:33 -08:00
Nguyen Dac Nam
f6f0762e81
vk_shader: Implement function ImageLoad (Used by Kirby Start Allies)
...
Please enter the commit message for your changes. Lines starting
2020-02-19 08:39:01 +07:00
Nguyen Dac Nam
ec206f7f95
fixups mistake auto commit.
2020-02-19 01:24:32 +07:00
Nguyen Dac Nam
eaf60ca5d8
Update code structure
...
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2020-02-19 01:23:08 +07:00
Fernando Sahmkow
93acfbd3a5
Merge pull request #3409 from ReinUsesLisp/host-queries
...
query_cache: Implement a query cache and query 21 (samples passed)
2020-02-18 11:31:06 -04:00
Nguyen Dac Nam
9295966d26
add vertex UnsignedInt size RGBA
2020-02-18 21:52:51 +07:00
Nguyen Dac Nam
9fc42fffd9
add eBc2SrgbBlock to formats
2020-02-18 21:44:09 +07:00
Nguyen Dac Nam
493f0ad904
vulkan: add DXT23_SRGB
2020-02-18 21:39:50 +07:00
Nguyen Dac Nam
ba84f0988f
renderer_vulkan: Add the rest of case for TryConvertBorderColor
2020-02-18 16:52:54 +07:00
CJBok
23c4cc80e2
analog_from_button get direction implementation
2020-02-18 06:45:37 +01:00
bunnei
72d4c6fee0
Merge pull request #3412 from Morph1984/aspect-ratio
...
GUI: Add aspect ratio dropdown
2020-02-17 22:02:18 -05:00
bunnei
26006cbd2c
Merge pull request #3420 from namkazt/master2
...
nvhost_gpu: implement ChannelSetTimeslice
2020-02-17 00:31:11 -05:00
ReinUsesLisp
6a0220b2e1
texture_cache: Implement layered framebuffer attachments
...
Layered framebuffer attachments is a feature that allows applications to
write attach layered textures to a single attachment. What layer the
fragments are written to is decided from the shader using gl_Layer.
2020-02-16 04:19:32 -03:00
ReinUsesLisp
1caf3f11c8
vk_shader_decompiler: Implement Layer output attribute
...
SPIR-V's Layer is GLSL's gl_Layer. It lets the application choose from a
shader stage (vertex, tessellation or geometry) which framebuffer layer
write the output fragments to.
2020-02-16 04:17:37 -03:00
ReinUsesLisp
bfda5ff3f6
texture_cache: Avoid matches in 3D textures
...
Code before this commit was trying to match 3D textures with another
target. Fix that.
2020-02-16 04:15:42 -03:00
ReinUsesLisp
fd62bdf377
surface_base: Implement texture buffer flushes
...
Implement downloads to guest memory from texture buffers on the generic
cache and OpenGL.
2020-02-16 04:13:27 -03:00
Nguyen Dac Nam
5257a83ebe
IUserLocalCommunicationService: add function Initialize2
2020-02-16 13:24:34 +07:00
Nguyen Dac Nam
6c0eb6026b
HLE: correct function name of IUserLocalCommunicationService
...
402: function name should be Initialize2 (7.0.0+) not SetOperationMode
Follow by: https://switchbrew.org/wiki/LDN_services#IUserLocalCommunicationService
2020-02-16 13:14:06 +07:00
namkazy
7fadc9c180
nvhost_gpu: implement ChannelSetTimeslice
2020-02-16 11:53:03 +07:00
bunnei
0f70f68fb3
Revert "video_core: memory_manager: Use GPU interface for cache functions."
2020-02-15 17:47:15 -05:00
ReinUsesLisp
14c2a4a2ec
texture: Implement R32I
2020-02-15 16:26:50 -03:00
ReinUsesLisp
6910ade146
shader/texture: Allow 2D shadow arrays and simplify code
...
Shadow sampler 2D arrays are supported on OpenGL, so there's no reason
to forbid these. Enable textureLod usage on these.
Minor style changes.
2020-02-15 02:36:28 -03:00
ReinUsesLisp
91aa58e410
maxwell_3d: Unify draw methods
...
Pass instanced state of a draw invocation as an argument instead of
having two separate virtual methods.
2020-02-14 18:09:40 -03:00
ReinUsesLisp
6d3a046caa
query_cache: Address feedback
2020-02-14 17:38:27 -03:00
ReinUsesLisp
54a00ee4cf
query_cache: Fix ambiguity in CacheAddr getter
2020-02-14 17:38:27 -03:00
ReinUsesLisp
cc0694559f
query_cache: Add a recursive mutex for concurrent usage
2020-02-14 17:38:27 -03:00
ReinUsesLisp
bcd348f238
vk_query_cache: Implement generic query cache on Vulkan
2020-02-14 17:38:27 -03:00
ReinUsesLisp
c31382ced5
query_cache: Abstract OpenGL implementation
...
Abstract the current OpenGL implementation into the VideoCommon
namespace and reimplement it on top of that. Doing this avoids repeating
code and logic in the Vulkan implementation.
2020-02-14 17:38:27 -03:00
ReinUsesLisp
73d2d3342d
gl_query_cache: Optimize query cache
...
Use a custom cache instead of relying on a ranged cache.
2020-02-14 17:38:27 -03:00
ReinUsesLisp
aae8c180cb
gl_query_cache: Implement host queries using a deferred cache
...
Instead of waiting immediately for executed commands, defer the query
until the guest CPU reads it. This way we get closer to what the guest
program is doing.
To archive this we have to build a dependency queue, because host APIs
(like OpenGL and Vulkan) use ranged queries instead of counters like
NVN.
Waiting for queries implicitly uses fences and this requires a command
being queued, otherwise the driver will lock waiting until a timeout. To
fix this when there are no commands queued, we explicitly call glFlush.
2020-02-14 17:33:13 -03:00
ReinUsesLisp
ef9920e164
gl_rasterizer: Sort method declarations
2020-02-14 17:27:17 -03:00
ReinUsesLisp
fe1238be7a
gl_rasterizer: Add queued commands counter
...
Keep track of the queued OpenGL commands that can signal a fence if
waited on. As a side effect, we avoid calls to glFlush when no commands
are queued.
2020-02-14 17:27:17 -03:00
ReinUsesLisp
2b58652f08
maxwell_3d: Slow implementation of passed samples (query 21)
...
Implements GL_SAMPLES_PASSED by waiting immediately for queries.
2020-02-14 17:27:17 -03:00
bunnei
f552d553ba
Merge pull request #3401 from FernandoS27/synchronization
...
Set of refactors for Kernel Synchronization and Hardware Constants
2020-02-14 14:40:20 -05:00
Morph
c3d0a0d627
Add 4:3 aspect ratio and address feedback
2020-02-14 14:39:04 -05:00
bunnei
63a59b9935
Merge pull request #3379 from ReinUsesLisp/cbuf-offset
...
shader/decode: Fix constant buffer offsets
2020-02-14 13:22:53 -05:00
Fernando Sahmkow
829d8c0d6b
Core: Correct compilition in GCC
2020-02-14 05:53:30 -04:00
Morph
20dc2e3622
Address feedback
2020-02-14 00:06:26 -05:00
Morph
22f58cca5e
Use enumeration instead of magic numbers
2020-02-13 23:13:23 -05:00
Morph
27e19f87c6
Add following aspect ratios: 16:9, 21:9, Stretch to Window
...
Available as a drop down within the configure graphics tab.
2020-02-13 22:17:28 -05:00
bunnei
74feed372c
Merge pull request #3400 from makigumo/patch-1
...
update hwopus DecodeInterleaved for FW 7.0.0+
2020-02-13 21:26:13 -05:00
ReinUsesLisp
3217400dd1
gl_resource_manager: Add managed query class
2020-02-13 22:25:55 -03:00
bunnei
3563af2364
Merge pull request #3395 from FernandoS27/queries
...
GPU: Refactor queries implementation and correct GPU Clock.
2020-02-13 20:18:26 -05:00
ReinUsesLisp
336a4f8e99
gl_rasterizer: Use the least generic OpenGL draw function possible
...
This may help some implementations.
2020-02-13 21:55:21 -03:00
ReinUsesLisp
cbea8c74de
vk_shader_decompiler: Fix vertex id and instance id
...
Vulkan's VertexIndex and InstanceIndex don't match with hardware. This
is because Nvidia implements gl_VertexID and gl_InstanceID. The math
that relates these is:
gl_VertexIndex = gl_BaseVertex + gl_VertexID
gl_InstanceIndex = gl_InstanceIndex + gl_InstanceID
To emulate it using what Vulkan's SPIR-V offers (the *Index variants)
this commit substracts gl_Base* from gl_*Index to obtain the OpenGL and
hardware's equivalent.
2020-02-13 20:25:28 -03:00
Fernando Sahmkow
2bc949628d
Core: Address Feedback
2020-02-13 19:10:33 -04:00
Fernando Sahmkow
d6ed31b9fa
GPU: Address Feedback.
2020-02-13 18:16:07 -04:00
Lioncash
be269e21a5
address_arbiter: Collapse loops in InsertThread() and RemoveThread()
...
Same behavior, but without the need to explicitly loop through
everything manually.
2020-02-12 15:34:07 -05:00
Lioncash
9f2c703137
address_arbiter: Simplify GetThreadsWaitingOnAddress()
...
Simplifies the overall function and also allows for it to become a
const-qualified member function.
2020-02-12 15:10:16 -05:00
bunnei
8f8dda2d5b
Merge pull request #3403 from lioncash/debug
...
bcat/backend: Prevent fmt exception in debug log within NullBackend::Clear()
2020-02-12 11:17:43 -05:00
Lioncash
f00a54f508
bcat/backend: Make formatting of passphrase consistent in NullBackend::SetPassphrase()
...
Aligns the '=' to be consistent with the rest of the logs within this
source file.
2020-02-12 01:18:29 -05:00
Lioncash
eefd97e80d
bcat/backend: Prevent fmt exception in debug log within NullBackend::Clear()
...
A formatting specifier within Clear wasn't being used, which will cause
fmt to throw an exception. This fixes that.
2020-02-12 01:14:47 -05:00
Lioncash
b80c348b09
kernel/thread: Remove trivial usages of the global system accessor
...
We can just use the kernel member variable directly instead of going
through the system to obtain the same thing.
2020-02-12 01:00:41 -05:00
Fernando Sahmkow
1e6f8aba04
Core: Set all hardware emulation constants in a single file.
2020-02-11 20:19:11 -04:00
Fernando Sahmkow
d23d504d77
Kernel: Refactor synchronization to better match RE
2020-02-11 18:47:31 -04:00
makigumo
926ea5a16d
update hwopus DecodeInterleaved for FW 7.0.0+
...
trivial change,
see https://switchbrew.org/wiki/Audio_services#IHardwareOpusDecoder
2020-02-11 18:41:04 +01:00
Fernando Sahmkow
c5aefe42aa
Kernel: Change WaitObject to Synchronization object. In order to better reflect RE.
2020-02-11 10:46:25 -04:00
bunnei
37f1cf8cbd
Merge pull request #3376 from ReinUsesLisp/point-sprite
...
gl_rasterizer: Implement GL_POINT_SPRITE
2020-02-11 08:26:07 -05:00
Fernando Sahmkow
8e9a4944db
GPU: Implement GPU Clock correctly.
2020-02-10 10:44:54 -04:00
Fernando Sahmkow
0cb3bcfbb7
Maxwell3D: Correct query reporting.
2020-02-10 10:41:43 -04:00
bunnei
84ea9c2b42
Merge pull request #3372 from ReinUsesLisp/fix-back-stencil
...
maxwell_3d: Fix stencil back mask
2020-02-09 22:29:28 -05:00
Zach Hilman
21c3f48279
Merge pull request #3391 from Morph1984/remove-unknown
...
Remove option "Show files with type 'Unknown'"
2020-02-09 12:08:01 -05:00
Morph
fcf3425b1b
Remove option "Show files with type 'Unknown'"
2020-02-09 11:30:02 -05:00
bunnei
a952fbc5b3
Merge pull request #3388 from bunnei/service-shared-ptr
...
hle: services: Use std::shared_ptr instead of copy by value.
- This is a prerequisite to adding a mutex to `ServiceFramework`, which cannot be copied.
- This will be used for threaded services.
2020-02-08 21:35:30 -05:00
bunnei
e210835dd0
Merge pull request #3387 from bunnei/gpu-mpscqueue
...
gpu_thread: Use MPSCQueue for GPU commands.
2020-02-08 21:15:48 -05:00
bunnei
7b07e521ca
hle: services: Use std::shared_ptr instead of copy by value.
2020-02-07 23:02:26 -05:00
bunnei
b5c13ee0eb
gpu_thread: Use MPSCQueue for GPU commands.
...
- Necessary for multiple service threads.
2020-02-07 23:01:23 -05:00
bunnei
7cacb08cdf
video_core: memory_manager: Use GPU interface for cache functions.
2020-02-07 22:59:35 -05:00
bunnei
90bda66028
Merge pull request #3378 from ReinUsesLisp/uscaled
...
maxwell_to_gl: Implement R8G8_USCALED
2020-02-07 22:55:52 -05:00
bunnei
90df4b8e2b
Merge pull request #3369 from ReinUsesLisp/shf
...
shader/shift: Implement SHF
2020-02-07 22:06:57 -05:00
bunnei
aa3f9b9606
Merge pull request #3381 from bunnei/ipc-fix
...
hle: services: Fix prepo IPC, and add better error checking.
2020-02-07 16:25:42 -05:00
bunnei
09d766d357
Merge pull request #3362 from ReinUsesLisp/fix-instanced
...
gl_rasterizer: Fix instanced draw arrays
2020-02-06 21:39:59 -05:00
bunnei
ba53543da6
kernel: transfer_memory: Properly reserve and reset memory region.
2020-02-05 23:06:54 -05:00
Zach Hilman
7a547b9342
wait_object: Make wait behavior only require one object to signal.
...
- This was holdover from citra.
2020-02-05 23:06:53 -05:00
bunnei
3a0c1e79f8
am: Correct IPC object count mismatch.
2020-02-05 23:06:53 -05:00
bunnei
77da74e17a
services: am: Clear events on PopOutData and PopInteractiveOutData.
2020-02-05 23:06:52 -05:00
bunnei
84e895cdd6
am: Refactor IStorage interface.
2020-02-05 23:06:52 -05:00
bunnei
3557fa25d0
applets: software_keyboard: Signal state change on end of interactive session.
2020-02-05 23:06:51 -05:00
bunnei
be5fcffb89
applets: software_keyboard: Minor cleanup.
2020-02-05 23:06:50 -05:00
bunnei
2245c24e21
services: prepo: Fix IPC interface with SaveReport/SaveReportWithUser.
2020-02-05 22:52:35 -05:00
bunnei
9751ccc5e0
hle_ipc: Add error checking to read/write buffer access.
2020-02-05 22:52:35 -05:00
ReinUsesLisp
bf9a822b87
shader/decode: Fix constant buffer offsets
...
Some instances were using cbuf34.offset instead of cbuf34.GetOffset().
This returned the an invalid offset. Address those instances and rename
offset to "shifted_offset" to avoid future bugs.
2020-02-05 12:19:09 -03:00
ReinUsesLisp
8bb9eef97b
maxwell_to_gl: Implement R8G8_USCALED
2020-02-04 21:32:36 -03:00
ReinUsesLisp
c81c361e82
maxwell_to_gl: Reduce unimplemented formats to LOG_ERROR
2020-02-04 21:32:08 -03:00
ReinUsesLisp
0eb36c90f4
vk_rasterizer: Use noexcept variants of std::bitset
...
Removes bounds checking from "texceptions" instances.
2020-02-04 18:04:24 -03:00
bunnei
08c508b1c4
Merge pull request #3357 from ReinUsesLisp/bfi-rc
...
shader/bfi: Implement register-constant buffer variant
2020-02-04 15:14:13 -05:00
ReinUsesLisp
7da52673d0
gl_rasterizer: Implement GL_POINT_SPRITE
...
OpenGL core defaults to GL_POINT_SPRITE, meanwhile on OpenGL
compatibility we have to explicitly enable it. This fixes
gl_PointCoord's behaviour.
2020-02-04 15:19:45 -03:00
bunnei
bf21aacc74
Merge pull request #3356 from ReinUsesLisp/fcmp
...
shader/arithmetic: Implement FCMP
2020-02-04 11:36:59 -05:00
bunnei
5733287822
Merge pull request #3360 from CJBok/statusbar-buttons
...
GUI: Togglable graphics settings buttons in status bar
2020-02-03 16:57:18 -05:00
bunnei
c31ec00d67
Merge pull request #3337 from ReinUsesLisp/vulkan-staged
...
yuzu: Implement Vulkan frontend
2020-02-03 16:56:25 -05:00
Lioncash
c7678c3044
input_common/udp: Ensure that UDP is shut down within Shutdown()
...
Previously the UDP backend would never actually get shut down.
2020-02-03 09:29:15 -05:00
Lioncash
83f8090273
input_common/udp: Add missing override specifiers
...
Prevents trivial warnings and ensures interfaces are properly
maintained between the base class.
2020-02-03 09:26:53 -05:00
Lioncash
5c61e0ba39
input_common/udp: std::move SocketCallback instances where applicable
...
std::function is allowed to heap allocate if the size of the captures
associated with each lambda exceed a certain threshold. This prevents
potentially unnecessary reallocations from occurring.
2020-02-03 09:24:05 -05:00
Lioncash
fb9c9ddcc9
input_common/udp: std::move shared_ptr within Client constructor
...
Gets rid of a trivially avoidable atomic reference count increment and
decrement.
2020-02-03 09:21:46 -05:00
Lioncash
9bb6ab77f4
udp/client: Replace deprecated from_string() call with make_address_v4()
...
Future-proofs code if boost is ever updated.
2020-02-03 09:20:40 -05:00
Lioncash
881408445a
input_common/udp: Silence -Wreorder warning for Socket
...
Amends the constructor initializer list to specify the order of its
elements in the same order that initialization would occur.
2020-02-03 09:15:32 -05:00
Lioncash
36524465a6
input_common/udp: Remove unnecessary inclusions
2020-02-03 09:13:40 -05:00
Lioncash
4aa9c9632d
input_common/udp: Add missing header guard
2020-02-03 09:09:06 -05:00
ReinUsesLisp
4eed744277
maxwell_3d: Fix stencil back mask
2020-02-02 17:50:46 -03:00
ReinUsesLisp
223a89a19f
shader: Remove curly braces initializers on shared pointers
2020-02-01 22:52:10 -03:00
bunnei
b5bbe7e752
Merge pull request #3282 from FernandoS27/indexed-samplers
...
Partially implement Indexed samplers in general and specific code in GLSL
2020-02-01 20:41:40 -05:00
ReinUsesLisp
729ca120e3
shader/shift: Implement SHIFT_RIGHT_{IMM,R}
...
Shifts a pair of registers to the right and returns the low register.
2020-02-01 21:20:02 -03:00
ReinUsesLisp
017474c3f8
shader/shift: Implement SHF_LEFT_{IMM,R}
...
Shifts a pair of registers to the left and returns the high register.
2020-02-01 21:19:44 -03:00
bunnei
2916c1bc25
Merge pull request #3268 from CJBok/deadzone
...
GUI: Deadzone controls for sdl engine at configuration input
2020-02-01 16:35:15 -05:00
bunnei
69a6796de1
Merge pull request #3284 from CJBok/hid-fix
...
hid: Fix analog sticks directional states
2020-02-01 14:02:41 -05:00
bunnei
c18f9898d9
Merge pull request #3364 from lioncash/thread
...
core/arm: Remove usage of global GetCurrentThread()
2020-01-31 11:13:24 -05:00
bunnei
6b5b01b29f
Merge pull request #3363 from lioncash/unique_ptr
...
kernel/physical_core: Make use of std::unique_ptr instead of std::shared_ptr
2020-01-30 23:33:02 -05:00
bunnei
91b0a3f799
Revert "system_archive: Fix Korean and Chinese fonts"
2020-01-30 22:02:15 -05:00
Lioncash
472319e573
core/arm: Remove usage of global GetCurrentThread()
...
Now both CPU backends go through their referenced system instance to
obtain the current thread.
2020-01-30 18:52:25 -05:00
Lioncash
2de2bb980e
kernel/physical_core: Make use of std::unique_ptr
...
shared_ptr was used in 2d1984c20c
due to a
misunderstanding of how the language generates move constructors and
move assignment operators.
If a destructor is user-provided, then the compiler won't generate the
move constructor and move assignment operators by default--they must be
explicitly opted into.
The reason for the compilation errors is due to the fact that the
language will fall back to attempting to use the copy constructor/copy
assignment operators if the respective move constructor or move
assignment operator is unavailable.
Given that we explicitly opt into them now, the the move constructor and
move assignment operators will be generated as expected.
2020-01-30 18:42:40 -05:00
Lioncash
16e7b7b83d
core/cpu_manager: Remove unused includes
...
Nothing from these headers are used within this source file, so we can
remove them.
2020-01-30 18:30:57 -05:00
Lioncash
51927bc9dc
kernel/physical_core: Remove unused kernel reference member variable
...
This isn't used within the class, so it can be removed to simplify the
overall interface.
While we're in the same area, we can simplify a unique_ptr reset() call.
2020-01-30 18:29:57 -05:00
bunnei
985d0f35e5
Merge pull request #3353 from FernandoS27/aries
...
System: Refactor CPU Core management and move ARMInterface and Schedulers to Kernel
2020-01-30 18:13:59 -05:00
bunnei
8a7cdfc3ff
Merge pull request #3151 from FearlessTobi/fix-korean
...
system_archive: Fix Korean and Chinese fonts
2020-01-30 15:09:55 -05:00
bunnei
c593e45dbd
Merge pull request #3347 from ReinUsesLisp/local-mem
...
shader/memory: Implement LDL.S16, LDS.S16, STL.S16 and STS.S16
2020-01-30 10:59:52 -05:00
ReinUsesLisp
b69321650e
gl_rasterizer: Fix instanced draw arrays
...
glDrawArrays was being used when the draw had a base instance specified.
This commit removes the draw parameters abstraction and fixes the
mentioned issue.
2020-01-30 02:22:00 -03:00
ReinUsesLisp
a7beabb68f
yuzu/bootmanager: Define Vulkan widget only when enabled
2020-01-29 19:20:12 -03:00
bunnei
2db7adc42a
Merge pull request #3350 from ReinUsesLisp/atom
...
shader/memory: Implement ATOM.ADD
2020-01-29 16:49:54 -05:00
ReinUsesLisp
c29584a090
yuzu_cmd: Fix memcpy on Vulkan handlers
2020-01-29 17:53:11 -03:00
ReinUsesLisp
f92cbc5501
yuzu: Implement Vulkan frontend
...
Adds a Qt and SDL2 frontend for Vulkan. It also finishes the missing
bits on Vulkan initialization.
2020-01-29 17:53:11 -03:00
ReinUsesLisp
8299f1ceef
web_service/telemetry_json: Report USER_CONFIG
2020-01-29 17:53:11 -03:00
ReinUsesLisp
788d57d723
settings: Add settings for graphics backend
2020-01-29 17:53:11 -03:00
ReinUsesLisp
e651e54b85
core: Only wait for idle on gpu_core when it was initialized
...
This fixes crashes when a Vulkan device fails to initialize.
2020-01-29 17:53:11 -03:00
ReinUsesLisp
9f0162e4b5
shader/other: Fix skips for SYNC and BRK
2020-01-29 17:53:11 -03:00
ReinUsesLisp
270177f38a
shader/other: Stub S2R LaneId
2020-01-29 17:53:11 -03:00
ReinUsesLisp
b35449c85d
buffer_cache: Delay buffer destructions
...
Delay buffer destruction some extra frames to avoid destroying buffers
that are still being used from older frames. This happens on Nvidia's
driver with mailbox.
2020-01-29 17:53:11 -03:00
bunnei
b11aeced18
Merge pull request #3355 from ReinUsesLisp/break-down
...
texture_cache/surface_base: Fix layered break down
2020-01-29 12:29:56 -05:00
bunnei
91f79225e7
Merge pull request #3358 from ReinUsesLisp/implicit-texture-cache
...
gl_texture_cache: Silence implicit sign cast warnings
2020-01-29 11:23:50 -05:00
CJBok
8d6b4e836c
clang
2020-01-29 05:43:55 +01:00
CJBok
6e87111f91
minor corrections
2020-01-29 00:02:28 +01:00
CJBok
4bc4fdf5ff
GUI: Togglable graphics settings buttons in status bar
2020-01-28 23:59:30 +01:00
bunnei
c457e47297
Merge pull request #3359 from ReinUsesLisp/assert-point-size
...
gl_shader_decompiler: Remove UNIMPLEMENTED for gl_PointSize
2020-01-28 15:19:51 -05:00
ReinUsesLisp
8178fe8960
gl_shader_decompiler: Remove UNIMPLEMENTED for gl_PointSize
...
This was implemented by a previous commit and it's no longer required.
2020-01-28 16:32:30 -03:00
bunnei
bea6327d74
Merge pull request #3354 from ReinUsesLisp/depth-stencil
...
gl_texture_cache: Properly implement depth/stencil sampling
2020-01-28 12:06:11 -05:00
ReinUsesLisp
abae795986
gl_texture_cache: Silence implicit sign cast warnings
2020-01-27 20:59:11 -03:00
Fernando Sahmkow
2d1984c20c
System: Address Feedback
2020-01-27 09:54:11 -04:00
ReinUsesLisp
137a8aa55c
shader/bfi: Implement register-constant buffer variant
...
It's the same as the variant that was implemented, but it takes the
operands from another source.
2020-01-27 01:20:38 -03:00
ReinUsesLisp
e3fc3459c8
shader/arithmetic: Implement FCMP
...
Compares the third operand with zero, then selects between the first and
second.
2020-01-27 01:15:44 -03:00
ReinUsesLisp
f55f6ff9bb
texture_cache/surface_base: Fix layered break down
...
Layered break downs was passing "layer" as a "depth" parameter. This
commit addresses that.
2020-01-26 21:48:07 -03:00
ReinUsesLisp
d17dfa6104
gl_texture_cache: Properly implement depth/stencil sampling
...
This addresses the long standing issue of compatibility vs. core
profiles on OpenGL, properly implementing depth vs. stencil sampling
depending on the texture swizzle.
2020-01-26 21:44:08 -03:00
Fernando Sahmkow
de4b01f75d
System: Correct PrepareReschedule.
2020-01-26 14:32:50 -04:00
Fernando Sahmkow
a1630ab53e
Kernel: Remove a few global instances from the kernel.
2020-01-26 14:23:46 -04:00
Fernando Sahmkow
e4a1ead897
Core: Refactor CpuCoreManager to CpuManager and Cpu to Core Manager.
...
This commit instends on better naming the new purpose of this classes.
2020-01-26 14:07:22 -04:00
Fernando Sahmkow
450341b397
ArmInterface: Delegate Exclusive monitor factory to exclusive monitor interfasce.
2020-01-26 10:28:23 -04:00
ReinUsesLisp
d95d4ac843
shader/memory: Implement ATOM.ADD
...
ATOM operates atomically on global memory. For now only add ATOM.ADD
since that's what was found in commercial games.
This asserts for ATOM.ADD.S32 (handling the others as unimplemented),
although ATOM.ADD.U32 shouldn't be any different.
This change forces us to change the default type on SPIR-V storage
buffers from float to uint. We could also alias the buffers, but it's
simpler for now to just use uint. While we are at it, abstract the code
to avoid repetition.
2020-01-26 01:54:24 -03:00
Fernando Sahmkow
4d6a86b03f
Core: Refactor CPU Management.
...
This commit moves ARM Interface and Scheduler handling into the kernel.
2020-01-25 18:55:32 -04:00
Fernando Sahmkow
bb8eb15d39
Shader_IR: Address feedback.
2020-01-25 09:04:59 -04:00
ReinUsesLisp
d26e74f0a3
shader/memory: Implement STL.S16 and STS.S16
2020-01-25 03:16:10 -03:00
ReinUsesLisp
9a2cdf8520
shader/memory: Implement unaligned LDL.S16 and LDS.S16
2020-01-25 03:16:10 -03:00
ReinUsesLisp
531f25a037
shader/memory: Move unaligned load/store to functions
2020-01-25 03:16:10 -03:00
ReinUsesLisp
96638f57c9
shader/memory: Implement LDL.S16 and LDS.S16
2020-01-25 03:15:55 -03:00
bunnei
2a822f3378
bsd: Stub several more functions.
...
- Required for Little Town Hero to boot further.
2020-01-25 00:47:15 -05:00
bunnei
05df4a8c94
Merge pull request #3343 from FearlessTobi/ui-tab
...
yuzu/configuration: create UI tab and move gamelist settings there
2020-01-25 00:40:13 -05:00
bunnei
2b1d66eda3
Merge pull request #3326 from FearlessTobi/port-5039
...
Port citra-emu/citra#5039 : "common/logging: don't use regex for path trimming"
2020-01-24 20:59:57 -05:00
FearlessTobi
845a5dbca9
Disable clang-format for font files
2020-01-24 23:54:19 +01:00
bunnei
dfd998216c
Merge pull request #3344 from ReinUsesLisp/vk-botw
...
vk_shader_decompiler: Disable default values on unwritten render targets
2020-01-24 17:31:55 -05:00
Fernando Sahmkow
806f569143
Shader_IR: Change name of TrackSampler function so it does not confuse with the type.
2020-01-24 16:44:48 -04:00
Fernando Sahmkow
3919b7b8a9
Shader_IR: Corrections, styling and extras.
2020-01-24 16:44:48 -04:00
Fernando Sahmkow
37b8504faa
Shader_IR: Correct Custom Variable assignment.
2020-01-24 16:44:47 -04:00
Fernando Sahmkow
7c530e0666
Shader_IR: Propagate bindless index into the GL compiler.
2020-01-24 16:44:47 -04:00
Fernando Sahmkow
3c34678627
Shader_IR: Implement Injectable Custom Variables to the IR.
2020-01-24 16:43:31 -04:00
Fernando Sahmkow
2b02f29a2d
GL Backend: Introduce indexed samplers into the GL backend
2020-01-24 16:43:31 -04:00
Fernando Sahmkow
037ea431ce
Shader_IR: deduce size of indexed samplers
2020-01-24 16:43:31 -04:00
Fernando Sahmkow
f4603d23c5
Shader_IR: Setup Indexed Samplers on the IR
2020-01-24 16:43:30 -04:00
Fernando Sahmkow
603c861532
Shader_IR: Implement initial code for tracking indexed samplers.
2020-01-24 16:43:30 -04:00
Fernando Sahmkow
64496f2456
Shader_IR: Address Feedback
2020-01-24 16:43:30 -04:00
Fernando Sahmkow
b97608ca64
Shader_IR: Allow constant access of guest driver.
2020-01-24 16:43:30 -04:00
Fernando Sahmkow
dc5cfa8d28
Shader_IR: Address Feedback
2020-01-24 16:43:29 -04:00
Fernando Sahmkow
74aa7de5e3
Guest_driver: Correct compiling errors in GCC.
2020-01-24 16:43:29 -04:00
Fernando Sahmkow
1e4b6bef6f
Shader_IR: Store Bound buffer on Shader Usage
2020-01-24 16:43:29 -04:00
Fernando Sahmkow
c921e496eb
GPU: Implement guest driver profile and deduce texture handler sizes.
2020-01-24 16:43:29 -04:00
Fernando Sahmkow
ab89ced244
Kernel: Implement Physical Core.
2020-01-24 15:38:20 -04:00
bunnei
a104b985a8
Merge pull request #3273 from FernandoS27/txd-array
...
Shader_IR: Implement TXD Array.
2020-01-24 14:02:40 -05:00
bunnei
f64adcfc37
Merge pull request #3340 from SciresM/pmdx
...
loader: provide default arguments (zero byte) to NSOs
2020-01-24 10:31:43 -05:00
ReinUsesLisp
1690f1adba
vk_shader_decompiler: Disable default values on unwritten render targets
...
Some games like The Legend of Zelda: Breath of the Wild assign
render targets without writing them from the fragment shader. This
generates Vulkan validation errors, so silence these I previously
introduced a commit to set "vec4(0, 0, 0, 1)" for these attachments. The
problem is that this is not what games expect. This commit reverts that
change.
2020-01-24 01:16:21 -03:00
FearlessTobi
e3cad7d49e
audio_core: Switch to a faster interpolation technique
2020-01-24 00:38:22 +01:00
FearlessTobi
d0e4f1c6f4
yuzu/configuration: create UI tab and move gamelist settings there
2020-01-24 00:15:51 +01:00
BreadFish64
a31ed02ae4
common/logging: don't use regex for path trimming
2020-01-23 23:08:05 +01:00
FearlessTobi
d01eb12f36
Replace GetString with Get function
...
This should hopefully fix compilation errors.
2020-01-23 20:55:26 +01:00
FearlessTobi
bbd85a495a
Address second part of review comments
2020-01-23 20:55:26 +01:00
FearlessTobi
0fe11746fc
Address review comments
2020-01-23 20:55:26 +01:00
fearlessTobi
ac3690f205
Input: UDP Client to provide motion and touch controls
...
An implementation of the cemuhook motion/touch protocol, this adds the
ability for users to connect several different devices to citra to send
direct motion and touch data to citra.
Co-Authored-By: jroweboy <jroweboy@gmail.com>
2020-01-23 20:55:26 +01:00
bunnei
a167da4278
Merge pull request #3341 from bunnei/time-posix-myrule
...
service: time: Implement ToPosixTimeWithMyRule.
2020-01-23 12:04:01 -05:00
Fernando Sahmkow
9c6b5cae68
Merge pull request #3338 from ReinUsesLisp/no-fastmath
...
gl_shader_cache: Disable fastmath on Nvidia
2020-01-23 10:08:45 -04:00
bunnei
ed76c71319
service: time: Implement ToPosixTimeWithMyRule.
...
- Used by Pokemon Mystery Dungeon.
2020-01-22 23:20:19 -05:00
Michael Scire
5a7eecc3ad
loader: provide default arguments (zero byte) to NSOs
...
Certain newer unity games (Terraria, Pokemon Mystery Dungeon) require
that the argument region be populated. Failure to do so results in
an integer underflow in argument count, and eventually an unmapped
read at 0x800000000. Providing this default fixes this.
Note that the behavior of official software is as yet unverified,
arguments-wise.
2020-01-22 20:14:06 -08:00
bunnei
89b326e396
Merge pull request #3324 from FearlessTobi/port-5037
...
Port citra-emu/citra#5037 : "CMake: Create thin archives on Linux"
2020-01-22 19:48:15 -05:00
Bartosz Kaszubowski
9a22b6dced
GUI: fix minor issues with dark themes
...
GUI: rename and reorder themes
2020-01-22 21:12:45 +01:00
ReinUsesLisp
3ce28342a2
gl_shader_cache: Disable fastmath on Nvidia
2020-01-21 19:08:08 -03:00
Fernando Sahmkow
79e0991d9b
Merge pull request #3330 from ReinUsesLisp/vk-blit-screen
...
vk_blit_screen: Initial implementation
2020-01-20 22:32:16 -04:00
ReinUsesLisp
a665581684
vk_blit_screen: Address feedback
2020-01-20 18:43:11 -03:00
bunnei
7113236b30
time: Fix month off-by-one error.
...
- Fixes timestamp in ZLA and Astral Chain saves.
2020-01-20 14:20:32 -05:00
bunnei
4ea073c286
Merge pull request #3332 from bunnei/config-audio-tab
...
yuzu_qt: config: Move audio to its own tab.
2020-01-20 04:24:51 -05:00
bunnei
69b44392a7
Merge pull request #3328 from ReinUsesLisp/vulkan-atoms
...
vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V
2020-01-20 00:01:52 -05:00
bunnei
5a077c95ce
Merge pull request #3322 from ReinUsesLisp/vk-front-face
...
vk_graphics_pipeline: Set front facing properly
2020-01-19 23:22:34 -05:00
bunnei
690732bc0d
yuzu_qt: config: Move audio to its own tab.
...
- We have some important audio settings, makes them more discoverable.
2020-01-19 23:17:53 -05:00
bunnei
8b9f433d95
Merge pull request #3271 from bunnei/time-rewrite
...
service: time: Rewrite implementation of glue services.
2020-01-19 22:45:05 -05:00
ReinUsesLisp
f5dfe68a94
vk_blit_screen: Initial implementation
...
This abstraction takes care of presenting accelerated and
non-accelerated or "framebuffer" images to the Vulkan swapchain.
2020-01-19 21:12:43 -03:00
bunnei
41373d212e
Merge pull request #3313 from ReinUsesLisp/vk-rasterizer
...
vk_rasterizer: Implement Vulkan's rasterizer
2020-01-19 18:09:01 -05:00
Bartosz Kaszubowski
9ac33c2620
GUI/gamelist: add "None" as an option for second row and remove dynamically duplicate row options ( #3309 )
...
* GUI/gamelist: add "None" as an option for second row and remove duplicated row options
* fix clang-format warnings
2020-01-19 15:56:49 -05:00
ReinUsesLisp
b2c976ad0e
vk_shader_decompiler: Implement UAtomicAdd (ATOMS) on SPIR-V
...
Also updates sirit to include atomic instructions.
2020-01-19 16:40:31 -03:00
FearlessTobi
4e9331f45d
system_archive: Fix Chinese font
...
Adds the proper OSS font for the Chinese language.
2020-01-19 15:09:53 +01:00
FearlessTobi
999e3f89b9
system_archive: Fix Korean font
...
Fixes Korean fonts when using Open-source system archives.
2020-01-19 15:09:50 +01:00
Léo Lam
f98cd210ab
CMake: Create thin archives on Linux
...
This significantly reduces unnecessary disk writes and space usage
when building Citra.
libcore.a is now only ~1MB rather than several hundred megabytes.
2020-01-19 12:52:09 +01:00
Fernando Sahmkow
51c8aea979
Merge pull request #3317 from ReinUsesLisp/gl-decomp-cc-decomp
...
gl_shader_decompiler: Fix decompilation of condition codes
2020-01-18 19:56:55 -04:00
ReinUsesLisp
d110a371bb
gl_state: Use bool instead of GLboolean
...
This fixes template resolution considering GLboolean an integer instead
of a bool.
2020-01-18 19:10:34 -03:00
ReinUsesLisp
94915d4ea1
vk_graphics_pipeline: Set front facing properly
...
Front face was being forced to a certain value when cull face is
disabled. Set a default value on initialization and drop the forcefully
set front facing value with culling disabled.
2020-01-18 18:50:47 -03:00
bunnei
e972016456
Merge pull request #3298 from Simek/missing_hotkeys
...
GUI: add few missing hotkeys to main menu
2020-01-18 13:07:13 -05:00
Markus Wick
56672b8c98
core/memory: Create a special MapMemoryRegion for physical memory.
...
This allows us to create a fastmem arena within the memory.cpp helpers.
2020-01-18 08:38:47 +01:00
Markus Wick
55103da066
core/hle: Simplify PhysicalMemory usage in vm_manager.
2020-01-18 08:29:19 +01:00
Markus Wick
7e94e544f4
core/loaders: Simplify PhysicalMemory usage.
...
It is currently a std::vector, however we might want to replace it with a more fancy allocator.
So we can't use the C++ iterators any more.
2020-01-18 08:29:19 +01:00
bunnei
9bf4850f74
Merge pull request #3305 from ReinUsesLisp/point-size-program
...
gl_state: Implement PROGRAM_POINT_SIZE
2020-01-18 01:56:32 -05:00
bunnei
15163edaaa
Merge pull request #3312 from ReinUsesLisp/atoms-u32
...
shader/memory: Implement ATOMS.ADD.U32
2020-01-18 00:54:07 -05:00
James Rowe
4512a6bbfc
Remove unused CPU Vendor string and telemtry field
...
The information is duplicated in the brand string and the telemetry field is unused
2020-01-17 18:41:18 -07:00
ReinUsesLisp
09b1d762d7
vk_rasterizer: Address feedback
2020-01-17 21:40:01 -03:00
ReinUsesLisp
f34e519da3
gl_shader_decompiler: Fix decompilation of condition codes
...
Use Visit instead of reimplementing it. Fixes unimplemented negations
for condition codes.
2020-01-17 21:23:01 -03:00
TotalCaesar659
dd74fd014b
Add headbar icon on Linux
2020-01-18 02:46:07 +03:00
bunnei
48863afb65
Merge pull request #3306 from ReinUsesLisp/gl-texture
...
gl_texture_cache: Minor fixes and style changes
2020-01-17 15:44:02 -05:00
bunnei
657b3a366e
Merge pull request #3311 from ReinUsesLisp/z32fx24s8
...
format_lookup_table: Fix ZF32_X24S8 component types
2020-01-17 08:22:32 -05:00
ReinUsesLisp
fe5356d223
vk_rasterizer: Implement Vulkan's rasterizer
...
This abstraction is Vulkan's equivalent to OpenGL's rasterizer. It takes
care of joining all parts of the backend and rendering accordingly on
demand.
2020-01-16 23:05:15 -03:00
ReinUsesLisp
38e789c761
renderer_vulkan: Add header as placeholder
2020-01-16 22:54:15 -03:00
bunnei
e041f33569
Merge pull request #3300 from ReinUsesLisp/vk-texture-cache
...
vk_texture_cache: Implement generic texture cache on Vulkan
2020-01-16 19:19:26 -05:00
ReinUsesLisp
f09cd52980
vk_texture_cache: Address feedback
2020-01-16 18:23:10 -03:00
ReinUsesLisp
63ba41a26d
shader/memory: Implement ATOMS.ADD.U32
2020-01-16 17:30:55 -03:00
ReinUsesLisp
0caab54b5d
format_lookup_table: Fix ZF32_X24S8 component types
...
Component types for ZF32_X24S8 were using UNORM. Drivers will set FLOAT,
UINT, UNORM, UNORM; causing a format mismatch. This commit addresses
that.
2020-01-16 17:29:13 -03:00
Rodrigo Locatti
82e1285c1e
vk_texture_cache: Fix typo in commentary
...
Co-Authored-By: MysticExile <30736337+MysticExile@users.noreply.github.com>
2020-01-16 16:59:46 -03:00
bunnei
30faf6a964
Merge pull request #3308 from lioncash/private
...
maxwell_3d: Make dirty_pointers private
2020-01-16 13:26:35 -05:00
bunnei
d23869811d
Merge pull request #3304 from lioncash/fwd-decl
...
renderer_opengl/utils: Forward declare private structs
2020-01-16 11:21:18 -05:00
Lioncash
9e874898f5
maxwell_3d: Make dirty_pointers private
...
This isn't used outside of the class itself, so we can make it private
for the time being.
2020-01-16 04:07:15 -05:00
James Rowe
b429095b61
Fix git version in scm_rev.cpp
2020-01-16 00:12:50 -07:00
ReinUsesLisp
c375d735e6
gl_state: Implement PROGRAM_POINT_SIZE
...
For gl_PointSize to have effect we have to activate
GL_PROGRAM_POINT_SIZE.
2020-01-15 16:14:17 -03:00
Lioncash
7af56dfa76
renderer_opengl/utils: Remove unused header inclusions
...
Nothing from these headers are used, so they can be removed.
2020-01-15 06:31:23 -05:00
Lioncash
06d30fbcca
renderer_opengl/utils: Forward declare private structs
...
Keeps the definitions hidden and allows changes to the structs without
needing to recompile all users of classes containing said structs.
2020-01-15 06:30:01 -05:00
CJBok
635deb70d4
Moved analog direction logic to sdl_impl
2020-01-15 11:25:15 +01:00
CJBok
231d9c10f3
Corrected directional states sensitivity
2020-01-14 21:51:58 +01:00
ReinUsesLisp
66a1c777c9
gl_texture_cache: Use local variables to simplify DownloadTexture
2020-01-14 17:39:48 -03:00
ReinUsesLisp
cdb00546f0
gl_texture_cache: Fix format for RGBX16F
2020-01-14 17:38:33 -03:00
ReinUsesLisp
2d09467f6f
gl_texture_cache: Use Snorm internal format for RG8S
2020-01-14 17:37:58 -03:00
ReinUsesLisp
02624c35ec
gl_texture_cache: Use Snorm internal format for ABGR8S
2020-01-14 17:37:23 -03:00
Rodrigo Locatti
64cd46579b
Merge pull request #3303 from lioncash/reorder
...
control_flow: Silence -Wreorder warning for CFGRebuildState
2020-01-14 16:15:18 -03:00
Rodrigo Locatti
81e9e229fa
Merge pull request #3302 from lioncash/unused-var
...
gl_shader_cache: Remove unused variables
2020-01-14 16:14:47 -03:00
Lioncash
a1eee1749e
control_flow: Silence -Wreorder warning for CFGRebuildState
...
Organizes the initializer list in the same order that the variables
would actually be initialized in.
2020-01-14 13:28:48 -05:00
bunnei
a83e28b237
Merge pull request #3296 from Simek/hotkeys_resize
...
GUI/configure: resize hotkeys action column to fit content
2020-01-14 13:17:16 -05:00
Lioncash
f10ea944e0
gl_shader_cache: Remove unused STAGE_RESERVED_UBOS constant
...
Given this isn't used, this can be removed entirely.
2020-01-14 13:16:52 -05:00
Lioncash
4cd5ad90f3
gl_shader_cache: std::move entries in CachedShader constructor
...
Avoids several reallocations of std::vector instances where applicable.
2020-01-14 13:14:16 -05:00
Lioncash
15a6840e7a
gl_shader_cache: Remove unused entries variable in BuildShader()
...
Eliminates a few unnecessary constructions of std::vectors.
2020-01-14 13:11:49 -05:00
bunnei
55f95e7f26
Merge pull request #3287 from ReinUsesLisp/ldg-stg-16
...
shader_ir/memory: Implement u16 and u8 for STG and LDG
2020-01-14 09:57:08 -05:00
bunnei
15788ffcde
Merge pull request #3288 from ReinUsesLisp/uncurse-aoffi
...
shader_ir/texture: Simplify AOFFI code
2020-01-13 23:52:12 -05:00
bunnei
6985eea519
Merge pull request #3290 from ReinUsesLisp/gl-clamp
...
maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver
2020-01-13 19:16:06 -05:00
bunnei
e749f17257
Merge pull request #3292 from degasus/heap_space_fix
...
core/kernel: Fix GetTotalPhysicalMemoryUsed.
2020-01-13 19:15:43 -05:00
ReinUsesLisp
09e17fbb0f
vk_texture_cache: Implement generic texture cache on Vulkan
...
It currently ignores PBO linearizations since these should be dropped as
soon as possible on OpenGL.
2020-01-13 20:37:50 -03:00
ReinUsesLisp
2b2712fa95
texture_cache/surface_params: Make GetNumLayers public
2020-01-13 20:35:43 -03:00
Bartosz Kaszubowski
da3049aa74
GUI: add few missing hotkeys to main menu
2020-01-13 00:49:44 +01:00
CJBok
83be9fc96d
Merge remote-tracking branch 'upstream/master'
2020-01-12 23:21:30 +01:00
Bartosz Kaszubowski
6726e8b784
GUI/configure: resize hotkeys column to content
2020-01-12 22:46:28 +01:00
Markus Wick
c76ffa5019
core/kernel: Fix GetTotalPhysicalMemoryUsed.
...
module._memory was already moved over to a new shared_ptr.
So code_memory_size was not increased at all.
This lowers the heap space and so saves a bit of memory, usually between 50 to 100 MB.
This fixes a regression of c0a01f3adc
2020-01-11 14:04:44 +01:00
Rodrigo Locatti
b1138e5ea1
vk_compute_pass: Address feedback
...
Comment hardcoded SPIR-V modules.
2020-01-10 22:46:34 -03:00
ReinUsesLisp
3d46709b7f
maxwell_to_vk: Implement GL_CLAMP hacking Nvidia's driver
...
Nvidia's driver defaults invalid enumerations to GL_CLAMP. Vulkan
doesn't expose GL_CLAMP through its API, but we can hack it on Nvidia's
driver using the internal driver defaults.
2020-01-10 17:12:50 -03:00
ReinUsesLisp
13021b534c
shader_ir/texture: Simplify AOFFI code
2020-01-09 03:50:37 -03:00
ReinUsesLisp
e2a2a556b9
shader_ir/memory: Implement u16 and u8 for STG and LDG
...
Using the same technique we used for u8 on LDG, implement u16.
In the case of STG, load memory and insert the value we want to set
into it with bitfieldInsert. Then set that value.
2020-01-09 02:12:29 -03:00
CJBok
ae7fd01e38
hid: Fix analog sticks directional states
2020-01-09 02:40:55 +01:00
ReinUsesLisp
908e085d02
vk_compute_pass: Add compute passes to emulate missing Vulkan features
...
This currently only supports quad arrays and u8 indices.
In the future we can remove quad arrays with a table written from the
CPU, but this was used to bootstrap the other passes helpers and it
was left in the code.
The blob code is generated from the "shaders/" directory. Read the
instructions there to know how to generate the SPIR-V.
2020-01-08 19:24:26 -03:00
ReinUsesLisp
82a64da077
vk_shader_util: Add helper to build SPIR-V shaders
2020-01-08 19:22:20 -03:00
Fernando Sahmkow
80436c1330
Merge pull request #3279 from ReinUsesLisp/vk-pipeline-cache
...
vk_pipeline_cache: Initial implementation
2020-01-08 17:31:20 -04:00
bunnei
319c4d2108
Merge pull request #3272 from bunnei/vi-close-layer
...
service: vi: Implement CloseLayer.
2020-01-07 12:45:34 -05:00
ReinUsesLisp
6888d776ff
vk_pipeline_cache: Initial implementation
...
Given a pipeline key, this cache returns a pipeline abstraction (for
graphics or compute).
2020-01-06 22:02:26 -03:00
ReinUsesLisp
2effdeb924
vk_graphics_pipeline: Initial implementation
...
This abstractio represents the state of the 3D engine at a given draw.
Instead of changing individual bits of the pipeline how it's done in
APIs like D3D11, OpenGL and NVN; on Vulkan we are forced to put
everything together into a single, immutable object.
It takes advantage of the few dynamic states Vulkan offers.
2020-01-06 22:02:26 -03:00
ReinUsesLisp
dc96a59fa0
vk_compute_pipeline: Initial implementation
...
This abstraction represents a Vulkan compute pipeline.
2020-01-06 22:02:26 -03:00
ReinUsesLisp
b392a5986e
vk_pipeline_cache: Add file and define descriptor update template filler
...
This function allows us to share code between compute and graphics
pipelines compilation.
2020-01-06 22:02:26 -03:00
ReinUsesLisp
3142f1b597
fixed_pipeline_state: Add depth clamp
2020-01-06 22:02:26 -03:00
ReinUsesLisp
9c548146ca
vk_rasterizer: Add placeholder
2020-01-06 22:02:26 -03:00
bunnei
5be00cba15
Merge pull request #3276 from ReinUsesLisp/pipeline-reqs
...
vk_update_descriptor/vk_renderpass_cache: Add pipeline cache dependencies
2020-01-06 17:03:34 -05:00
bunnei
ee9b4a7f9a
Merge pull request #3278 from ReinUsesLisp/vk-memory-manager
...
renderer_vulkan: Buffer cache, stream buffer and memory manager changes
2020-01-06 17:03:04 -05:00
ReinUsesLisp
5aeff9aff5
vk_renderpass_cache: Initial implementation
...
The renderpass cache is used to avoid creating renderpasses on each
draw. The hashed structure is not currently optimized.
2020-01-06 18:28:32 -03:00
ReinUsesLisp
322d6a0311
vk_update_descriptor: Initial implementation
...
The update descriptor is used to store in flat memory a large chunk of
staging data used to update descriptor sets through templates. It
provides a push interface to easily insert descriptors following the
current pipeline. The order used in the descriptor update template has
to be implicitly followed. We can catch bugs here using validation
layers.
2020-01-06 18:28:32 -03:00
ReinUsesLisp
5b01f80a12
vk_stream_buffer/vk_buffer_cache: Avoid halting and use generic cache
...
The stream buffer before this commit once it was full (no more bytes to
write before looping) waiting for all previous operations to finish.
This was a temporary solution and had a noticeable performance penalty
in performance (from what a profiler showed).
To avoid this mark with fences usages of the stream buffer and once it
loops wait for them to be signaled. On average this will never wait.
Each fence knows where its usage finishes, resulting in a non-paged
stream buffer.
On the other side, the buffer cache is reimplemented using the generic
buffer cache. It makes use of the staging buffer pool and the new
stream buffer.
2020-01-06 18:13:41 -03:00
ReinUsesLisp
ceb851b590
vk_memory_manager: Misc changes
...
* Allocate memory in discrete exponentially increasing chunks until the
128 MiB threshold. Allocations larger thant that increase linearly by
256 MiB (depending on the required size). This allows to use small
allocations for small resources.
* Move memory maps to a RAII abstraction. To optimize for debugging
tools (like RenderDoc) users will map/unmap on usage. If this ever
becomes a noticeable overhead (from my profiling it doesn't) we can
transparently move to persistent memory maps without harming the API,
getting optimal performance for both gameplay and debugging.
* Improve messages on exceptional situations.
* Fix typos "requeriments" -> "requirements".
* Small style changes.
2020-01-06 18:13:41 -03:00
ReinUsesLisp
85bb6a6f08
vk_buffer_cache: Temporarily remove buffer cache
...
This is intended for a follow up commit to avoid circular dependencies.
2020-01-06 17:58:46 -03:00
bunnei
984563b773
Merge pull request #3277 from ReinUsesLisp/make-current
...
yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffers
2020-01-06 14:09:19 -05:00
ReinUsesLisp
8306703a7d
yuzu/bootmanager: Remove {glx,wgl}MakeCurrent on SwapBuffers
...
MakeCurrent is a costly (according to Nsight's profiler it takes a tenth
of a millisecond to complete), and we don't have a reason to call it
because:
- Qt no longer signals a warning if it's not called
- yuzu no longer supports macOS
2020-01-06 14:02:47 -03:00
bunnei
09908207fb
Merge pull request #3261 from degasus/page_table
...
core/memory + arm/dynarmic: Use a global offset within our arm page table.
2020-01-06 11:56:59 -05:00
bunnei
89fc75d769
Merge pull request #3257 from degasus/no_busy_loops
...
video_core: Block in WaitFence.
2020-01-06 00:09:57 -05:00
Fernando Sahmkow
56e450a3f7
Merge pull request #3264 from ReinUsesLisp/vk-descriptor-pool
...
vk_descriptor_pool: Initial implementation
2020-01-05 15:54:41 -04:00
bunnei
6fe51f398f
Merge pull request #2945 from FernandoS27/fix-bcat
...
nifm: Only return that there's an internet connection when there's a BCATServer
2020-01-05 02:17:16 -05:00
bunnei
be5c149d37
service: time: Implement GetStandardLocalSystemClock.
2020-01-04 22:18:54 -05:00
bunnei
cd0a7dfdbc
Merge pull request #3258 from FernandoS27/shader-amend
...
Shader_IR: add the ability to amend code in the shader ir.
2020-01-04 14:05:17 -05:00
bunnei
361285add9
time: Remove overflow error checking (currently breaks ADO builds).
2020-01-04 13:48:31 -05:00
bunnei
a4e840181c
service: time: Implement GetClockSnapshotFromSystemClockContext.
2020-01-04 13:48:30 -05:00
bunnei
fab2607c6b
service: time: Implement IsStandardNetworkSystemClockAccuracySufficient.
2020-01-04 13:48:30 -05:00
bunnei
4414640285
system_archive: Add a basic HLE implementation for time zone binary.
2020-01-04 13:48:29 -05:00
bunnei
78f977c980
service: time: Rewrite implementation of glue services.
2020-01-04 13:48:29 -05:00
Fernando Sahmkow
3dd6b55851
Shader_IR: Address Feedback
2020-01-04 14:40:57 -04:00
bunnei
5135b74179
core: Initialize several structs that make use of Common::UUID.
2020-01-04 13:29:55 -05:00
Fernando Sahmkow
a1667a7b46
Shader_IR: Implement TXD Array.
...
This commit extends the compilation of TXD to support array samplers on
TXD.
2020-01-04 13:28:02 -04:00
bunnei
64c5631579
service: vi: Implement CloseLayer.
...
- Needed for Undertale.
2020-01-04 00:45:06 -05:00
Rodrigo Locatti
6e347d8d1b
Update src/video_core/renderer_vulkan/vk_descriptor_pool.cpp
...
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2020-01-03 17:34:30 -03:00
bunnei
624a0f7f3f
Merge pull request #3247 from FernandoS27/remap-fix
...
NvServices: Correct Ioctl Remap.
2020-01-03 12:30:56 -05:00
CJBok
2fa9a96309
const correction
2020-01-03 10:30:51 +01:00
CJBok
90f9c830ca
clang
2020-01-03 09:31:54 +01:00
CJBok
351e3fb72e
Update configure_input_player.cpp
2020-01-03 09:11:34 +01:00
CJBok
4a566b9828
Added deadzone controls for sdl engine at input settings
2020-01-03 08:54:57 +01:00
ReinUsesLisp
0d6d8129c4
yuzu: Remove Maxwell debugger
...
This was carried from Citra and wasn't really used on yuzu. It also adds
some runtime overhead. This commit removes it from yuzu's codebase.
2020-01-02 23:09:44 -03:00
bunnei
ae0e481677
Merge pull request #3243 from ReinUsesLisp/topologies
...
maxwell_to_gl: Implement missing primitive topologies
2020-01-01 20:33:33 -05:00
ReinUsesLisp
1fe7df4517
vk_descriptor_pool: Initial implementation
...
Create a large descriptor pool where we allocate all our descriptors
from. It has to be wide enough to support any pipeline, hence its large
numbers.
If the descritor pool is filled, we allocate more memory at that moment.
This way we can take advantage of permissive drivers like Nvidia's that
allocate more descriptors than what the spec requires.
2020-01-01 16:44:06 -03:00
Markus Wick
0986caa8d8
core/memory + arm/dynarmic: Use a global offset within our arm page table.
...
This saves us two x64 instructions per load/store instruction.
TODO: Clean up our memory code. We can use this optimization here as well.
2020-01-01 12:24:54 +01:00
bunnei
028b2718ed
Merge pull request #3239 from ReinUsesLisp/p2r
...
shader/p2r: Implement P2R Pr
2019-12-31 20:37:16 -05:00
Fernando Sahmkow
b3371ed09e
Shader_IR: add the ability to amend code in the shader ir.
...
This commit introduces a mechanism by which shader IR code can be
amended and extended. This useful for track algorithms where certain
information can derived from before the track such as indexes to array
samplers.
2019-12-30 15:31:48 -04:00
Fernando Sahmkow
7bd447355f
Merge pull request #3248 from ReinUsesLisp/vk-image
...
vk_image: Add an image object abstraction
2019-12-30 14:25:14 -04:00
Rodrigo Locatti
4cbb363d3f
vk_image: Avoid unnecesary equals
2019-12-30 13:28:23 -03:00
Fernando Sahmkow
287d5921cf
Merge pull request #3249 from ReinUsesLisp/vk-staging-buffer-pool
...
vk_staging_buffer_pool: Add a staging pool for temporary operations
2019-12-30 12:25:59 -04:00
Markus Wick
cb9dd01ffd
video_core: Block in WaitFence.
...
This function is called rarely and blocks quite often for a long time.
So don't waste power and let the CPU sleep.
This might also increase the performance as the other cores might be allowed to clock higher.
2019-12-30 13:04:53 +01:00
Rodrigo Locatti
f2c61bbe13
vk_staging_buffer_pool: Initialize last epoch to zero
2019-12-29 19:19:43 -03:00
Fernando Sahmkow
f846e3d6d0
Merge pull request #3250 from ReinUsesLisp/empty-fragment
...
gl_rasterizer: Allow rendering without fragment shader
2019-12-28 14:33:53 -04:00
bunnei
8a76f816a4
Merge pull request #3228 from ReinUsesLisp/ptp
...
shader/texture: Implement AOFFI and PTP for TLD4 and TLD4S
2019-12-26 21:43:44 -05:00
ReinUsesLisp
5b989f189f
gl_rasterizer: Allow rendering without fragment shader
...
Rendering without a fragment shader is usually used in depth-only
passes.
2019-12-26 16:38:49 -03:00
ReinUsesLisp
3813af2f3c
vk_staging_buffer_pool: Add a staging pool for temporary operations
...
The job of this abstraction is to provide staging buffers for temporary
operations. Think of image uploads or buffer uploads to device memory.
It automatically deletes unused buffers.
2019-12-25 18:12:17 -03:00
ReinUsesLisp
c83bf7cd1e
vk_image: Add an image object abstraction
...
This object's job is to contain an image and manage its transitions.
Since Nvidia hardware doesn't know what a transition is but Vulkan
requires them anyway, we have to state track image subresources
individually.
To avoid the overhead of tracking each subresource in images with many
subresources (think of cubemap arrays with several mipmaps), this commit
tracks when subresources have diverged. As long as this doesn't happen
we can check the state of the first subresource (that will be shared
with all subresources) and update accordingly.
Image transitions are deferred to the scheduler command buffer.
2019-12-25 18:00:16 -03:00
Fernando Sahmkow
a5bb1ac6e3
NvServices: Correct Ioctl Remap.
...
This commit corrects a padding value in Ioctl Remap that was actually an
offset to the mapping address.
2019-12-25 14:37:28 -04:00
Fernando Sahmkow
5619d24377
Merge pull request #3244 from ReinUsesLisp/vk-fps
...
fixed_pipeline_state: Define structure and loaders
2019-12-25 14:31:29 -04:00
bunnei
4af569ee47
Merge pull request #3236 from ReinUsesLisp/rasterize-enable
...
gl_rasterizer: Implement RASTERIZE_ENABLE
2019-12-24 22:54:10 -05:00
ReinUsesLisp
b9e3f5eb36
fixed_pipeline_state: Define symetric operator!= and mark as noexcept
...
Marks as noexcept Hash, operator== and operator!= for consistency.
2019-12-24 18:24:08 -03:00
ReinUsesLisp
4a3026b16b
fixed_pipeline_state: Define structure and loaders
...
The intention behind this hasheable structure is to describe the state
of fixed function pipeline state that gets compiled to a single graphics
pipeline state object. This is all dynamic state in OpenGL but Vulkan
wants it in an immutable state, even if hardware can edit it freely.
In this commit the structure is defined in an optimized state (it uses
booleans, has paddings and many data entries that can be packed to
single integers). This is intentional as an initial implementation that
is easier to debug, implement and review. It will be optimized in later
stages, or it might change if Vulkan gets more dynamic states.
2019-12-22 22:59:11 -03:00
ReinUsesLisp
5770418fb3
maxwell_3d: Add depth bounds registers
2019-12-22 22:55:06 -03:00
ReinUsesLisp
91d35559e5
maxwell_to_gl: Implement missing primitive topologies
...
Many of these topologies are exclusively available in OpenGL.
2019-12-22 22:33:01 -03:00
bunnei
e976d0e924
Merge pull request #3241 from ReinUsesLisp/gl-shader-cache
...
gl_shader_cache: Style changes
2019-12-22 16:23:46 -05:00
bunnei
1e76655f83
Merge pull request #3238 from ReinUsesLisp/vk-resource-manager
...
vk_resource_manager: Catch device losses and other changes
2019-12-22 15:57:16 -05:00
bunnei
0f3ac9cfeb
Merge pull request #3203 from FernandoS27/tex-cache-fixes
...
Texture Cache: Add HLE methods for building 3D textures
2019-12-22 14:25:13 -05:00
Fernando Sahmkow
3dc585d011
Merge pull request #3237 from ReinUsesLisp/vk-shader-decompiler
...
vk_shader_decompiler: Misc changes
2019-12-22 12:36:56 -04:00
Fernando Sahmkow
218ee18417
Texture Cache: Improve documentation
2019-12-22 12:29:23 -04:00
Fernando Sahmkow
a3916588b6
Texture Cache: Address Feedback
2019-12-22 12:24:34 -04:00
Fernando Sahmkow
51c9e98677
Texture Cache: Add HLE methods for building 3D textures within the GPU in certain scenarios.
...
This commit adds a series of HLE methods for handling 3D textures in
general. This helps games that generate 3D textures on every frame and
may reduce loading times for certain games.
2019-12-22 12:24:34 -04:00
Fernando Sahmkow
aea978e037
Merge pull request #3230 from ReinUsesLisp/vk-emu-shaders
...
renderer_vulkan/shader: Add helper GLSL shaders
2019-12-22 11:23:09 -04:00
Fernando Sahmkow
27efcc15e9
Merge pull request #3240 from ReinUsesLisp/decomp-cond-code
...
vk_shader_decompiler: Use Visit instead of reimplementing it
2019-12-22 11:20:55 -04:00
bunnei
16dcfacbfc
Merge pull request #3235 from ReinUsesLisp/ldg-u8
...
shader/memory: Implement LDG.U8 and unaligned U8 loads
2019-12-21 22:50:28 -05:00
ReinUsesLisp
1e16023d60
gl_shader_cache: Update commentary for shared memory
...
Remove false commentary. Not dividing by 4 the size of shared memory is
not a hack; it describes the number of integers, not bytes.
While we are at it sort the generated code to put preprocessor lines on
the top.
2019-12-20 22:51:21 -03:00
ReinUsesLisp
486c6a5316
gl_shader_cache: Remove unused entry in GetPrimitiveDescription
2019-12-20 22:49:30 -03:00
ReinUsesLisp
af93909c9c
vk_shader_decompiler: Use Visit instead of reimplementing it
...
ExprCondCode visit implements the generic Visit. Use this instead of
that one.
As an intended side effect this fixes unwritten memory usages in cases
when a negation of a condition code is used.
2019-12-20 21:36:25 -03:00
ReinUsesLisp
38d3a48873
shader/p2r: Implement P2R Pr
...
P2R dumps predicate or condition codes state to a register. This is
useful for unit testing.
2019-12-20 18:02:41 -03:00
ReinUsesLisp
cf27b59493
shader/r2p: Refactor P2R to support P2R
2019-12-20 17:55:42 -03:00
bunnei
7be65c6a68
Merge pull request #3234 from ReinUsesLisp/i2f-u8-selector
...
shader/conversion: Implement byte selector in I2F
2019-12-19 22:36:26 -05:00
bunnei
6d55b14cc0
Merge pull request #3233 from ReinUsesLisp/mismatch-sizes
...
shader/texture: Properly shrink unused entries in size mismatches
2019-12-19 20:40:27 -05:00
ReinUsesLisp
e41da22c8d
vk_resource_manager: Add entry to VKFence to test its usage
2019-12-19 16:31:34 -03:00
ReinUsesLisp
ec983a2451
vk_reosurce_manager: Add assert for releasing fences
...
Notify the programmer when a request to release a fence is invalid
because the fence is already free.
2019-12-19 16:31:34 -03:00
ReinUsesLisp
6ddffa010a
vk_resource_manager: Implement VKFenceWatch move constructor
...
This allows us to put VKFenceWatch inside a std::vector without storing
it in heap. On move we have to signal the fences where the new protected
resource is, adding some overhead.
2019-12-19 16:31:34 -03:00
ReinUsesLisp
54747d60bc
vk_device: Add entry to catch device losses
...
VK_NV_device_diagnostic_checkpoints allows us to push data to a Vulkan
queue and then query it even after a device loss. This allows us to push
the current pipeline object and see what was the call that killed the
device.
2019-12-19 16:31:33 -03:00
ReinUsesLisp
2a63b3bdb9
vk_shader_decompiler: Fix full decompilation
...
When full decompilation was enabled, labels were not being inserted and
instructions were misused. Fix these bugs.
2019-12-19 16:24:45 -03:00
ReinUsesLisp
de918ebeb0
vk_shader_decompiler: Skip NDC correction when it is native
...
Avoid changing gl_Position when the NDC used by the game is [0, 1]
(Vulkan's native).
2019-12-19 16:24:45 -03:00
ReinUsesLisp
485c21eac3
vk_shader_decompiler: Normalize output fragment attachments
...
Some games write from fragment shaders to an unexistant framebuffer
attachment or they don't write to one when it exists in the framebuffer.
Fix this by skipping writes or adding zeroes.
2019-12-19 16:24:45 -03:00
bunnei
1eb4a95d2b
Merge pull request #3232 from ReinUsesLisp/gl-decompiler-images
...
gl_shader_decompiler: Add missing DeclareImages
2019-12-19 11:32:47 -05:00
bunnei
253aa52351
Merge pull request #3231 from ReinUsesLisp/tld4s-encoding
...
shader_bytecode: Fix TLD4S encoding
2019-12-19 11:32:25 -05:00
ReinUsesLisp
f4a25f854c
vk_device: Add query for RGBA8Uint
2019-12-19 02:08:29 -03:00
ReinUsesLisp
abb33d4aec
vk_shader_decompiler: Update sirit and implement Texture AOFFI
2019-12-19 01:42:13 -03:00
bunnei
d53cf05513
Merge pull request #3221 from ReinUsesLisp/vk-scheduler
...
vk_scheduler: Delegate commands to a worker thread and state track
2019-12-18 22:04:08 -05:00
ReinUsesLisp
da0aa4da6b
gl_rasterizer: Implement RASTERIZE_ENABLE
...
RASTERIZE_ENABLE is the opposite of GL_RASTERIZER_DISCARD. Implement it
naturally using this.
NVN games expect rasterize to be enabled by default, reflect that in our
initial GPU state.
2019-12-18 19:28:23 -03:00
ReinUsesLisp
ae8d4b6c0c
shader/memory: Implement LDG.U8 and unaligned U8 loads
...
LDG can load single bytes instead of full integers or packs of integers.
These have the advantage of loading bytes that are not aligned to 4
bytes.
To emulate these this commit gets the byte being referenced (by doing
"address & 3" and then using that to extract the byte from the loaded
integer:
result = bitfieldExtract(loaded_integer, (address % 4) * 8, 8)
2019-12-18 01:21:46 -03:00
ReinUsesLisp
a7d6bd1ef1
shader/conversion: Implement byte selector in I2F
...
I2F's byte selector is used to choose what bytes to convert to float.
e.g. if the input is 0xaabbccdd and the selector is ".B3" it will
convert 0xaa. The default (when it's not shown in nvdisasm) is ".B0", in
that example the default would convert 0xdd to float.
2019-12-18 00:41:22 -03:00
ReinUsesLisp
15a753b9a5
shader/texture: Properly shrink unused entries in size mismatches
...
When a image format mismatches we were inserting zeroes to the texture
itself. This was not handling cases were the mismatch uses less
coordinates than the guest shader code. Address that by resizing the
vector.
2019-12-17 23:38:10 -03:00
ReinUsesLisp
e438079b50
gl_shader_decompiler: Add missing DeclareImages
2019-12-17 23:34:15 -03:00
ReinUsesLisp
8b26b4228b
shader_bytecode: Fix TLD4S encoding
2019-12-17 23:32:10 -03:00
bunnei
8825b88a45
Merge pull request #3173 from yuzu-emu/bunnei-spscqueue
...
common: SPSCQueue: Notify after incrementing queue size.
2019-12-17 14:11:20 -05:00
bunnei
67b8ecc73e
common: SPSCQueue: Notify after incrementing queue size.
2019-12-16 20:39:53 -05:00
ReinUsesLisp
b52297767e
renderer_vulkan/shader: Add helper GLSL shaders
...
These shaders are used to specify code that is not dynamically generated
in the Vulkan backend. Instead of packing it inside the build system,
it's manually built and copied to the C++ file to avoid adding
unnecessary build time dependencies.
quad_array should be dropped in the future since it can be emulated with
a memory pool generated from the CPU.
2019-12-16 17:59:08 -03:00
bunnei
65b1b05e05
Merge pull request #3182 from ReinUsesLisp/renderer-opengl
...
renderer_opengl: Miscellaneous clean ups
2019-12-16 13:01:04 -05:00
ReinUsesLisp
e09c1fbc1f
shader/texture: Implement TLD4.PTP
2019-12-16 04:09:24 -03:00
ReinUsesLisp
844e4a297b
shader/texture: Enable arrayed TLD4
2019-12-16 02:37:21 -03:00
ReinUsesLisp
a87c85eba2
gl_shader_decompiler: Rename "sepparate" to "separate"
2019-12-16 02:12:51 -03:00
ReinUsesLisp
3d2c44848b
shader/texture: Implement AOFFI for TLD4S
2019-12-16 02:06:42 -03:00
ReinUsesLisp
3d9fff82c0
shader/texture: Remove unnecesary parenthesis
2019-12-16 01:52:33 -03:00
Rodrigo Locatti
eac075692b
Merge pull request #3219 from FernandoS27/fix-bindless
...
Corrections and fixes to TLD4S & bindless samplers failing
2019-12-16 01:26:11 -03:00
bunnei
3d51153611
Merge pull request #3222 from ReinUsesLisp/maxwell-to-vk
...
maxwell_to_vk: Use VK_EXT_index_type_uint8 and misc changes
2019-12-14 22:30:12 -05:00
bunnei
035ec7d9de
Merge pull request #3213 from ReinUsesLisp/intel-mesa
...
gl_device: Enable compute shaders for Intel Mesa drivers
2019-12-14 16:04:31 -05:00
bunnei
2b650543c6
Merge pull request #3212 from ReinUsesLisp/fix-smem-lmem
...
gl_shader_cache: Add missing new-line on emitted GLSL
2019-12-13 21:35:29 -05:00
ReinUsesLisp
e3ea583893
maxwell_to_vk: Improve image format table and add more formats
...
A1B5G5R5 uses A1R5G5B5. This is flipped with image view swizzles;
flushing is still not properly implemented on Vulkan for this particular
format.
2019-12-13 03:12:29 -03:00
ReinUsesLisp
f27b21077d
maxwell_to_vk: Implement more vertex formats
2019-12-13 03:12:28 -03:00
ReinUsesLisp
8db8631d81
maxwell_to_vk: Implement more primitive topologies
...
Add an extra argument to query device capabilities in the future. The
intention behind this is to use native quads, quad strips, line loops
and polygons if these are released for Vulkan.
2019-12-13 03:12:28 -03:00
ReinUsesLisp
15513f0801
maxwell_to_vk: Approach GL_CLAMP closer to the GL spec
...
The OpenGL spec defines GL_CLAMP's formula similarly to CLAMP_TO_EDGE
and CLAMP_TO_BORDER depending on the filter mode used. It doesn't
exactly behave like this, but it's the closest we can get with what
Vulkan offers without emulating it by injecting shader code.
2019-12-13 03:12:28 -03:00
ReinUsesLisp
f845df8651
maxwell_to_vk: Use VK_EXT_index_type_uint8 when available
2019-12-13 02:37:23 -03:00
ReinUsesLisp
2df9a2dcaf
vk_scheduler: Delegate commands to a worker thread and state track
...
Introduce a worker thread approach for delegating Vulkan work derived
from dxvk's approach. https://github.com/doitsujin/dxvk
Now that the scheduler is what handles all Vulkan work related to
command streaming, store state tracking in itself. This way we can know
when to reupload Vulkan dynamic state to the queue (since this one is
invalidated between command buffers unlike NVN). We can also store the
renderpass state and graphics pipeline bound to avoid redundant binds
and renderpass begins/ends.
2019-12-13 02:24:48 -03:00
bunnei
6d0d79109b
Merge pull request #3214 from lioncash/svc-func
...
kernel/svc: Amend function signature of SignalProcessWideKey
2019-12-12 21:32:36 -05:00
bunnei
8fc49a83b6
Merge pull request #3217 from jhol/fix-boost-include
...
Added missing include
2019-12-11 22:21:24 -05:00
Fernando Sahmkow
c0ee0aa1a8
Shader_IR: Correct TLD4S Depth Compare.
2019-12-11 19:53:17 -04:00
Fernando Sahmkow
af89723fa3
Shader_Ir: Correct TLD4S encoding and implement f16 flag.
2019-12-11 19:53:17 -04:00
Fernando Sahmkow
84a158c977
Gl_Shader_compiler: Correct Depth Compare for Texture Gather operations.
2019-12-11 19:53:16 -04:00
Fernando Sahmkow
271a3264f3
Shader_Ir: default failed tracks on bindless samplers to null values.
2019-12-11 19:53:16 -04:00
Fernando Sahmkow
1d2ba3cc97
Gl_Rasterizer: Skip Tesselation Control and Eval stages as they are un implemented.
...
This commit ensures the OGL backend does not execute tesselation shader
stages as they are currently unimplemented.
2019-12-11 15:41:26 -04:00
bunnei
1a66cde175
Merge pull request #3210 from ReinUsesLisp/memory-barrier
...
shader: Implement MEMBAR.GL
2019-12-11 14:24:39 -05:00
Joel Holdsworth
e9faa1617c
Added missing include
2019-12-11 18:11:49 +00:00
Fernando Sahmkow
22c6b9fab2
Kernel: Correct behavior of Address Arbiter threads. ( #3165 )
...
* Kernel: Correct behavior of Address Arbiter threads.
This corrects arbitration threads to behave just like in Horizon OS.
They are added into a container and released according to what priority
they had when added. Horizon OS does not reorder them if their priority
changes.
* Kernel: Address Feedback.
2019-12-11 10:55:38 -05:00
Lioncash
30e365e4fc
kernel/svc: Correct function signature of SignalProcessWideKey
...
This function doesn't actually return a result code, so we can amend the
signature of it to match.
2019-12-11 07:13:27 -05:00
ReinUsesLisp
f564eaebed
gl_device: Enable compute shaders for Intel Mesa drivers
...
Previously we naively checked for "Intel" in GL_VENDOR, but this
includes both Intel's proprietary driver and the mesa driver. Re-enable
compute shaders for mesa.
2019-12-11 00:00:30 -03:00
ReinUsesLisp
48e16c4c49
gl_shader_cache: Add missing new-line on emitted GLSL
...
Add missing new-line. This caused shaders using local memory and shared
memory to inject a preprocessor GLSL line after an expression (resulting
in invalid code).
It looked like this:
shared uint smem[8];#define LOCAL_MEMORY_SIZE 16
It should look like this (addressed by this commit):
shared uint smem[8];
\#define LOCAL_MEMORY_SIZE 16
2019-12-10 23:52:51 -03:00
bunnei
34f8881d3e
Merge pull request #3201 from lioncash/dump
...
kernel/svc: Provide implementations for svcDumpInfo/svcDumpInfoNew
2019-12-10 21:48:37 -05:00
Fernando Sahmkow
7ffb672f61
Maxwell3D: Implement Depth Mode.
...
This commit finishes adding depth mode that was reverted before due to
other unresolved issues.
2019-12-10 19:51:46 -04:00
ReinUsesLisp
425a254fa2
shader: Implement MEMBAR.GL
...
Implement using memoryBarrier in GLSL and OpMemoryBarrier on SPIR-V.
2019-12-10 16:45:03 -03:00
ReinUsesLisp
233ed96a5c
vk_shader_decompiler: Fix build issues on old gcc versions
2019-12-10 01:55:38 -03:00
ReinUsesLisp
d30cf51d7d
vk_shader_decompiler: Reduce YNegate's severity
2019-12-09 23:52:28 -03:00
ReinUsesLisp
0b5b93053d
shader_ir/other: Implement S2R InvocationId
2019-12-09 23:52:28 -03:00
ReinUsesLisp
ecbfa416f0
vk_shader_decompiler: Misc changes
...
Update Sirit and its usage in vk_shader_decompiler. Highlights:
- Implement tessellation shaders
- Implement geometry shaders
- Implement some missing features
- Use native half float instructions when available.
2019-12-09 23:51:57 -03:00
ReinUsesLisp
9ad6327fbd
shader: Keep track of shaders using warp instructions
2019-12-09 23:40:41 -03:00
ReinUsesLisp
6233b1db08
shader_ir/memory: Implement patch stores
2019-12-09 23:25:21 -03:00
ReinUsesLisp
19ce0d4f1a
vk_device: Misc changes
...
- Setup more features and requirements.
- Improve logging for missing features.
- Collect telemetry parameters.
- Add queries for more image formats.
- Query push constants limits.
- Optionally enable some extensions.
2019-12-09 01:04:48 -03:00
bunnei
faf5ae6a50
Merge pull request #3198 from ReinUsesLisp/tessellation-maxwell
...
maxwell_3d: Add tessellation state entries
2019-12-08 22:28:25 -05:00
ReinUsesLisp
7ea362e134
externals: Update Vulkan-Headers
2019-12-08 22:08:19 -03:00
Rodrigo Locatti
e54699565a
Merge pull request #3199 from ReinUsesLisp/vk-swapchain
...
vk_swapchain: Add support for swapping sRGB
2019-12-08 21:53:22 -03:00
Lioncash
c3e43c7e81
kernel: Remove unnecessary includes
...
Over the course of the changes to the kernel code, a few includes are no
longer necessary, particularly with the change over to std::shared_ptr
from Boost's intrusive_ptr.
2019-12-07 22:37:05 -05:00
Lioncash
67b8265bd6
kernel/svc: Provide implementations for svcDumpInfo/svcDumpInfoNew
...
These are fairly trivial to implement, we can just do nothing. This also
provides a spot for us to potentially dump out any relevant info in the
future (e.g. for debugging purposes with homebrew, etc).
While we're at it, we can also correct the names of both of these
supervisor calls.
2019-12-07 22:01:17 -05:00
ReinUsesLisp
f632d00eb1
vk_swapchain: Add support for swapping sRGB
...
We don't know until the game is running if it's using an sRGB color
space or not. Add support for hot-swapping swapchain surface formats.
2019-12-06 22:42:08 -03:00
ReinUsesLisp
36651f215a
maxwell_3d: Add tessellation tess level registers
2019-12-06 22:08:22 -03:00
ReinUsesLisp
707bf41c6f
maxwell_3d: Add tessellation mode register
2019-12-06 22:07:31 -03:00
ReinUsesLisp
d2b50c5ebd
maxwell_3d: Add patch vertices register
2019-12-06 22:06:53 -03:00
bunnei
4bbb22a477
Merge pull request #3195 from FernandoS27/clear-exclusive
...
CpuCore: Clear exclusive state after doing a run in dynarmic.
2019-12-06 20:00:23 -05:00
ReinUsesLisp
74f515e8b6
shader_bytecode: Remove corrupted character
2019-12-06 20:31:56 -03:00
bunnei
e36814d6d5
Merge pull request #3109 from FernandoS27/new-instr
...
Implement FLO & TXD Instructions on GPU Shaders
2019-12-06 18:18:16 -05:00
Fernando Sahmkow
40cd4df584
CpuCore: Clear exclusive state after doing a run in dynarmic.
...
This commit corrects an error in which a Core could remain with an
exclusive state after running, leaving space for possible race
conditions between changing cores.
2019-12-05 18:08:59 -04:00
ReinUsesLisp
be9f80ef56
telemetry_session: Report renderer backend
...
We only have OpenGL as an option for now. Hardcode the entry.
2019-12-02 16:50:39 -03:00
ReinUsesLisp
526e533e90
telemetry_session: Use temporary to avoid writing the same enum
2019-12-02 16:49:46 -03:00
bunnei
3c1b6b5723
Merge pull request #2987 from FernandoS27/texture-invalid
...
Texture_Cache: Redo invalid Surfaces handling.
2019-12-02 12:07:05 -05:00
bunnei
5c7253f8d3
Merge pull request #3177 from bunnei/new-ipc-req
...
kernel: Implement a more accurate IPC dispatch.
2019-11-30 18:56:35 -05:00
bunnei
930b7c18a6
Merge pull request #3184 from ReinUsesLisp/framebuffer-cache
...
gl_framebuffer_cache: Optimize framebuffer cache management
2019-11-30 18:46:40 -05:00
ReinUsesLisp
ff64c3951a
texture_cache/surface_base: Fix out of bounds texture views
...
Some texture views were being created out of bounds (with more layers or
mipmaps than what the original texture has). This is because of a
miscalculation in mipmap bounding. end_layer and end_mipmap are out of
bounds (e.g. layer 6 in a cubemap), there's no need to add one more
there.
Fixes OpenGL errors and Vulkan crashes on Splatoon 2.
2019-11-29 16:51:14 -03:00
ReinUsesLisp
fb6cf12a17
gl_framebuffer_cache: Optimize framebuffer key
...
Pack color attachment enumerations into a single u32. To determine the
number of buffers, the highest color attachment with a shared pointer
that doesn't point to null is used.
2019-11-28 23:02:20 -03:00
ReinUsesLisp
c34da106ed
gl_rasterizer: Re-enable framebuffer cache for clear buffers
2019-11-28 23:02:20 -03:00
ReinUsesLisp
e6a0a30334
renderer_opengl: Make ScreenRectVertex's constructor constexpr
2019-11-28 20:36:02 -03:00
ReinUsesLisp
dee7844443
renderer_opengl: Remove C casts
2019-11-28 20:28:27 -03:00
ReinUsesLisp
3a44faff11
renderer_opengl: Use explicit binding for presentation shaders
2019-11-28 20:25:56 -03:00
ReinUsesLisp
75cc501d52
renderer_opengl: Drop macros for message decorations
2019-11-28 20:15:25 -03:00
ReinUsesLisp
056f049b26
renderer_opengl: Move static definitions to anonymous namespace
2019-11-28 20:14:40 -03:00
ReinUsesLisp
4589582eaf
renderer_opengl: Move commentaries to header file
2019-11-28 20:11:03 -03:00
bunnei
c3d3b173d3
kernel: Implement a more accurate IPC dispatch.
2019-11-28 12:01:53 -05:00
bunnei
e3ee017e91
Merge pull request #3169 from lioncash/memory
...
core/memory: Deglobalize memory management code
2019-11-28 11:43:17 -05:00
bunnei
fe65045dcb
Merge pull request #3171 from lioncash/internal-link
...
filesys/romfs: Make ProcessFile and ProcessDirectory internally linked
2019-11-28 01:18:10 -05:00
Morph
e0242a4654
patch_manager: Adds check for disabled cheats to prevent them from being enabled ( #3178 )
...
* Adds check for disabled cheats to prevent them from being added to the CheatList
* Address feedback
2019-11-28 01:17:17 -05:00
bunnei
c47fc3301d
Merge pull request #3170 from lioncash/enum
...
file_sys/directory: Make EntryType an enum class
2019-11-27 23:23:01 -05:00
Rodrigo Locatti
913d0bb269
Merge pull request #3174 from lioncash/optional
...
video_core/gpu_thread: Tidy up SwapBuffers()
2019-11-27 20:35:31 -03:00
Lioncash
aed6d8bef5
video_core/gpu_thread: Tidy up SwapBuffers()
...
We can just use std::nullopt and std::make_optional to make this a
little bit less noisy.
2019-11-27 17:46:11 -05:00
Lioncash
9403979c22
video_core/const_buffer_locker: Make use of std::tie in HasEqualKeys()
...
Tidies it up a little bit visually.
2019-11-27 05:53:43 -05:00
Lioncash
930e311526
video_core/const_buffer_locker: Remove unused includes
2019-11-27 05:51:13 -05:00
Lioncash
9341ca7979
video_core/const_buffer_locker: Remove #pragma once from cpp file
...
Silences a compiler warning.
2019-11-27 05:50:51 -05:00
Lioncash
d66ab2b8aa
filesys/romfs: Remove unused includes
...
These inclusions aren't used at all within the public interface, so they
can be removed.
2019-11-27 05:29:52 -05:00
Lioncash
ba3c55ab7b
filesys/romfs: Make ProcessFile and ProcessDirectory internally linked
...
These functions aren't used outside of this file, so we can place them
within an anonymous namespace.
2019-11-27 05:26:35 -05:00
Lioncash
a3149536e2
file_sys/directory: Make EntryType an enum class
...
This can trivially be an enum class rather than a regular enum, making
it more strongly typed.
2019-11-27 05:11:02 -05:00
Lioncash
e7e939104b
core/memory; Migrate over SetCurrentPageTable() to the Memory class
...
Now that literally every other API function is converted over to the
Memory class, we can just move the file-local page table into the Memory
implementation class, finally getting rid of global state within the
memory code.
2019-11-26 21:55:39 -05:00
Lioncash
50a518be69
core/memory: Migrate over GetPointerFromVMA() to the Memory class
...
Now that everything else is migrated over, this is essentially just code
relocation and conversion of a global accessor to the class member
variable.
All that remains is to migrate over the page table.
2019-11-26 21:55:39 -05:00
Lioncash
e4c381b885
core/memory: Migrate over Write{8, 16, 32, 64, Block} to the Memory class
...
The Write functions are used slightly less than the Read functions,
which make these a bit nicer to move over.
The only adjustments we really need to make here are to Dynarmic's
exclusive monitor instance. We need to keep a reference to the currently
active memory instance to perform exclusive read/write operations.
2019-11-26 21:55:39 -05:00
Lioncash
b05bfc6036
core/memory: Migrate over Read{8, 16, 32, 64, Block} to the Memory class
...
With all of the trivial parts of the memory interface moved over, we can
get right into moving over the bits that are used.
Note that this does require the use of GetInstance from the global
system instance to be used within hle_ipc.cpp and the gdbstub. This is
fine for the time being, as they both already rely on the global system
instance in other functions. These will be removed in a change directed
at both of these respectively.
For now, it's sufficient, as it still accomplishes the goal of
de-globalizing the memory code.
2019-11-26 21:55:39 -05:00
Lioncash
89ef3ef575
core/memory: Migrate over ZeroBlock() and CopyBlock() to the Memory class
...
These currently aren't used anywhere in the codebase, so these are very
trivial to move over to the Memory class.
2019-11-26 21:55:38 -05:00
Lioncash
849581075a
core/memory: Migrate over RasterizerMarkRegionCached() to the Memory class
...
This is only used within the accelerated rasterizer in two places, so
this is also a very trivial migration.
2019-11-26 21:55:38 -05:00
Lioncash
b2165c6b35
core/memory: Migrate over ReadCString() to the Memory class
...
This only had one usage spot, so this is fairly straightforward to
convert over.
2019-11-26 21:55:38 -05:00
Lioncash
3f08e8d8d4
core/memory: Migrate over GetPointer()
...
With all of the interfaces ready for migration, it's trivial to migrate
over GetPointer().
2019-11-26 21:55:38 -05:00
Lioncash
536fc7f0ea
core: Prepare various classes for memory read/write migration
...
Amends a few interfaces to be able to handle the migration over to the
new Memory class by passing the class by reference as a function
parameter where necessary.
Notably, within the filesystem services, this eliminates two ReadBlock()
calls by using the helper functions of HLERequestContext to do that for
us.
2019-11-26 21:55:37 -05:00
Lioncash
fc7d0a17b6
core/memory: Move memory read/write implementation functions into an anonymous namespace
...
These will eventually be migrated into the main Memory class, but for
now, we put them in an anonymous namespace, so that the other functions
that use them, can be migrated over separately.
2019-11-26 21:53:35 -05:00
Lioncash
e58748fd80
core/memory: Migrate over address checking functions to the new Memory class
...
A fairly straightforward migration. These member functions can just be
mostly moved verbatim with minor changes. We already have the necessary
plumbing in places that they're used.
IsKernelVirtualAddress() can remain a non-member function, since it
doesn't rely on class state in any form.
2019-11-26 21:53:34 -05:00
Lioncash
323680e5ad
core/memory: Migrate over memory mapping functions to the new Memory class
...
Migrates all of the direct mapping facilities over to the new memory
class. In the process, this also obsoletes the need for memory_setup.h,
so we can remove it entirely from the project.
2019-11-26 21:53:34 -05:00
Lioncash
4c2ed2706e
core/memory: Introduce skeleton of Memory class
...
Currently, the main memory management code is one of the remaining
places where we have global state. The next series of changes will aim
to rectify this.
This change simply introduces the main skeleton of the class that will
contain all the necessary state.
2019-11-26 21:53:34 -05:00
bunnei
6df6caaf5f
Merge pull request #3143 from ReinUsesLisp/indexing-bug
...
gl_device: Deduce indexing bug from device instead of heuristic
2019-11-26 21:53:12 -05:00
bunnei
ec0ce96c56
core_timing: Use better reference tracking for EventType. ( #3159 )
...
* core_timing: Use better reference tracking for EventType.
- Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects.
- Removes need for unique names - we won't be using this for save states anyways.
2019-11-26 21:48:56 -05:00
bunnei
31daaa7911
Merge pull request #3164 from ReinUsesLisp/half-cast-float
...
gl_shader_decompiler: Fix casts from fp32 to fp16
2019-11-26 09:11:23 -05:00
ReinUsesLisp
ef4446cb11
gl_shader_decompiler: Fix casts from fp32 to f16
...
Casts from f32 to f16 zeroes the higher half of the target register.
2019-11-25 22:22:33 -03:00
bunnei
f6b9b7910e
kernel: Fix reference management for client/server session.
...
- Fixes shutdown crash and crash in Pokemon SwSh.
2019-11-25 18:17:49 -05:00
ReinUsesLisp
410d44ce05
gl_device: Deduce indexing bug from device instead of heuristic
...
The heuristic to detect AMD's driver was not working properly since it
also included Intel. Instead of using heuristics to detect it, compare
the GL_VENDOR string.
2019-11-25 16:15:22 -03:00
bunnei
2899c93818
Merge pull request #3158 from ReinUsesLisp/srgb-blit
...
gl_texture_cache: Apply sRGB on blits
2019-11-24 20:47:13 -05:00
bunnei
50c7539108
Merge pull request #3094 from lioncash/tables
...
service: Update function tables
2019-11-24 20:30:58 -05:00
bunnei
33a6b45a6c
Merge pull request #3155 from bunnei/fix-asynch-gpu-wait
...
gpu_thread: Don't spin wait if there are no GPU commands.
2019-11-24 20:19:25 -05:00
bunnei
9046d4a548
kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. ( #3154 )
...
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects.
- See https://github.com/citra-emu/citra/pull/4710 for details.
2019-11-24 20:15:51 -05:00
bunnei
b03242067d
Merge pull request #3098 from ReinUsesLisp/shader-invalidations
...
gl_shader_cache: Miscellaneous changes to shaders
2019-11-24 19:36:30 -05:00
ReinUsesLisp
74fff717aa
gl_texture_cache: Apply sRGB on blits
...
glBlitFramebuffer keeps in mind GL_FRAMEBUFFER_SRGB's state. Enable this
depending on the target surface pixel format.
2019-11-24 18:13:33 -03:00
bunnei
b7031b2b9d
Merge pull request #3105 from ReinUsesLisp/fix-stencil-reg
...
maxwell_3d: Fix stencil_back_func_mask offset
2019-11-24 13:53:23 -05:00
bunnei
7298dcc016
Merge pull request #3156 from bunnei/sys-ticks
...
svc: GetSystemTick should return cntpct_el0, not core ticks.
2019-11-24 13:52:28 -05:00
bunnei
ec8bfe94a7
Merge pull request #3153 from FearlessTobi/port-4964
...
Port citra-emu/citra#4964 : "Unfold UNREACHABLE implementation for dumb compilers"
2019-11-24 02:56:12 -05:00
bunnei
e81e0036b4
Merge pull request #3145 from ReinUsesLisp/buffer-cache-init
...
buffer_cache: Remove brace initialized for objects with default constructor
2019-11-24 02:55:02 -05:00
bunnei
63248f4edd
Update svc.cpp
2019-11-23 16:01:06 -05:00
bunnei
6eaf7ab55f
svc: GetSystemTick should return cntpct_el0, not core ticks.
2019-11-23 15:29:15 -05:00
bunnei
9ec84fc592
gpu_thread: Don't spin wait if there are no GPU commands.
2019-11-23 15:17:28 -05:00
bunnei
6a3fc5d2ff
Merge pull request #3114 from FernandoS27/cond-var
...
Kernel: Correct behavior of Condition Variables to be more similar to real hardware.
2019-11-23 13:24:39 -05:00
bunnei
4ed183ee42
Merge pull request #3141 from ReinUsesLisp/gl-position
...
gl_shader_gen: Apply default value to gl_Position
2019-11-23 13:23:46 -05:00
bunnei
6e4d46908a
Merge pull request #3130 from FernandoS27/cancel-sync
...
Kernel: Correct Cancel Synchronization.
2019-11-23 13:23:23 -05:00
Weiyi Wang
49e0a30dbd
fix clang-format and lambda capture
2019-11-23 01:30:06 +01:00
Weiyi Wang
9a60d8a430
unfold UNREACHABLE implementation for dumb compilers
...
We relies on UNREACHABLE's noreturn attribute to eliminate parent's "no return value" warning. However, this was wrapped in a `if(!false)` block, which compilers may not unfold to recognize the noreturn nature.
2019-11-23 01:30:06 +01:00
ReinUsesLisp
dc2e83fa31
gl_device: Reserve base bindings on limited devices
...
SSBOs and other resources are limited per pipeline on Intel and AMD.
Heuristically reserve resources per stage having in mind the reported
OpenGL limits.
2019-11-22 21:28:50 -03:00
ReinUsesLisp
e3d7334be9
gl_state: Skip null texture binds
...
glBindTextureUnit doesn't support null textures. Skip binding these.
2019-11-22 21:28:50 -03:00
ReinUsesLisp
919ac2c4d3
gl_rasterizer: Disable compute shaders on Intel
...
Intel's proprietary driver enters in a corrupt state when compute
shaders are executed. For now, disable these.
2019-11-22 21:28:50 -03:00
ReinUsesLisp
894ad74b87
gl_shader_cache: Hack shared memory size
...
The current shared memory size seems to be smaller than what the game
actually uses. This makes Nvidia's driver consistently blow up; in the
case of FE3H it made it explode on Qt's SwapBuffers while SDL2 worked
just fine. For now keep this hack since it's still progress over the
previous hardcoded shared memory size.
2019-11-22 21:28:49 -03:00
ReinUsesLisp
e35b9597ef
gl_shader_decompiler: Normalize image bindings
2019-11-22 21:28:49 -03:00
ReinUsesLisp
36d9b409fc
gl_shader_decompiler: Normalize cbuf bindings
...
Stage and compute shaders were using a different binding counter.
Normalize these.
2019-11-22 21:28:49 -03:00
ReinUsesLisp
f936b86c7c
gl_rasterizer: Add missing cbuf counter reset on compute
2019-11-22 21:28:49 -03:00
ReinUsesLisp
180417c514
gl_shader_cache: Remove dynamic BaseBinding specialization
2019-11-22 21:28:49 -03:00
ReinUsesLisp
c8a48aacc0
video_core: Unify ProgramType and ShaderStage into ShaderType
2019-11-22 21:28:48 -03:00
ReinUsesLisp
0f23359a44
gl_rasterizer: Bind graphics images to draw commands
...
Images were not being bound to draw invocations because these would
require a cache invalidation.
2019-11-22 21:28:48 -03:00
ReinUsesLisp
287ae2b9e8
gl_shader_cache: Specialize local memory size for compute shaders
...
Local memory size in compute shaders was stubbed with an arbitary size.
This commit specializes local memory size from guest GPU parameters.
2019-11-22 21:28:48 -03:00
ReinUsesLisp
dbeb523879
gl_shader_cache: Specialize shared memory size
...
Shared memory was being declared with an undefined size. Specialize from
guest GPU parameters the compute shader's shared memory size.
2019-11-22 21:28:47 -03:00
ReinUsesLisp
4f5d8e4342
gl_shader_cache: Specialize shader workgroup
...
Drop the usage of ARB_compute_variable_group_size and specialize compute
shaders instead. This permits compute to run on AMD and Intel
proprietary drivers.
2019-11-22 21:28:47 -03:00
ReinUsesLisp
dc9961f341
shader/texture: Handle TLDS texture type mismatches
...
Some games like "Fire Emblem: Three Houses" bind 2D textures to offsets
used by instructions of 1D textures. To handle the discrepancy this
commit uses the the texture type from the binding and modifies the
emitted code IR to build a valid backend expression.
E.g.: Bound texture is 2D and instruction is 1D, the emitted IR samples
a 2D texture in the coordinate ivec2(X, 0).
2019-11-22 21:28:47 -03:00
ReinUsesLisp
32c1bc6a67
shader/texture: Deduce texture buffers from locker
...
Instead of specializing shaders to separate texture buffers from 1D
textures, use the locker to deduce them while they are being decoded.
2019-11-22 21:28:47 -03:00
bunnei
bedc903c65
Merge pull request #3140 from FearlessTobi/port-4953
...
Port citra-emu/citra#4953 : "citra_qt/main.ui: remove unused actions "Load Symbol Map..." and "Select Game Directory...""
2019-11-21 15:32:24 -05:00
bunnei
eedb048585
Merge pull request #3112 from lioncash/skip
...
service/am: Remove unnecessary Skip calls
2019-11-21 15:30:01 -05:00
bunnei
d7953b8ee5
Merge pull request #3111 from lioncash/query
...
am: Stub QueryApplicationPlayStatistics
2019-11-21 15:29:34 -05:00
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
ReinUsesLisp
73aaf365e7
buffer_cache: Remove brace initialized for objects with default constructor
2019-11-20 16:00:40 -03:00
Fernando Sahmkow
cc81c0ce64
Texture_Cache: Redo invalid Surfaces handling.
...
This commit aims to redo the full setup of invalid textures and
guarantee correct behavior across backends in the case of finding one by
using black dummy textures that match the target of the expected
texture.
2019-11-20 14:59:35 -04:00
ReinUsesLisp
24f4198cee
shader/other: Reduce DEPBAR log severity
...
While DEPBAR is stubbed it doesn't change anything from our end. Shading
languages handle what this instruction does implicitly. We are not
getting anything out fo this log except noise.
2019-11-19 21:26:40 -03:00
ReinUsesLisp
bc10714dcf
gl_shader_gen: Apply default value to gl_Position
...
Nvidia has sane default output values for varyings, but the other
vendors don't apply these. To properly emulate this we would have to
analyze the shader header. For the time being, apply the same default
Nvidia applies so we get the same behaviour on non-Nvidia drivers.
2019-11-19 20:32:01 -03:00
bunnei
b0819e2ffb
Merge pull request #3086 from ReinUsesLisp/format-lookups
...
texture_cache: Use a flat table instead of switch for texture format lookups
2019-11-19 18:29:17 -05:00
Tobias
f9d7a6bec6
citra_qt/main.ui: remove unused actions "Load Symbol Map..." and...
...
..."Select Game Directory..."
Co-authored-by: vvanelslande <vvanelslandedev@gmail.com>
2019-11-19 16:39:58 +01:00
Fernando Sahmkow
c8473f399e
Shader_IR: Address Feedback
2019-11-18 07:34:34 -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
ReinUsesLisp
2ac834c722
common/logging: Silence no return value warnings
2019-11-15 18:43:35 -03:00
bunnei
a8295d2c53
Merge pull request #3047 from ReinUsesLisp/clip-control
...
gl_rasterizer: Emulate viewport flipping with ARB_clip_control
2019-11-15 12:09:19 -05:00
bunnei
3e0e4f146b
Merge pull request #3091 from lioncash/core-conversion
...
core: Make most implicit type conversion warnings errors on MSVC
2019-11-15 12:08:50 -05:00
ReinUsesLisp
4681381a34
format_lookup_table: Address feedback
...
format_lookup_table: Drop bitfields
format_lookup_table: Use std::array for definition table
format_lookup_table: Include <limits> instead of <numeric>
2019-11-14 20:57:30 -03:00
ReinUsesLisp
80eacdf89b
texture_cache: Use a table instead of switch for texture formats
...
Use a large flat array to look up texture formats. This allows us to
properly implement formats with different component types. It should
also be faster.
2019-11-14 20:57:10 -03:00
Rodrigo Locatti
bb31df62bb
Merge pull request #3113 from lioncash/semi
...
common_funcs: Remove semicolons from INSERT_PADDING_* macros
2019-11-14 20:29:51 -03:00
Lioncash
f2e34efcbb
common_funcs: Remove semicolons from INSERT_PADDING_* macros
...
Makes code that uses the macros consistent by requiring the lines to be
terminated with a semicolon.
2019-11-14 17:05:27 -05:00
Lioncash
2c4c2b5eee
service/am: Remove unnecessary Skip calls
...
We can simplify these by wrapping the necessary members in structs and
then simply reading out the whole struct.
2019-11-14 16:31:52 -05:00
ReinUsesLisp
48a1687f51
texture_cache: Drop abstracted ComponentType
...
Abstracted ComponentType was not being used in a meaningful way.
This commit drops its usage.
There is one place where it was being used to test compatibility between
two cached surfaces, but this one is implied in the pixel format.
Removing the component type test doesn't change the behaviour.
2019-11-14 18:21:42 -03:00
Lioncash
1cd8637bf0
am: Stub QueryApplicationPlayStatistics
...
Maintains implementation parity between QueryApplicationPlayStatistics
and QueryApplicationPlayStatisticsByUid.
These function the same behaviorally underneath the hood, with the only
difference being that one allows specifying a UID.
2019-11-14 16:02:39 -05:00
greggameplayer
c6bc13d0aa
correct the implementation of RGBA16UI
2019-11-14 21:37:39 +01:00
bunnei
885d88825e
Merge pull request #3089 from SciresM/play_statistics
...
Implement stub for IApplicationFunctions::QueryApplicationPlayStatisticsByUid
2019-11-14 13:54:29 -05:00
bunnei
360b0d1b30
Merge pull request #3093 from lioncash/mbedtls
...
core: Migrate off deprecated mbedtls functions
2019-11-14 13:47:23 -05:00
bunnei
02880a8195
Merge pull request #3092 from lioncash/util
...
key_manager: Make use of IOFile in WriteKeyToFile()
2019-11-14 13:46:55 -05:00
Fernando Sahmkow
cd0f5dfc17
Shader_IR: Implement TXD instruction.
2019-11-14 11:15:27 -04:00
Fernando Sahmkow
f3d1b370aa
Shader_IR: Implement FLO instruction.
2019-11-14 11:15:27 -04:00
Fernando Sahmkow
95137a04e1
Shader_Bytecode: Add encodings for FLO, SHF and TXD
2019-11-14 11:15:26 -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
Rodrigo Locatti
7f424d0f60
Merge pull request #3107 from lioncash/hashable
...
common/hash: Remove unused HashableStruct
2019-11-13 17:30:30 -03:00
Rodrigo Locatti
ebb30cbefb
Merge pull request #3104 from lioncash/xts
...
xts_archive: Remove redundant std::string constructor
2019-11-13 17:00:02 -03:00
Lioncash
c5c89a4d5c
common/hash: Remove unused HashableStruct
...
This is unused, so it can be removed. There's better ways of ensuring
zeroed out padding bits, like using zero-initialization, anyhow.
2019-11-13 14:58:43 -05:00
ReinUsesLisp
7990220df7
maxwell_3d: Fix stencil_back_func_mask offset
...
stencil_back_func_mask and stencil_back_mask were misplaced. This commit
addresses that issue.
2019-11-13 16:35:17 -03:00
Rodrigo Locatti
cc9e682021
Merge pull request #3103 from lioncash/cfunc
...
common_funcs: silence sign-conversion warnings in MakeMagic()
2019-11-13 16:26:34 -03:00
Lioncash
03b73aa575
xts_archive: Remove redundant std::string constructor
...
We can just call the .data() member of path instead of constructing a
completely new string.
2019-11-13 10:02:10 -05:00
Lioncash
61f6eaad45
common_funcs: silence sign-conversion warnings in MakeMagic()
...
We can trivially resolve these by casting the characters to unsigned
values and then shifting the bits.
2019-11-13 06:53:19 -05:00
Rodrigo Locatti
cf770a68a5
Merge pull request #3084 from ReinUsesLisp/cast-warnings
...
video_core: Treat implicit conversions as errors
2019-11-13 02:16:22 -03:00
Lioncash
e21b6ff79d
service: Update function tables
...
Keeps the function tables up to date.
Updated based off information from Switchbrew.
2019-11-12 10:32:56 -05:00
Lioncash
64cbebc58f
key_manager: Make use of IOFile in WriteKeyToFile()
...
This properly handles unicode-based paths on Windows, while opening a
raw stream doesn't out-of-the-box.
Prevents file creation from potentially failing on Windows PCs that make
use of unicode characters in their save paths (e.g. writing to a user's
AppData folder, where the user has a name with non-ASCII characters).
2019-11-12 08:52:18 -05:00
Lioncash
e0c46e6879
core: Migrate off deprecated mbedtls functions
...
These functions are marked for deprecation and it's recommended that the
*_ret variants be used instead.
2019-11-12 08:45:56 -05:00
Lioncash
47a6bb2d5b
externals: Update httplib
...
Since the introduction of this library, numerous improvements have been
made. Notably, many of the warnings we would get by simply including the
library header have now been fixed. This makes it much easier to make
conversion warning an error.
2019-11-12 08:31:27 -05:00
Lioncash
f11b87ebf1
service: Resolve sign conversion errors
...
These are fairly trivial to resolve and most of the changes entail
using RESULT_UNKNOWN over ResultCode(-1).
2019-11-12 07:55:39 -05:00
Lioncash
75dec14f21
perf_stats: Resolve implicit int to double conversion error
...
We simply need to turn the literal argument to std::accumulate into a
double, rather than an int.
2019-11-12 07:55:39 -05:00
Lioncash
23878bf360
loader; Resolve sign conversion/truncation errors
2019-11-12 07:55:39 -05:00
Lioncash
86a1eb7789
gdbstub: Resolve sign conversion errors
2019-11-12 07:55:39 -05:00
Lioncash
12dc918937
kernel: Resolve sign conversion warnings
...
Uncovered a bug within Thread's SetCoreAndAffinityMask() where an
unsigned variable (ideal_core) was being compared against "< 0", which
would always be a false condition.
We can also get rid of an unused function (GetNextProcessorId) which contained a sign
mismatch warning.
2019-11-12 07:55:39 -05:00
Lioncash
86c397dd6e
file_sys: Resolve sign conversion warnings
...
Resolves a few trivial sign conversion/mismatch errors.
2019-11-12 07:55:39 -05:00
Lioncash
ef060ed40c
result: Add default error code for the ResultCode(-1) case
...
Will be used to reduce the overall duplication of the same magic value
all over the codebase in following changes.
2019-11-12 07:55:38 -05:00
Lioncash
581d2e36e5
crypto: Resolve sign-conversion warnings
2019-11-12 07:55:22 -05:00
Lioncash
27ab99490e
result: Resolve sign-coversion warnings
...
The constructor was implicitly using signed->unsigned conversions to
produce 0xFFFFFFFF. We can just specify this explicitly with UINT32_MAX.
2019-11-12 07:06:48 -05:00
Lioncash
19a0abc19b
arm_unicorn: Resolve sign conversion warnings
...
While we're at it, this also resolves a type truncation warning as well,
given the code was truncating from a 64-bit value to a 32-bit one.
2019-11-12 07:06:48 -05:00
Lioncash
96d677bef0
CMakeLists: Make most implicit type conversion warnings errors on MSVC
...
Quite frequently there have been cases where code has been merged into
the core that produces warning. In order to prevent this from occurring,
we can make the compiler flag these cases and allow our CI to flag down
any code that would generate these warnings.
This is beneficial given silent conversions from signed/unsigned can
result in logic bugs. This forces one writing changes to be explicit
about when signedness conversions are desirable, rather than leaving it
up to readers' interpretation.
Currently the codebase isn't in a state where it will build successfully
with this change applied, but this will be addressed in subsequent
follow-up changes. This set of changes will focus on making it build
properly with these changes for MSVC as a starting point for basic
coverage.
2019-11-12 07:06:25 -05:00
Rodrigo Locatti
fb9418798d
video_core: Enable sign conversion warnings
...
Enable sign conversion warnings but don't treat them as errors.
2019-11-11 18:00:37 -03:00
Michael Scire
b0b0786493
Implement stub for QueryApplicationPlayStatisticsByUid
2019-11-11 07:32:47 -08:00
bunnei
8714d40a77
Merge pull request #3085 from bunnei/web-token-b64
...
yuzu: configure_web: Use Base64 encoded token
2019-11-09 14:50:31 -05:00
bunnei
8dc9f35baf
web-service: Port citra's updated web_backend code.
2019-11-09 14:00:44 -05:00
bunnei
883eb1a1a1
yuzu: configure_web: Use Base64 encoded token for simplifying user experience.
2019-11-09 14:00:44 -05:00
bunnei
0fc596de6e
Merge pull request #3082 from ReinUsesLisp/fix-lockers
...
gl_shader_cache: Fix locker constructors
2019-11-09 13:58:36 -05:00
ReinUsesLisp
18c1cb68fd
video_core: Treat implicit conversions as errors
2019-11-08 22:49:39 +00:00
ReinUsesLisp
096f339a2a
video_core: Silence implicit conversion warnings
2019-11-08 22:48:50 +00:00
bunnei
a056d8de16
Merge pull request #3080 from FernandoS27/glsl-fix
...
GLSLDecompiler: Correct Texture Gather Offset.
2019-11-08 15:56:29 -05:00
ReinUsesLisp
bfa973a62b
gl_shader_cache: Fix locker constructors
...
Properly pass engine when a shader is being constructed from memory.
2019-11-07 20:43:31 -03:00
ReinUsesLisp
3ab0514698
gl_shader_cache: Enable extensions only when available
...
Silence GLSL compilation warnings.
2019-11-07 20:08:42 -03:00
ReinUsesLisp
cd66395944
gl_shader_decompiler: Add safe fallbacks when ARB_shader_ballot is not available
2019-11-07 20:08:42 -03:00
ReinUsesLisp
56e237d1f9
shader_ir/warp: Implement FSWZADD
2019-11-07 20:08:41 -03:00
ReinUsesLisp
08b2b1080a
gl_shader_decompiler: Reimplement shuffles with platform agnostic intrinsics
2019-11-07 20:08:41 -03: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
bunnei
b6ae48966d
Merge pull request #3032 from ReinUsesLisp/simplify-control-flow-brx
...
shader/control_flow: Abstract repeated code chunks in BRX tracking
2019-11-07 01:30:01 -05:00
Morph
0e8a3bf3e5
buffer_cache: Add missing includes ( #3079 )
...
`boost::make_iterator_range` is available when `boost/range/iterator_range.hpp` is included.
Also include `boost/icl/interval_map.hpp` and `boost/icl/interval_set.hpp`.
2019-11-07 06:25:53 +00:00
bunnei
344d15f61e
Merge pull request #3070 from ReinUsesLisp/shader-warnings
...
shader_ir: Reduce severity of warnings
2019-11-07 00:47:24 -05:00
ReinUsesLisp
e9d2fad984
gl_rasterizer: Remove front facing hack
2019-11-07 01:52:18 -03:00
ReinUsesLisp
f1facaeaef
gl_shader_decompiler: Fix typo "y_negate"->"y_direction"
2019-11-07 01:52:18 -03:00
ReinUsesLisp
e2ea0c3e11
gl_shader_manager: Remove unused variable in SetFromRegs
2019-11-07 01:52:18 -03:00
ReinUsesLisp
028b1a34a9
yuzu_cmd: Use string_view instead of string for extensions
...
Avoids potential allocations due to the usage of std::string on strings
that we know at compile time. Most of these might fit in SSO, but it
adds complexity that can be easily avoided with string views.
2019-11-07 01:52:18 -03:00
ReinUsesLisp
f019817f8f
gl_rasterizer: Emulate viewport flipping with ARB_clip_control
...
Emulates negative y viewports with ARB_clip_control. This allows us to
more easily emulated pipelines with tessellation and/or geometry shader
stages. It also avoids corrupting games with transform feedbacks and
negative viewports (gl_Position.y was being modified).
2019-11-07 01:52:18 -03:00
Rodrigo Locatti
ff5a0f370c
shader/control_flow: Specify constness on caller lambdas
...
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
Update src/video_core/shader/control_flow.cpp
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2019-11-07 01:44:09 -03:00
ReinUsesLisp
7b069252f8
shader/control_flow: Use callable template instead of std::function
2019-11-07 01:44:08 -03:00
ReinUsesLisp
46c3047283
shader/control_flow: Abstract repeated code chunks in BRX tracking
...
Remove copied and pasted for cycles into a common templated function.
2019-11-07 01:44:08 -03:00
ReinUsesLisp
ae7dfa93be
shader/control_flow: Silence Intellisense cast warnings
2019-11-07 01:44:08 -03:00
ReinUsesLisp
deb1b54eed
shader/control_flow: Remove brace initializer in std containers
...
These containers have a default constructor.
2019-11-07 01:44:08 -03:00
ReinUsesLisp
39c66abd91
shader/decode: Reduce severity of arithmetic rounding warnings
2019-11-07 01:43:38 -03:00
ReinUsesLisp
c4374d0d41
shader/arithmetic: Reduce RRO stub severity
2019-11-07 01:43:38 -03:00
ReinUsesLisp
35d40b74b3
shader/texture: Remove NODEP warnings
...
These warnings don't offer meaningful information while decoding
shaders. Remove them.
2019-11-07 01:43:38 -03:00
Fernando Sahmkow
3c95e49c42
nifm: Only return that there's an internet connection when there's a BCATServer
...
This helps games that need internet for other purposes boot as the rest
of our internet infrastructure is incomplete.
2019-11-06 23:10:32 -05:00
bunnei
468576284d
Merge pull request #3057 from ReinUsesLisp/buffer-sub-data
...
gl_rasterizer: Upload constant buffers with glNamedBufferSubData
2019-11-06 10:08:55 -05:00
bunnei
4d66ca97e5
Merge pull request #3076 from DarkLordZach/telem-names
...
ci: Populate build repository from Azure environment
2019-11-06 10:08:27 -05:00
bunnei
c1a3d19897
Merge pull request #3062 from bunnei/event-improve
...
kernel: Improve events
2019-11-06 10:05:50 -05:00
Rodrigo Locatti
654b77d2ec
Merge pull request #3039 from ReinUsesLisp/cleanup-samplers
...
shader/node: Unpack bindless texture encoding
2019-11-06 04:54:11 +00:00
Zach Hilman
0c8b6b0351
ci: Populate build repository from Azure environment
2019-11-05 21:37:27 -05:00
David
0e34f648f4
Merge pull request #2859 from Morph1984/hid
...
hid: Stub SetNpadJoyAssignmentModeSingle and GetNpadHandheldActivationMode
2019-11-06 12:48:07 +11:00
bunnei
21e07df7b7
Merge pull request #2914 from FernandoS27/fermi-fix
...
Fermi2D: limit blit area to only available area
2019-11-05 20:45:24 -05:00
bunnei
1bdae0fe29
common_func: Use std::array for INSERT_PADDING_* macros.
...
- Zero initialization here is useful for determinism.
2019-11-03 22:22:41 -05:00
bunnei
ae6eb61892
Merge pull request #3059 from FearlessTobi/stub-am-commands
...
core/am: Stub InitializeApplicationCopyrightFrameBuffer, SetApplicationCopyrightImage and SetApplicationCopyrightVisibility
2019-11-03 05:26:33 -05:00
bunnei
ece5287843
kernel: readable_event: Signal only once.
2019-11-03 04:25:41 -05:00
bunnei
b0ab803ce8
kernel: events: Remove ResetType::Automatic.
...
- This does not actually seem to exist in the real kernel - games reset these automatically.
# Conflicts:
# src/core/hle/service/am/applets/applets.cpp
# src/core/hle/service/filesystem/fsp_srv.cpp
2019-11-03 04:22:45 -05:00
bunnei
28bb248db6
kernel: readable_event: Initialize members.
2019-11-03 04:18:39 -05:00
Tobias
a81987a7cb
common/bit_field: Remove FORCE_INLINE calls
...
See bunneis comment here https://github.com/citra-emu/citra/pull/4629#discussion_r258533167 .
They were supposed to be removed by him, but he missed them.
2019-11-03 08:25:37 +01:00
FearlessTobi
832c138eff
core/am: Stub InitializeApplicationCopyrightFrameBuffer, SetApplicationCopyrightImage and SetApplicationCopyrightVisibility
...
These commands require Screenshots to be implemented anyway, so they are safe to stub for now.
2019-11-03 07:37:38 +01:00
FearlessTobi
727ba2f2d0
citra_qt: add amiibo drag and drop support
...
Co-Authored-By: Valentin Vanelslande <vvanelslandedev@gmail.com>
2019-11-03 05:24:47 +01:00
ReinUsesLisp
442a1cc021
gl_rasterizer: Re-enable stream buffer memory due to global memory
...
Global memory is still using the stream buffer when it shouldn't. As a
temporary fix re-enable the stream buffer on compute.
2019-11-02 13:19:19 -03:00
ReinUsesLisp
76ca2a5f82
gl_rasterizer: Upload constant buffers with glNamedBufferSubData
...
Nvidia's OpenGL driver maps gl(Named)BufferSubData with some requirements
to a fast. This path has an extra memcpy but updates the buffer without
orphaning or waiting for previous calls. It can be seen as a better
model for "push constants" that can upload a whole UBO instead of 256
bytes.
This path has some requirements established here:
http://on-demand.gputechconf.com/gtc/2014/presentations/S4379-opengl-44-scene-rendering-techniques.pdf#page=24
Instead of using the stream buffer, this commits moves constant buffers
uploads to calls of glNamedBufferSubData and from my testing it brings a
performance improvement. This is disabled when the vendor is not Nvidia
since it brings performance regressions.
2019-11-02 05:05:34 -03: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
Rodrigo Locatti
658489ebf7
Merge pull request #3050 from FernandoS27/fix-tld4
...
shader_ir: Fix TLD4 and add bindless variant
2019-10-30 18:37:17 +00: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
Rodrigo Locatti
04b838c857
Merge pull request #3038 from lioncash/docs
...
kernel/scheduler: Minor changes
2019-10-30 03:47:28 +00:00
bunnei
2382bbe3ac
Merge pull request #3046 from ReinUsesLisp/clean-gl-state
...
gl_state: Miscellaneous clean up
2019-10-29 22:50:04 -04:00
bunnei
b5138f3c35
Merge pull request #3035 from ReinUsesLisp/rasterizer-accelerated
...
rasterizer_accelerated: Add intermediary for GPU rasterizers
2019-10-29 22:06:41 -04:00
bunnei
a81bd962ab
Merge pull request #3007 from DarkLordZach/fsc-regress
...
savedata_factory: Automatically create certain savedata
2019-10-29 22:05:09 -04:00
Rodrigo Locatti
3d0cde6a75
gl_state: Use std::array::fill instead of std::fill
...
Co-Authored-By: Mat M. <mathew1800@gmail.com>
2019-10-30 01:30:31 +00:00
ReinUsesLisp
ce20ed8e4e
gl_state: Move dirty checks to individual apply calls instead of Apply
...
This requires removing constness from some methods, but for consistency
it's removed in all methods.
2019-10-29 21:27:25 -03:00
ReinUsesLisp
3c6557c235
gl_state: Remove ApplyDefaultState
...
OpenGL has defaults values we can trust. Remove these.
2019-10-29 21:27:25 -03:00
ReinUsesLisp
d3651b0b82
gl_state: Change SetDefaultViewports to use default constructor
2019-10-29 21:27:24 -03:00
ReinUsesLisp
c7698d0bc8
gl_state: Minor style changes
2019-10-29 21:27:24 -03:00
ReinUsesLisp
a14d202ac2
gl_state: Remove unused Citra TextureUnits
2019-10-29 21:27:24 -03:00
ReinUsesLisp
28fece8e9b
gl_state: Move initializers from constructor to class declaration
2019-10-29 21:27:23 -03:00
ReinUsesLisp
a993df1ee2
shader/node: Unpack bindless texture encoding
...
Bindless textures were using u64 to pack the buffer and offset from
where they come from. Drop this in favor of separated entries in the
struct.
Remove the usage of std::set in favor of std::list (it's not std::vector
to avoid reference invalidations) for samplers and images.
2019-10-29 20:53:48 -03:00
Rodrigo Locatti
2ec5b55ee3
Merge pull request #3004 from ReinUsesLisp/maxwell3d-cleanup
...
maxwell_3d: Remove unused entries
2019-10-29 23:46:33 +00:00
Rodrigo Locatti
c5d9589942
Merge pull request #3037 from FernandoS27/new-formats
...
video_core: Implement texture format E5B9G9R9_SHAREDEXP.
2019-10-28 01:36:58 -03:00
Lioncash
6c8f28813c
scheduler: Mark parameter of AskForReselectionOrMarkRedundant() as const
...
This is only compared against, so it can be made const.
2019-10-27 23:35:50 -04:00
ReinUsesLisp
fa31e5b868
maxwell_3d/kepler_compute: Remove unused arguments in GetTexture
2019-10-28 00:23:42 -03:00
ReinUsesLisp
538ddd220e
video_core/textures: Remove unused index entry in FullTextureInfo
2019-10-28 00:14:38 -03:00
ReinUsesLisp
961fe4d19b
maxwell_3d: Remove unused method GetStageTextures
2019-10-28 00:14:29 -03:00
Lioncash
f19c1a7cda
scheduler: Silence sign conversion warnings
2019-10-27 22:44:52 -04:00
Lioncash
2fb0bbff29
scheduler: Initialize class members directly where applicable
...
Reduces the overall amount of code.
2019-10-27 22:13:55 -04:00
Lioncash
2dc469ceba
scheduler: Amend documentation comments
...
Adjusts the formatting of a few of the comments an ensures they get
recognized as proper Doxygen comments.
2019-10-27 22:12:32 -04:00
David
4c5731c34f
Merge pull request #2971 from FernandoS27/new-scheduler-v2
...
Kernel: Implement a New Thread Scheduler V2
2019-10-28 10:53:27 +11: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
bunnei
6909b2f0f9
Merge pull request #3034 from ReinUsesLisp/w4244-maxwell3d
...
maxwell_3d: Silence implicit conversion warnings
2019-10-27 15:08:59 -04:00
ReinUsesLisp
3e469cecc1
maxwell_3d: Silence implicit conversion warnings
...
While we are at it, unify types for dirty reg pointers.
2019-10-27 15:22:17 -03:00
ReinUsesLisp
bd2aff3e26
rasterizer_accelerated: Add intermediary for GPU rasterizers
...
Add an intermediary class that implements common functions across GPU
accelerated rasterizers. This avoids code repetition on different
backends.
2019-10-27 03:40:08 -03:00
ReinUsesLisp
a5aa1bb174
astc: Silence implicit conversion warnings
2019-10-27 03:04:50 -03:00
Rodrigo Locatti
26f3e18c5c
Merge pull request #2976 from FernandoS27/cache-fast-brx-rebased
...
Implement Fast BRX, fix TXQ and addapt the Shader Cache for it
2019-10-26 16:56:13 -03:00
Fernando Sahmkow
be856a38d6
Shader_IR: Address Feedback.
2019-10-26 15:38:30 -04:00
Rodrigo Locatti
a0d79085c4
Merge pull request #3027 from lioncash/lookup
...
shader_ir: Use std::array with std::pair instead of std::unordered_map
2019-10-26 05:49:15 -03:00
Rodrigo Locatti
d52598173d
Merge pull request #3013 from FernandoS27/tld4s-fix
...
Shader_Ir: Fix TLD4S from using a component mask.
2019-10-25 20:06:26 -03:00
Fernando Sahmkow
e3afd6595a
Shader_IR: Clang format
2019-10-25 09:01:32 -04:00
ReinUsesLisp
78f3e8a757
gl_shader_cache: Implement locker variants invalidation
2019-10-25 09:01:32 -04:00
ReinUsesLisp
ec85648af3
gl_shader_disk_cache: Store and load fast BRX
2019-10-25 09:01:31 -04:00
ReinUsesLisp
fa2c297f3e
const_buffer_locker: Minor style changes
2019-10-25 09:01:31 -04:00
ReinUsesLisp
7b81ba4d8a
gl_shader_decompiler: Move entries to a separate function
2019-10-25 09:01:31 -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
Rodrigo Locatti
5062728669
Merge pull request #3028 from lioncash/constexpr
...
shader_bytecode: Make Matcher constexpr capable
2019-10-24 15:10:40 -03:00
Lioncash
7fdf991097
shader_bytecode: Make Matcher constexpr capable
...
Greatly shrinks the amount of generated code for GetDecodeTable().
Collapses an assembly output of 9000+ lines down to ~3621 with Clang,
and 6513 down to ~2616 with GCC, given it's now allowed to construct all
the entries as a sequence of constant data.
2019-10-24 01:10:10 -04:00
Lioncash
382717172e
shader_ir: Use std::array with pair instead of unordered_map
...
Given the overall size of the maps are very small, we can use arrays of
pairs here instead of always heap allocating a new map every time the
functions are called. Given the small size of the maps, the difference
in container lookups are negligible, especially given the entries are
already sorted.
2019-10-24 00:25:38 -04:00
Lioncash
1f5401c89c
video_core/shader: Resolve instances of variable shadowing
...
Silences a few -Wshadow warnings.
2019-10-23 23:00:31 -04:00
bunnei
6fe89acf0d
Merge pull request #2991 from lioncash/npad
...
hid/npad: Minor cleanup
2019-10-22 19:51:24 -04:00
Zach Hilman
bb207fe27a
savedata_factory: Automatically create certain savedata
...
After further hardware investigation, it appears that some games, perhaps those more lazily coded, will not call EnsureSaveData, meaning that they expect the normal (current) save to be automatically made. Additionally, some games do not create a cache or temporary save before use.
In these 3 specific instances, the save is created automatically for the game if it doesn't exist.
2019-10-22 15:47:38 -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
ReinUsesLisp
1ea07954fb
shader_ir/memory: Ignore global memory when tracking fails
...
Ignore global memory operations instead of invoking undefined behaviour
when constant buffer tracking fails and we are blasting through asserts,
ignore the operation.
In the case of LDG this means filling the destination registers with
zeroes; for STG this means ignore the instruction as a whole.
The default behaviour is still to abort execution on failure.
2019-10-22 02:49:17 -03:00
ReinUsesLisp
e3107788e6
maxwell_3d: Reduce FlushMMEInlineDraw logging to Trace
2019-10-20 03:43:17 -03:00
bunnei
a86a88109a
core: Fix clang-format errors.
2019-10-19 14:47:18 -04:00
Nicolae-Andrei Cociorba
20521da259
Fix null pointer deref.
2019-10-18 14:12:12 +00:00
Rodrigo Locatti
dc5eedef71
Merge pull request #2994 from lioncash/fmt
...
video_core/shader/ast: Minor changes to ASTPrinter
2019-10-18 01:05:25 -03:00
Lioncash
074b38b7a9
video_core/shader/ast: Make ShowCurrentState() and SanityCheck() const member functions
...
These can also trivially be made const member functions, with the
addition of a few consts.
2019-10-17 20:59:48 -04:00
Lioncash
222f4b45eb
video_core/shader/ast: Make ASTManager::Print a const member function
...
Given all visiting functions never modify the nodes, we can trivially
make this a const member function.
2019-10-17 20:56:39 -04:00
Rodrigo Locatti
fd922ddb01
Merge pull request #2993 from lioncash/vulkan-expr
...
vk_shader_decompiler: Mark operator() function parameters as const references
2019-10-17 21:46:49 -03:00
Lioncash
7831e86c34
video_core/shader/ast: Make ExprPrinter members private
...
This member already has an accessor, so there's no need for it to be
public.
2019-10-17 20:39:36 -04:00
Lioncash
a2eccbf075
video_core/shader/ast: Make Indent() return a string_view
...
The returned string is simply a substring of our constexpr tabs
string_view, so we can just use a string_view here as well, since the
original string_view is guaranteed to always exist.
Now the function is fully non-allocating.
2019-10-17 20:29:00 -04:00
Lioncash
15d177a6ac
video_core/shader/ast: Make Indent() private
...
It's never used outside of this class, so we can narrow its scope down.
2019-10-17 20:26:13 -04:00
Lioncash
7f6a8a33d4
video_core/shader/ast: Rename Ident() to Indent()
...
This can be confusing, given "ident" is generally used as a shorthand
for "identifier".
2019-10-17 20:26:13 -04:00
Lioncash
081530686c
video_core/shader/ast: Make use of fmt where applicable
...
Makes a few strings nicer to read and also eliminates a bit of string
churn with operator+.
2019-10-17 20:26:10 -04:00
bunnei
d1713ad451
Merge pull request #2992 from lioncash/dmnt
...
dmnt_cheat_vm: Correct register Restore and ClearRegs behavior
2019-10-17 19:52:24 -04:00
Lioncash
c6bec9aa10
vk_shader_decompiler: Mark operator() function parameters as const references
...
These parameters aren't actually modified in any way, so they can be
made const references.
2019-10-17 19:44:00 -04:00
Lioncash
2c34d8aabb
dmnt_cheat_vm: Correct register Restore and ClearRegs behavior
...
Previously these were performing the same behavior as the Save and
ClearSaved opcode types.
2019-10-17 18:49:39 -04:00
Rodrigo Locatti
219fdcb9d9
Merge pull request #2966 from FernandoS27/astc-formats
...
Implement a series of ASTC formats and R4G4B4A4 format
2019-10-17 19:24:11 -03:00
Rodrigo Locatti
a21b88ef8f
Merge pull request #2979 from lioncash/macro
...
video_core/macro_interpreter: Make definitions of most private enums/unions hidden
2019-10-17 19:21:09 -03:00
Fernando Sahmkow
c0eb1aecfd
Fermi2D: Use a different formula for delimiting blit areas.
2019-10-17 18:21:01 -04:00
Rodrigo Locatti
7cf091bb20
Merge pull request #2989 from lioncash/apm
...
service/apm/controller: Minor interface changes
2019-10-17 19:20:14 -03:00
Lioncash
8d8e495248
hid/npad: Fix incorrect connection boolean value in ConnectAllDisconnectedControllers()
...
We should be setting the connection state to true, otherwise we aren't
actually making the controllers connected like the function name
indicates.
2019-10-17 18:19:47 -04:00
Lioncash
d076466f26
hid/npad: Add missing break in default case
...
While not an issue, it does prevent fallthrough from occurring if
anything is ever added after this case (unlikely to occur, but this
turns a trivial "should not cause issues" into a definite "won't cause
issues).
2019-10-17 18:17:42 -04:00
Lioncash
26c84718c8
hid/npad: Replace std::for_each with ranged for loops
...
Performs the same behavior, but is built into the core language itself.
No functional change.
2019-10-17 18:16:36 -04:00
Lioncash
e433e99191
hid/npad: Remove redundant non-const variant of IsControllerSupported()
...
The const qualified variant can also be called in non-const contexts, so
we can remove the non-const variant to eliminate a bit of code
duplication.
2019-10-17 18:11:41 -04:00
Lioncash
a71e8066a1
hid/npad: Move function declarations
...
Clearly separate these from the variable declarations to make them more
visible.
2019-10-17 18:09:08 -04:00
Lioncash
125caf5d6e
video_core/macro_interpreter: Make definitions of most private enums/unions hidden
...
This allows the implementation of these types to change without
requiring a rebuild of everything that includes the macro interpreter
header.
2019-10-17 17:55:46 -04:00
Lioncash
98c6a95079
core/core: Resolve -Wreorder warnings
...
Amends the initializer lists to be ordered in the same manner that
they're declared within the class.
2019-10-17 17:51:06 -04:00
Lioncash
6414d9e2e5
core/memory/cheat_engine: Resolve -Wreorder warnings
...
Amends the initializer lists to be ordered in the same manner that
they're declared within the class.
2019-10-17 16:21:47 -04:00
Lioncash
b77430df70
apm/controller: Make SetPerformanceConfiguration() use an array of pairs over a map
...
While a map is an OK way to do lookups (and usually recommended in most
cases), this is a map that lives for the entire duration of the program
and only deallocates its contents when the program terminates.
Given the total size of the map is quite small, we can simply use a
std::array of pairs and utilize std::find_if to perform the same
behavior without loss of performance.
This eliminates a static constructor and places the data into the
read-only segment.
While we're at it, we can also handle malformed inputs instead of
directly dereferencing the resulting iterator.
2019-10-17 16:13:14 -04:00
Lioncash
141d929929
apm/controller: Make GetCurrentPerformanceMode() a const member function
...
This doesn't modify instance state, so it can be made const qualified.
2019-10-17 15:58:25 -04:00
bunnei
9fe8072c67
Merge pull request #2980 from lioncash/warn
...
maxwell_3d: Silence truncation warnings
2019-10-17 14:02:16 -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
Rodrigo Locatti
60c602e4e7
Merge pull request #2978 from lioncash/doxygen
...
video_core/texture_cache: Amend Doxygen references
2019-10-16 22:09:40 -03:00
Rodrigo Locatti
e00b529a89
Merge pull request #2982 from lioncash/surface
...
texture_cache: Avoid unnecessary surface copies within PickStrategy() and TryReconstructSurface()
2019-10-16 19:43:32 -03:00
bunnei
ef9b31783d
Merge pull request #2912 from FernandoS27/async-fixes
...
General fixes to Async GPU
2019-10-16 10:34:48 -04:00
Rodrigo Locatti
60315060b1
Merge pull request #2984 from lioncash/fallthrough2
...
video_core/surface: Add missing break in PixelFormatFromTextureFormat()
2019-10-15 23:08:34 -03:00
Lioncash
cf9e13c255
video_core/surface: Add missing break in PixelFormatFromTextureFormat()
...
Prevents fallthrough into the following case.
2019-10-15 21:53:15 -04:00
Rodrigo Locatti
14f3cebcd4
Merge pull request #2981 from lioncash/copy
...
gl_shader_decompiler: Minor cleanup-related changes
2019-10-15 21:07:25 -03:00
Lioncash
6947bf8e44
vk_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator()
...
This would previously result in NeverExecute and UnusedIndex being
treated as regular predicates.
2019-10-15 19:40:58 -04:00
Lioncash
b42a74ff2c
gl_shader_decompiler: Resolve fallthrough within ExprDecompiler's ExprCondCode operator()
...
This would previously result in NeverExecute and UnusedIndex being
treated as regular predicates.
2019-10-15 19:38:55 -04:00
Lioncash
a24e8bf9cf
texture_cache: Avoid unnecessary surface copies within PickStrategy() and TryReconstructSurface()
...
We can take these by const reference and avoid making unnecessary
copies, preventing some atomic reference count increments and
decrements.
2019-10-15 19:31:33 -04:00
Lioncash
77b4916b33
control_flow: Silence truncation warnings
...
This can be trivially fixed by making the input size a size_t.
CFGRebuildState's constructor parameter is already a std::size_t, so
this just makes the size type fully conform with it.
2019-10-15 19:10:28 -04:00
Lioncash
4f16ce9294
gl_shader_decompiler: Make ExprDecompiler's GetResult() a const member function
...
This is only ever used to read, but not write, the resulting string, so
we can enforce this by making it a const member function.
2019-10-15 19:02:59 -04:00
Lioncash
67df3f7742
gl_shader_decompiler: Use a std::string_view with GetDeclarationWithSuffix()
...
This allows the function to be completely non-allocating for inputs of
all sizes (i.e. there's no heap cost for an input to convert to a
std::string_view).
2019-10-15 19:00:48 -04:00
Lioncash
04a1161354
gl_shader_decompiler: Fold flow_var constant into GetFlowVariable()
...
This is only ever used within this function, so we can narrow it's scope
down.
2019-10-15 18:58:36 -04:00
Lioncash
2f2ab9b5bc
gl_shader_decompiler: Mark ASTDecompiler/ExprDecompiler parameters as const references where applicable
...
These member functions don't actually modify the input parameter, so we
can make this explicit with the use of const.
2019-10-15 18:57:02 -04:00
Lioncash
b8a62adcf1
gl_shader_decompiler: Pass by reference to GenerateTextureArgument()
...
Avoids an unnecessary atomic reference count increment and decrement.
2019-10-15 18:29:37 -04:00
Lioncash
d1d7ce74d2
gl_shader_decompiler: Use std::holds_alternative within GenerateTexture()
...
This only ever queries if the type exists within the variant, but
doesn't actually do anything with the return value. We can just use
std::holds_alternative for this use case.
2019-10-15 18:25:48 -04:00
Lioncash
67658dd6e8
shader/node: std::move Meta instance within OperationNode constructor
...
Allows usages of the constructor to avoid an unnecessary copy.
2019-10-15 18:21:59 -04:00
Lioncash
9760795bfb
gl_shader_decompiler: Avoid unnecessary copies of MetaImage
...
MetaImage contains a std::vector, so copying here could result in
unnecessary reallocations. Given the operation lives throughout the
entire scope, this is safe to do.
2019-10-15 18:14:55 -04:00
Lioncash
c9c75f9587
maxwell_3d: Silence truncation warnings
...
A trivial warning caused by not using size_t as the argument types
instead of u32.
2019-10-15 17:51:35 -04:00
bunnei
2299950de1
Merge pull request #2972 from lioncash/system
...
{bcat, gpu, nvflinger}: Remove trivial usages of the global system accessor
2019-10-15 17:49:12 -04:00
Lioncash
b25b94400e
video_core/gpu: Remove use of the global system accessor
...
We can just make use of the reference member variable instead of
accessing the global system instance.
2019-10-15 16:39:30 -04:00
Lioncash
cc1d7048b5
bcat: Remove use of global system accessors
...
Removes all uses of the global system accessor within the BCAT
interface.
2019-10-15 16:39:27 -04:00
Lioncash
524eb15513
video_core/texture_cache: Amend Doxygen references
...
Amends the doxygen comments so that they properly resolve. While we're
at it, we can correct some typos and fix up some of the comments'
formatting in order to make them slightly nicer to read.
2019-10-15 15:40:00 -04:00
Lioncash
d5706346d7
common/algorithm: Add description comment indicating intended algorithms
...
Makes it explicit that the header is intended for iterator-based
algorithms that can ideally operate on any type.
2019-10-15 15:25:23 -04:00
Lioncash
ac4dbd3b25
common: Rename binary_find.h to algorithm.h
...
Makes the header more general for other potential algorithms in the
future. While we're at it, include a missing <functional> include to
satisfy the use of std::less.
2019-10-15 15:24:50 -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