Fernando Sahmkow
e60d281a01
gl_rasterizer: Correct sRGB Fix regression
2019-09-10 19:31:42 -03:00
ReinUsesLisp
78574746bd
renderer_opengl: Fix sRGB blits
...
Removes the sRGB hack of tracking if a frame used an sRGB rendertarget
to apply at least once to blit the final texture as sRGB. Instead of
doing this apply sRGB if the presented image has sRGB.
Also enable sRGB by default on Maxwell3D registers as some games seem to
assume this.
2019-09-10 19:31:42 -03:00
bunnei
34b2c60f95
Merge pull request #2823 from ReinUsesLisp/shr-clamp
...
shader/shift: Implement SHR wrapped and clamped variants
2019-09-10 11:56:17 -04:00
bunnei
c7ec7bc1f5
Merge pull request #2810 from ReinUsesLisp/mme-opt
...
maxwell_3d: Avoid moving macro_params
2019-09-10 11:55:45 -04:00
ReinUsesLisp
17a9b0178d
gl_shader_decompiler: Avoid writing output attribute when unimplemented
2019-09-06 15:02:12 -03:00
ReinUsesLisp
1f43e5296f
gl_shader_decompiler: Keep track of written images and mark them as modified
2019-09-05 23:26:05 -03:00
ReinUsesLisp
7228e22098
texture_cache: Minor changes
2019-09-05 23:25:15 -03:00
ReinUsesLisp
322d0200c8
gl_rasterizer: Apply textures and images state
2019-09-05 20:35:51 -03:00
ReinUsesLisp
80ec2feee8
gl_rasterizer: Add samplers to compute dispatches
2019-09-05 20:35:51 -03:00
ReinUsesLisp
954fc02fdd
gl_rasterizer: Minor code changes
2019-09-05 20:35:51 -03:00
ReinUsesLisp
04cdecb7a1
gl_state: Split textures and samplers into two arrays
2019-09-05 20:35:51 -03:00
ReinUsesLisp
6170337001
gl_rasterizer: Implement image bindings
2019-09-05 20:35:51 -03:00
ReinUsesLisp
5edf24b510
gl_state: Add support for glBindImageTextures
2019-09-05 20:35:51 -03:00
ReinUsesLisp
2424eefad2
texture_cache: Pass TIC to texture cache
2019-09-05 20:35:51 -03:00
ReinUsesLisp
3a450c1395
kepler_compute: Implement texture queries
2019-09-05 20:35:51 -03:00
ReinUsesLisp
2e5b5c2358
gl_rasterizer: Split SetupTextures
2019-09-05 20:35:51 -03:00
Fernando Sahmkow
4ee9949639
Merge pull request #2804 from ReinUsesLisp/remove-gs-special
...
gl_shader_cache: Remove special casing for geometry shaders
2019-09-05 16:03:46 -04:00
bunnei
03badbdd9b
Merge pull request #2833 from ReinUsesLisp/fix-stencil
...
gl_rasterizer: Fix stencil testing
2019-09-05 15:27:31 -04:00
ReinUsesLisp
0f7b813d65
gl_shader_decompiler: Implement shared memory
2019-09-05 01:40:24 -03:00
ReinUsesLisp
4de04eba39
shader_ir: Implement LD_S
...
Loads from shared memory.
2019-09-05 01:38:37 -03:00
ReinUsesLisp
f17415d431
shader_ir: Implement ST_S
...
This instruction writes to a memory buffer shared with threads within
the same work group. It is known as "shared" memory in GLSL.
2019-09-05 01:38:37 -03:00
David
d34fa7c4fa
Merge pull request #2802 from ReinUsesLisp/hsetp2-pred
...
half_set_predicate: Fix HSETP2 predicate assignments
2019-09-05 12:26:39 +10:00
ReinUsesLisp
6177cbdbe1
gl_shader_decompiler: Fixup slow path
2019-09-04 15:03:51 -03:00
ReinUsesLisp
7bbc98cfc3
gl_rasterizer: Fix stencil testing
...
* Fix stencil dirty flags tracking when stencil is disabled
* Attach stencil on clears (previously it only attached depth)
* Attach stencil on drawing regardless of stencil testing being enabled
2019-09-04 01:59:09 -03:00
ReinUsesLisp
5f309b88db
Revert "Revert #2466 " and stub FirmwareCall 4
2019-09-04 01:55:45 -03:00
ReinUsesLisp
77ef4fa907
shader/shift: Implement SHR wrapped and clamped variants
...
Nvidia defaults to wrapped shifts, but this is undefined behaviour on
OpenGL's spec. Explicitly mask/clamp according to what the guest shader
requires.
2019-09-04 01:55:24 -03:00
ReinUsesLisp
701dedcfad
maxwell_3d: Avoid moving macro_params
2019-09-04 01:55:01 -03:00
ReinUsesLisp
42e1bb6d46
gl_shader_cache: Remove special casing for geometry shaders
...
Now that ProgramVariants holds the primitive topology we no longer need
to keep track of individual geometry shaders topologies.
2019-09-04 01:54:43 -03:00
ReinUsesLisp
dfae2d141a
half_set_predicate: Fix predicate assignments
2019-09-04 01:54:23 -03:00
ReinUsesLisp
9cf52d027d
gl_device: Disable precise in fragment shaders on bugged drivers
2019-09-04 01:54:00 -03:00
ReinUsesLisp
03276e7490
gl_shader_decompiler: Fixup AMD's slow path type
2019-09-04 01:54:00 -03:00
ReinUsesLisp
6c449793b8
gl_shader_decompiler: Rework GLSL decompiler type system
...
GLSL decompiler type system was broken. We converted all return values
to float except for some cases where returning we couldn't and
implicitly broke the rule of returning floats (e.g. for bools or bool
pairs).
Instead of doing this introduce class Expression that knows what type a
return value has and when a consumer wants to use the string it asks for
it with a required type, emitting a runtime error if types are
incompatible.
This has the disadvantage that there's more C++ code, but we can emit
better GLSL code that's easier to read.
2019-09-04 01:54:00 -03:00
bunnei
19af91434e
Merge pull request #2793 from ReinUsesLisp/bgr565
...
renderer_opengl: Implement RGB565 framebuffer format
2019-09-03 22:36:32 -04:00
bunnei
81fbc5370d
Merge pull request #2812 from ReinUsesLisp/f2i-selector
...
shader_ir/conversion: Implement F2I and F2F F16 selector
2019-09-03 22:35:33 -04:00
bunnei
d4f33b822b
Merge pull request #2811 from ReinUsesLisp/fsetp-fix
...
float_set_predicate: Add missing negation bit for the second operand
2019-09-03 22:34:34 -04:00
bunnei
137d165672
Merge pull request #2826 from ReinUsesLisp/macro-binding
...
maxwell_3d: Fix macro binding cursor
2019-09-03 22:32:42 -04:00
bunnei
50b5bb44a0
Merge pull request #2765 from FernandoS27/dma-fix
...
MaxwellDMA: Fixes, corrections and relaxations.
2019-09-01 13:13:05 -04:00
ReinUsesLisp
52a41f482f
maxwell_3d: Fix macro binding cursor
2019-09-01 05:01:11 -03:00
Rodrigo Locatti
4d4f9cc104
video_core: Silent miscellaneous warnings ( #2820 )
...
* texture_cache/surface_params: Remove unused local variable
* rasterizer_interface: Add missing documentation commentary
* maxwell_dma: Remove unused rasterizer reference
* video_core/gpu: Sort member declaration order to silent -Wreorder warning
* fermi_2d: Remove unused MemoryManager reference
* video_core: Silent unused variable warnings
* buffer_cache: Silent -Wreorder warnings
* kepler_memory: Remove unused MemoryManager reference
* gl_texture_cache: Add missing override
* buffer_cache: Add missing include
* shader/decode: Remove unused variables
2019-08-30 14:08:00 -04:00
ReinUsesLisp
878adee0a3
gl_buffer_cache: Add missing include
...
RasterizerInterface was considered an incomplete object by clang.
2019-08-29 22:02:52 +00:00
bunnei
a67c4e6e02
Merge pull request #2742 from ReinUsesLisp/fix-texture-buffers
...
gl_texture_cache: Miscellaneous texture buffer fixes
2019-08-29 15:59:17 -04:00
bunnei
e424615839
Merge pull request #2783 from FernandoS27/new-buffer-cache
...
Implement a New LLE Buffer Cache
2019-08-29 13:07:01 -04:00
bunnei
f8cc5668f8
Merge pull request #2758 from ReinUsesLisp/packed-tid
...
shader/decode: Implement S2R Tic
2019-08-29 12:58:43 -04:00
ReinUsesLisp
e3534700d7
shader_ir/conversion: Split int and float selector and implement F2F H1
2019-08-28 16:09:33 -03:00
ReinUsesLisp
b13fbc25b8
shader_ir/conversion: Implement F2I F16 Ra.H1
2019-08-27 23:40:40 -03:00
ReinUsesLisp
6207751b00
float_set_predicate: Add missing negation bit for the second operand
2019-08-27 21:57:43 -03:00
ReinUsesLisp
4e35177e23
shader_ir: Implement VOTE
...
Implement VOTE using Nvidia's intrinsics. Documentation about these can
be found here
https://developer.nvidia.com/reading-between-threads-shader-intrinsics
Instead of using portable ARB instructions I opted to use Nvidia
intrinsics because these are the closest we have to how Tegra X1
hardware renders.
To stub VOTE on non-Nvidia drivers (including nouveau) this commit
simulates a GPU with a warp size of one, returning what is meaningful
for the instruction being emulated:
* anyThreadNV(value) -> value
* allThreadsNV(value) -> value
* allThreadsEqualNV(value) -> true
ballotARB, also known as "uint64_t(activeThreadsNV())", emits
VOTE.ANY Rd, PT, PT;
on nouveau's compiler. This doesn't match exactly to Nvidia's code
VOTE.ALL Rd, PT, PT;
Which is emulated with activeThreadsNV() by this commit. In theory this
shouldn't really matter since .ANY, .ALL and .EQ affect the predicates
(set to PT on those cases) and not the registers.
2019-08-21 14:50:38 -03:00
Fernando Sahmkow
83ec2091c1
Buffer Cache: Adress Feedback.
2019-08-21 12:14:27 -04:00
Fernando Sahmkow
6ce2c85047
Buffer_Cache: Implement flushing.
2019-08-21 12:14:26 -04:00
Fernando Sahmkow
de8ff8a1c6
Buffer_Cache: Implement barriers.
2019-08-21 12:14:25 -04:00
Fernando Sahmkow
286f4c446a
Buffer_Cache: Optimize and track written areas.
2019-08-21 12:14:25 -04:00
Fernando Sahmkow
5f4b746a1e
BufferCache: Rework mapping caching.
2019-08-21 12:14:24 -04:00
Fernando Sahmkow
86d8563314
Buffer_Cache: Fixes and optimizations.
2019-08-21 12:14:23 -04:00
Fernando Sahmkow
862bec001b
Video_Core: Implement a new Buffer Cache
2019-08-21 12:14:22 -04:00
bunnei
d654b3d82e
Merge pull request #2769 from FernandoS27/commands-flush
...
GPU: Flush commands on every dma pusher step.
2019-08-21 10:29:56 -04:00
bunnei
dfdd20142e
Merge pull request #2777 from ReinUsesLisp/hsetp2-fe3h-fix
...
half_set_predicate: Fix HSETP2_C constant buffer offset
2019-08-21 10:29:17 -04:00
bunnei
cedc1aab4a
Merge pull request #2753 from FernandoS27/float-convert
...
Shader_Ir: Implement F16 Variants of F2F, F2I, I2F.
2019-08-21 10:27:57 -04:00
ReinUsesLisp
80702aa88f
renderer_opengl: Implement RGB565 framebuffer format
2019-08-21 02:28:31 -03:00
ReinUsesLisp
9cdf5c6c31
renderer_opengl: Use block linear swizzling for CPU framebuffers
2019-08-21 02:17:14 -03:00
ReinUsesLisp
8ad7268c75
renderer_opengl: Use VideoCore pixel format
2019-08-21 02:16:40 -03:00
ReinUsesLisp
9a76e94b3d
gpu: Change optional<reference_wrapper<T>> to T* for FramebufferConfig
2019-08-21 01:55:25 -03:00
bunnei
ca61e298b3
Merge pull request #2778 from ReinUsesLisp/nop
...
shader_ir: Implement NOP
2019-08-18 08:51:34 -04:00
bunnei
87bbefe55f
Merge pull request #2768 from ReinUsesLisp/hsetp2-fix
...
decode/half_set_predicate: Fix predicates
2019-08-18 08:50:54 -04:00
ReinUsesLisp
2ff8044806
shader_ir: Implement NOP
2019-08-04 03:02:55 -03:00
ReinUsesLisp
ec0da3ef64
half_set_predicate: Fix HSETP2_C constant buffer offset
2019-08-04 02:50:55 -03:00
Fernando Sahmkow
e52c895559
GPU: Flush commands on every dma pusher step.
...
This commit ensures that the host gpu is constantly fed with commands to
work with, while the guest gpu keeps producing the rest of the commands.
This reduces syncing time between host and guest gpu.
2019-07-26 16:54:22 -04:00
bunnei
52f54c728d
Merge pull request #2592 from FernandoS27/sync1
...
Implement GPU Synchronization Mechanisms & Correct NVFlinger
2019-07-26 14:26:44 -04:00
ReinUsesLisp
77f1a676a1
decode/half_set_predicate: Fix predicates
2019-07-26 00:12:38 -03:00
Fernando Sahmkow
a452ff983d
MaxwellDMA: Fixes, corrections and relaxations.
...
This commit fixes offsets on Linear -> Tiled copies, corrects z pos
fortiled->linear copies, corrects bytes_per_pixel calculation in tiled
-> linear copies and relaxes some limitations set by latest dma fixes
refactors.
2019-07-25 20:41:42 -04:00
bunnei
b0ff3179ef
Merge pull request #2739 from lioncash/cflow
...
video_core/control_flow: Minor changes/warning cleanup
2019-07-25 13:04:56 -04:00
bunnei
4d26550f5f
Merge pull request #2737 from FernandoS27/track-fix
...
Shader_Ir: Correct tracking to track from right to left
2019-07-25 12:41:52 -04:00
bunnei
31e8a61527
Merge pull request #2743 from FernandoS27/surpress-assert
...
Downgrade and suppress a series of GPU asserts and debug messages.
2019-07-25 12:34:36 -04:00
bunnei
9be9600bdc
Merge pull request #2704 from FernandoS27/conditional
...
maxwell3d: Implement Conditional Rendering
2019-07-24 17:07:57 -04:00
ReinUsesLisp
104641db07
shader/decode: Implement S2R Tic
2019-07-22 16:16:10 -03:00
bunnei
f601f25bcc
Merge pull request #2734 from ReinUsesLisp/compute-shaders
...
gl_rasterizer: Implement compute shaders
2019-07-22 11:12:55 -04:00
bunnei
27e10e0442
Merge pull request #2735 from FernandoS27/pipeline-rework
...
Rework Dirty Flags in GPU Pipeline, Optimize CBData and Redo Clearing mechanism
2019-07-21 00:59:52 -04:00
Fernando Sahmkow
11f4e739bd
Shader_Ir: Implement F16 Variants of F2F, F2I, I2F.
...
This commit takes care of implementing the F16 Variants of the
conversion instructions and makes sure conversions are done.
2019-07-20 17:38:25 -04:00
Fernando Sahmkow
7a35178ee2
Maxwell3D: Reorganize and address feedback
2019-07-20 10:18:35 -04:00
Fernando Sahmkow
1158777737
Shader_Ir: Change Debug Asserts for Log Warnings
2019-07-19 22:15:34 -04:00
ReinUsesLisp
45c162444d
shader/half_set_predicate: Fix HSETP2 implementation
2019-07-19 22:21:22 -03:00
ReinUsesLisp
6c4985edc9
shader/half_set_predicate: Implement missing HSETP2 variants
2019-07-19 22:20:47 -03:00
Lioncash
c1c89411da
video_core/control_flow: Provide operator!= for types with operator==
...
Provides operational symmetry for the respective structures.
2019-07-18 21:03:31 -04:00
Lioncash
1780e0e3d0
video_core/control_flow: Prevent sign conversion in TryGetBlock()
...
The return value is a u32, not an s32, so this would result in an
implicit signedness conversion.
2019-07-18 21:03:31 -04:00
Lioncash
a162a844d2
video_core/control_flow: Remove unnecessary BlockStack copy constructor
...
This is the default behavior of the copy constructor, so it doesn't need
to be specified.
While we're at it we can make the other non-default constructor
explicit.
2019-07-18 21:03:30 -04:00
Lioncash
56bc11d952
video_core/control_flow: Use std::move where applicable
...
Results in less work being done where avoidable.
2019-07-18 21:03:30 -04:00
Lioncash
e7b39f47f8
video_core/control_flow: Use the prefix variant of operator++ for iterators
...
Same thing, but potentially allows a standard library implementation to
pick a more efficient codepath.
2019-07-18 21:03:30 -04:00
Lioncash
6885e7e7ec
video_core/control_flow: Use empty() member function for checking emptiness
...
It's what it's there for.
2019-07-18 21:03:30 -04:00
Lioncash
45fa12a05c
video_core: Resolve -Wreorder warnings
...
Ensures that the constructor members are always initialized in the order
that they're declared in.
2019-07-18 21:03:30 -04:00
Lioncash
47df844338
video_core/control_flow: Make program_size for ScanFlow() a std::size_t
...
Prevents a truncation warning from occurring with MSVC. Also the
internal data structures already treat it as a size_t, so this is just a
discrepancy in the interface.
2019-07-18 21:03:29 -04:00
Lioncash
3df9558593
video_core/control_flow: Place all internally linked types/functions within an anonymous namespace
...
Previously, quite a few functions were being linked with external
linkage.
2019-07-18 21:03:29 -04:00
Lioncash
1109db86b7
video_core/shader/decode: Prevent sign-conversion warnings
...
Makes it explicit that the conversions here are intentional.
2019-07-18 21:03:29 -04:00
bunnei
63bda67a34
Merge pull request #2738 from lioncash/shader-ir
...
shader-ir: Minor cleanup-related changes
2019-07-18 13:52:01 -04:00
Fernando Sahmkow
5a06e33859
Shader_Ir: correct clang format
2019-07-18 10:09:26 -04:00
Fernando Sahmkow
43f57d668c
GPU: Add missing puller methods.
...
This adds some missing puller methods. We don't assert them as these are
nop operations for us.
2019-07-18 08:54:42 -04:00
Fernando Sahmkow
3a3fee5abf
MaxwellDMA/KeplerCopy: Downgrade DMA log message to Trace.
...
This log was just to know which games used DMA. It's no longer
important.
2019-07-18 08:31:38 -04:00
Fernando Sahmkow
d3b71ff80d
Gl_Texture_Cache: Remove assert on component type in GetFormatTuple
...
Textures can have different components types in different orders. This
assert was completely inprecise and the effectiveness of such is better
handled by case and within the texture cache.
2019-07-18 08:20:31 -04:00
Fernando Sahmkow
0b65e9335e
Shader_Ir: Downgrade precision and rounding asserts to debug asserts.
...
This commit reduces the sevirity of asserts for FP precision and
rounding as this are well known and have little to no consequences in
gpu's accuracy.
2019-07-18 08:17:19 -04:00
ReinUsesLisp
74632c76ce
gl_shader_decompiler: Rename bufferImage to imageBuffer
...
The online OpenGL documentation is wrong. The type definition is
imageBuffer.
2019-07-18 01:16:44 -03:00
ReinUsesLisp
87909d327f
gl_shader_cache: Fix newline on buffer preprocessor definitions
2019-07-18 01:16:15 -03:00
ReinUsesLisp
e7bdf8b22a
textures: Fix texture buffer size calculation
2019-07-18 01:07:08 -03:00
ReinUsesLisp
84027f4808
gl_texture_cache: Do not set texture parameters to buffers
2019-07-18 01:06:26 -03:00
ReinUsesLisp
73b2dc6d4f
gl_texture_cache: Add missing break in CreateTexture
2019-07-18 01:04:18 -03:00
Fernando Sahmkow
4be61013a1
GL_State: Feedback and fixes
2019-07-17 17:29:56 -04:00
Fernando Sahmkow
5ad889f6fd
Maxwell3D: Address Feedback
2019-07-17 17:29:55 -04:00
Fernando Sahmkow
7826f0afd9
Texture_Cache: Rebase Fixes
2019-07-17 17:29:54 -04:00
Fernando Sahmkow
8cdbfe69b1
GL_Rasterizer: Corrections to Clearing.
2019-07-17 17:29:54 -04:00
Fernando Sahmkow
0ff4a5fa39
Maxwell3D: Correct marking dirtiness on CB upload
2019-07-17 17:29:53 -04:00
Fernando Sahmkow
fec32fed18
GL_Rasterizer: Rework RenderTarget/DepthBuffer clearing
2019-07-17 17:29:52 -04:00
Fernando Sahmkow
a081dea8ab
Maxwell3D: Implement State Dirty Flags.
2019-07-17 17:29:51 -04:00
Fernando Sahmkow
0d3db58657
Maxwell3D: Rework CBData Upload
2019-07-17 17:29:50 -04:00
Fernando Sahmkow
f2e7b29c14
Maxwell3D: Rework the dirty system to be more consistant and scaleable
2019-07-17 17:29:49 -04:00
Fernando Sahmkow
e42bcf2314
maxwell3d: Implement Conditional Rendering
...
Conditional Rendering takes care of conditionaly clearing or drawing
depending on a set of queries. This PR implements the query checks to
stablish if things can be rendered or not.
2019-07-17 17:13:19 -04:00
Fernando Sahmkow
223a535f3f
Merge pull request #2740 from lioncash/bra
...
shader/decode/other: Correct branch indirect argument within BRA handling
2019-07-17 14:25:08 -04:00
Lioncash
bebbdc2067
shader_ir: std::move Node instance where applicable
...
These are std::shared_ptr instances underneath the hood, which means
copying them isn't as cheap as a regular pointer. Particularly so on
weakly-ordered systems.
This avoids atomic reference count increments and decrements where they
aren't necessary for the core set of operations.
2019-07-16 19:49:23 -04:00
Lioncash
60926ac16b
shader_ir: Rename Get/SetTemporal to Get/SetTemporary
...
This is more accurate in terms of describing what the functions are
actually doing. Temporal relates to time, not the setting of a temporary
itself.
2019-07-16 19:47:43 -04:00
Lioncash
44d87ff641
shader_ir: Remove unused includes
...
Removes unnecessary header dependencies.
2019-07-16 19:47:42 -04:00
Fernando Sahmkow
d614193e49
Shader_Ir: Correct tracking to track from right to left
2019-07-16 15:06:59 -04:00
Fernando Sahmkow
b56e7f870a
Merge pull request #2565 from ReinUsesLisp/track-indirect
...
shader/track: Track indirect buffers
2019-07-16 14:58:35 -04:00
Lioncash
e2d7dda166
shader/decode/other: Correct branch indirect argument within BRA handling
...
This appears to have been a copy/paste error introduced within
8a6fc529a9
2019-07-16 12:20:45 -04:00
ReinUsesLisp
2a4044a858
gl_shader_cache: Fix clang-format issues
2019-07-15 20:33:51 -03:00
ReinUsesLisp
6b0d017675
gl_shader_decompiler: Stub local memory size
2019-07-15 17:38:25 -03:00
ReinUsesLisp
56bca83bde
gl_shader_cache: Address review commentaries
2019-07-15 17:38:25 -03:00
ReinUsesLisp
bbecd13697
gl_shader_cache: Address CI issues
2019-07-15 17:38:25 -03:00
ReinUsesLisp
725ba6cf63
gl_rasterizer: Implement compute shaders
2019-07-15 17:38:25 -03:00
Fernando Sahmkow
1bdb59fc6e
Merge pull request #2695 from ReinUsesLisp/layer-viewport
...
gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders
2019-07-15 16:28:07 -04:00
bunnei
b77a1ed67a
Merge pull request #2705 from FernandoS27/tex-cache-fixes
...
GPU: Fixes to Texture Cache and Include Microprofiles for GL State/BufferCopy/Macro Interpreter
2019-07-14 22:44:36 -04:00
ReinUsesLisp
afa8096df5
shader: Allow tracking of indirect buffers without variable offset
...
While changing this code, simplify tracking code to allow returning
the base address node, this way callers don't have to manually rebuild
it on each invocation.
2019-07-14 22:36:44 -03:00
bunnei
3477b92289
Merge pull request #2675 from ReinUsesLisp/opengl-buffer-cache
...
buffer_cache: Implement a generic buffer cache and its OpenGL backend
2019-07-14 19:03:43 -04:00
Fernando Sahmkow
2ac7472d3f
Texture_Cache: Address Feedback
2019-07-14 17:42:39 -04:00
Fernando Sahmkow
0f54b541f4
Texture_Cache: Remove some unprecise fallback case and clang format
2019-07-14 12:00:32 -04:00
Fernando Sahmkow
5818959e54
Texture_Cache: Force Framebuffer reset if an active render target is unregistered.
2019-07-14 12:00:31 -04:00
Fernando Sahmkow
913b7a6872
GPU: Add a microprofile for macro interpreter
2019-07-14 12:00:30 -04:00
Fernando Sahmkow
a9943222f2
GL_State: Add a microprofile timer to OpenGL state.
2019-07-14 12:00:30 -04:00
Fernando Sahmkow
5c1e1a148e
Gl_Texture_Cache: Measure Buffer Copy Times
2019-07-14 12:00:29 -04:00
Fernando Sahmkow
5d31bab69a
Texture_Cache: Correct Linear Structural Match.
2019-07-14 12:00:28 -04:00
Fernando Sahmkow
4882c058fd
Merge pull request #2690 from SciresM/physmem_fixes
...
Implement MapPhysicalMemory/UnmapPhysicalMemory
2019-07-14 09:16:46 -04:00
Fernando Sahmkow
0ec9da2f9f
Merge pull request #2692 from ReinUsesLisp/tlds-f16
...
shader/texture: Add F16 support for TLDS
2019-07-14 08:44:38 -04:00
bunnei
bb67091c77
Merge pull request #2609 from FernandoS27/new-scan
...
Implement a New Shader Scanner, Decompile Flow Stack and implement BRX BRA.CC
2019-07-11 17:36:23 -04:00
ReinUsesLisp
0eb0c24269
gl_shader_decompiler: Fix gl_PointSize redeclaration
2019-07-11 16:10:59 -03:00
ReinUsesLisp
aca40de224
gl_shader_decompiler: Fix conditional usage of GL_ARB_shader_viewport_layer_array
2019-07-11 04:27:00 -03:00
bunnei
fd066ffbce
Merge pull request #2697 from lioncash/doc
...
gl_rasterizer: Amend documentation comment for ConfigureFramebuffers()
2019-07-10 16:38:09 -04:00
bunnei
7fb7054bc8
Merge pull request #2686 from ReinUsesLisp/vk-scheduler
...
vk_scheduler: Drop execution context in favor of views
2019-07-10 16:35:48 -04:00
bunnei
206ec29f17
Merge pull request #2691 from lioncash/override
...
video_core: Add missing override specifiers
2019-07-10 16:25:43 -04:00
Fernando Sahmkow
f2549739d1
shader_ir: Add comments on missing instruction.
...
Also shows Nvidia's address space on comments.
2019-07-09 17:15:45 -04:00
Michael Scire
a1845d1dd3
prefer system reference over global accessor
2019-07-09 08:11:35 -07:00
Fernando Sahmkow
2de7649311
shader_ir: limit explorastion to best known program size.
2019-07-09 08:14:43 -04:00
Fernando Sahmkow
e7c6045a03
control_flow: Correct block breaking algorithm.
2019-07-09 08:14:43 -04:00
Fernando Sahmkow
dc4a93594c
control_flow: Assert shaders bigger than limit.
2019-07-09 08:14:42 -04:00
Fernando Sahmkow
e7a88f0ab3
control_flow: Address feedback.
2019-07-09 08:14:42 -04:00
Fernando Sahmkow
34357b110c
shader_ir: Correct parsing of scheduling instructions and correct sizing
2019-07-09 08:14:41 -04:00
Fernando Sahmkow
cfb3db1a32
shader_ir: Correct max sizing
2019-07-09 08:14:40 -04:00
Fernando Sahmkow
d45fed3030
shader_ir: Remove unnecessary constructors and use optional for ScanFlow result
2019-07-09 08:14:40 -04:00
Fernando Sahmkow
01b21ee1e8
shader_ir: Corrections, documenting and asserting control_flow
2019-07-09 08:14:39 -04:00
Fernando Sahmkow
d5533b440c
shader_ir: Unify blocks in decompiled shaders.
2019-07-09 08:14:39 -04:00
Fernando Sahmkow
926b80102f
shader_ir: Decompile Flow Stack
2019-07-09 08:14:38 -04:00
Fernando Sahmkow
459fce3a8f
shader_ir: propagate shader size to the IR
2019-07-09 08:14:37 -04:00
Fernando Sahmkow
8a6fc529a9
shader_ir: Implement BRX & BRA.CC
2019-07-09 08:14:37 -04:00
Fernando Sahmkow
c218ae4b02
shader_ir: Remove the old scanner.
2019-07-09 08:14:36 -04:00
Fernando Sahmkow
8af6e6a052
shader_ir: Implement a new shader scanner
2019-07-09 08:14:36 -04:00
Lioncash
c04785c928
gl_rasterizer: Amend documentation comment for ConfigureFramebuffers()
...
must_reconfigure isn't a parameter for this function any more, so it can
be replaced with current_state.
While we're at it, we can make the parameters of the declaration match
the same name as the ones in the definition.
2019-07-09 02:08:15 -04:00
Michael Scire
697206092e
Prevent merging of device mapped memory blocks.
...
This sets the DeviceMapped attribute for GPU-mapped memory blocks,
and prevents merging device mapped blocks. This prevents memory
mapped from the gpu from having its backing address changed by
block coalesce.
2019-07-08 22:52:05 -07:00
ReinUsesLisp
c9d886c84e
gl_shader_decompiler: Implement gl_ViewportIndex and gl_Layer in vertex shaders
...
This commit implements gl_ViewportIndex and gl_Layer in vertex and
geometry shaders. In the case it's used in a vertex shader, it requires
ARB_shader_viewport_layer_array. This extension is available on AMD and
Nvidia devices (mesa and proprietary drivers), but not available on
Intel on any platform. At the moment of writing this description I don't
know if this is a hardware limitation or a driver limitation.
In the case that ARB_shader_viewport_layer_array is not available,
writes to these registers on a vertex shader are ignored, with the
appropriate logging.
2019-07-07 20:42:55 -03:00
Tobias
be020f7621
Delete decode_integer_set.cpp
2019-07-07 21:40:33 +02:00
ReinUsesLisp
d0966b9f7c
shader/texture: Add F16 support for TLDS
2019-07-07 16:05:56 -03:00
Lioncash
cbdd6cd1c0
vk_sampler_cache: Remove unused includes
...
These are no longer used within this header, so they can be removed.
2019-07-07 13:40:36 -04:00
Lioncash
4b27680639
video_core: Add missing override specifiers
2019-07-07 13:38:39 -04:00
ReinUsesLisp
86a874a2fc
vk_scheduler: Drop execution context in favor of views
...
Instead of passing by copy an execution context through out the whole
Vulkan call hierarchy, use a command buffer view and fence view
approach.
This internally dereferences the command buffer or fence forcing the
user to be unable to use an outdated version of it on normal usage.
It is still possible to keep store an outdated if it is casted to
VKFence& or vk::CommandBuffer.
While changing this file, add an extra parameter for Flush and Finish to
allow releasing the fence from this calls.
2019-07-07 03:30:22 -03:00
ReinUsesLisp
79a23ca5f0
buffer_cache: Avoid [[nodiscard]] to make clang-format happy
2019-07-06 01:17:05 -03:00
ReinUsesLisp
83050c9495
buffer_cache: Try to fix MinGW build
2019-07-06 01:14:05 -03:00
ReinUsesLisp
f7691ebe57
gl_rasterizer: Fix nullptr dereference on disabled buffers
2019-07-06 00:37:56 -03:00
ReinUsesLisp
7ecf64257a
gl_rasterizer: Minor style changes
2019-07-06 00:37:55 -03:00
ReinUsesLisp
9cdc576f60
gl_rasterizer: Fix vertex and index data invalidations
2019-07-06 00:37:55 -03:00
ReinUsesLisp
1fa21fa192
gl_buffer_cache: Implement with generic buffer cache
2019-07-06 00:37:55 -03:00
ReinUsesLisp
32c0212b24
buffer_cache: Implement a generic buffer cache
...
Implements a templated class with a similar approach to our current
generic texture cache. It is designed to be compatible with Vulkan and
OpenGL,
2019-07-06 00:37:55 -03:00
ReinUsesLisp
2bcae41a73
gl_buffer_cache: Remove global system getters
2019-07-06 00:37:55 -03:00
ReinUsesLisp
02ab844934
gl_device: Query SSBO alignment
2019-07-06 00:37:55 -03:00
ReinUsesLisp
d14fbfb9b5
gl_buffer_cache: Implement flushing
2019-07-06 00:37:55 -03:00
ReinUsesLisp
345f852bdb
gl_rasterizer: Drop gl_global_cache in favor of gl_buffer_cache
2019-07-06 00:37:55 -03:00
ReinUsesLisp
8155b12d3d
gl_buffer_cache: Rework to support internalized buffers
2019-07-06 00:37:55 -03:00
ReinUsesLisp
f8ba72d491
gl_buffer_cache: Store in CachedBufferEntry the used buffer handle
2019-07-06 00:37:55 -03:00
ReinUsesLisp
b54fb8fc4c
gl_buffer_cache: Return used buffer from Upload function
2019-07-06 00:37:55 -03:00
ReinUsesLisp
a6d2f52fc3
gl_rasterizer: Add some commentaries
2019-07-06 00:37:55 -03:00
ReinUsesLisp
2b9d4088ec
gl_rasterizer: Make DrawParameters rasterizer instance const
2019-07-06 00:37:55 -03:00
ReinUsesLisp
2e39c20da5
gl_rasterizer: Move index buffer uploading to its own method
2019-07-06 00:37:55 -03:00
Fernando Sahmkow
d20ede40b1
NVServices: Styling, define constructors as explicit and corrections
2019-07-05 15:49:32 -04:00
Fernando Sahmkow
b391e5f638
NVFlinger: Correct GCC compile error
2019-07-05 15:49:31 -04:00
Fernando Sahmkow
0335a25d1f
NVServices: Make NVEvents Automatic according to documentation.
2019-07-05 15:49:29 -04:00
Fernando Sahmkow
7d1b974bca
GPU: Correct Interrupts to interrupt on syncpt/value instead of event, mirroring hardware
2019-07-05 15:49:26 -04:00
Fernando Sahmkow
f2e026a1d8
gpu_asynch: Simplify synchronization to a simpler consumer->producer scheme.
2019-07-05 15:49:20 -04:00
Fernando Sahmkow
0706d633bf
nv_host_ctrl: Make Sync GPU variant always return synced result.
2019-07-05 15:49:20 -04:00
Fernando Sahmkow
600dddf88d
Async GPU: do invalidate as synced operation
...
Async GPU: Always invalidate synced.
2019-07-05 15:49:19 -04:00
Fernando Sahmkow
c13433aee4
Gpu: use an std mutex instead of a spin_lock to guard syncpoints
2019-07-05 15:49:18 -04:00
Fernando Sahmkow
eef55f493b
Gpu: Mark areas as protected.
2019-07-05 15:49:16 -04:00
Fernando Sahmkow
a45643cb3b
nv_services: Stub CtrlEventSignal
2019-07-05 15:49:15 -04:00
Fernando Sahmkow
8942047d41
Gpu: Implement Hardware Interrupt Manager and manage GPU interrupts
2019-07-05 15:49:14 -04:00
Fernando Sahmkow
82b829625b
video_core: Implement GPU side Syncpoints
2019-07-05 15:49:11 -04:00
Zach Hilman
772c86a260
Merge pull request #2601 from FernandoS27/texture_cache
...
Implement a new Texture Cache
2019-07-05 13:39:13 -04:00
Fernando Sahmkow
3b9d89839d
texture_cache: Address Feedback
2019-07-05 09:46:53 -04:00
Fernando Sahmkow
30b176f92b
texture_cache: Correct Texture Buffer Uploading
2019-07-04 19:38:19 -04:00
Zach Hilman
ad50cd7df9
gl_shader_cache: Make CachedShader constructor private
...
Fixes missing review comments introduced.
2019-07-03 20:39:46 -04:00
Zach Hilman
da5a537029
Merge pull request #2563 from ReinUsesLisp/shader-initializers
...
gl_shader_cache: Use static constructors for CachedShader initialization
2019-07-03 20:20:05 -04:00
Fernando Sahmkow
4705d1b523
rasterizer_cache: Protect inherited caches from submission level
2019-07-01 04:32:01 -04:00
ReinUsesLisp
6e1db6b703
texture_cache: Pack sibling queries inside a method
2019-06-29 20:47:46 -03:00
ReinUsesLisp
8eae66907e
texture_cache: Use std::vector reservation for sampled_textures
2019-06-29 20:10:31 -03:00
ReinUsesLisp
f6f1a8f26a
texture_cache: Style changes
2019-06-29 19:52:37 -03:00
ReinUsesLisp
dd9ace502b
texture_cache: Use std::array for siblings_table
2019-06-29 18:54:13 -03:00
ReinUsesLisp
3f3c3ca5f9
texture_cache: Address feedback
2019-06-29 17:29:39 -03:00
Fernando Sahmkow
223ca80753
texture_cache: Correct variable naming.
2019-06-25 19:35:08 -04:00
Fernando Sahmkow
5aeabd9a17
gl_texture_cache: Correct asserts
2019-06-25 19:26:59 -04:00
Fernando Sahmkow
88bc39374f
texture_cache: Corrections, documentation and asserts
2019-06-25 18:36:19 -04:00
Fernando Sahmkow
c0abc7124d
surface_params: Corrections, asserts and documentation.
2019-06-25 18:03:25 -04:00
Fernando Sahmkow
fb234560b0
copy_params: use constexpr for constructor
2019-06-25 17:42:50 -04:00
Fernando Sahmkow
18d24fbdd0
gl_texture_cache: Corrections and fixes
2019-06-25 17:40:08 -04:00
Fernando Sahmkow
36665ce0b2
gl_resource_manager: Correct MakeStreamCopy
2019-06-25 17:32:04 -04:00
Fernando Sahmkow
58c8a44e7a
texture_cache: Query MemoryManager from the system
2019-06-25 17:26:00 -04:00
ReinUsesLisp
7565389700
texture_cache: Include "core/core.h"
2019-06-24 02:15:57 -03:00
ReinUsesLisp
e723441e37
gl_texture_cache: Explicitly add indirect include
2019-06-24 02:13:55 -03:00
ReinUsesLisp
34841a41c3
texture_cache/surface_view: Address feedback
2019-06-24 02:09:56 -03:00
ReinUsesLisp
0837290992
texture_cache/surface_base: Address feedback
2019-06-24 02:08:52 -03:00
ReinUsesLisp
75de730e28
video_core/surface: Address feedback
2019-06-24 02:07:11 -03:00
ReinUsesLisp
10a83653ee
decode/texture: Address feedback
2019-06-24 02:05:05 -03:00
ReinUsesLisp
4504302abc
renderer_opengl/utils: Remove unused includes and unused forward declaration
2019-06-24 02:03:37 -03:00
ReinUsesLisp
4b2ff1e00e
gl_texture_cache: Address some feedback
2019-06-24 02:01:44 -03:00
ReinUsesLisp
0b6df52109
gl_shader_disk_cache: Address feedback
2019-06-24 01:59:32 -03:00
ReinUsesLisp
b8b05a484a
gl_shader_decompiler: Address feedback
2019-06-24 01:56:38 -03:00
ReinUsesLisp
4d63f97945
shader_bytecode: Include missing <array>
2019-06-24 01:51:02 -03:00
bunnei
a9f3c54871
Merge pull request #2579 from ReinUsesLisp/fix-aoffi-test
...
gl_device: Fix TestVariableAoffi test
2019-06-21 15:28:55 -04:00
Fernando Sahmkow
d1812316e1
texture_cache: Style and Corrections
2019-06-20 21:24:47 -04:00
Fernando Sahmkow
51ba60b27e
shader_cache: Correct versioning and size calculation.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
97c8c9f49a
texture_cache: Eliminate linear textures fallthrough
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
6acdae0e4c
texture_cache: Correct format R16U as sibling
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
d7587842eb
texture_cache: Implement texception detection and texture barriers.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
198a0395bb
texture_cache: Corrections to buffers and shadow formats use.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
fed773a86c
texture_cache: Implement Irregular Views in surfaces
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
082740d34d
surface: Correct format S8Z24
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
03d489dcf5
texture_cache: Initialize all siblings to invalid pixel format.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
9422cf7c10
gl_texture_cache: Use Stream Buffers instead of Persistant for Buffer Copies.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
fac3706253
gl_texture_cache: Correct Image Blit
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
7232a1ed16
decoders: correct block calculation
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
3dd7643214
texture_cache: Use siblings textures on Rebuild and fix possible error on blitting
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
4db28f72f6
texture_cache: Remove old rasterizer cache
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
2d83553ea7
texture_cache: Implement siblings texture formats.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
cb728797b0
fermi2d: Correct Origin Mode
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
a56f687793
texture_cache: correct texture buffer on surface params
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
b01f9c8a70
texture_cache: eliminate accelerated depth->color/color->depth copies due to driver instability.
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
561ce29c98
texture_cache: correct mutex locks
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
b7de31ac97
shader_ir: Fix image copy rebase issues
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
6f69f06873
texture_cache: Don't Image Copy if component types differ
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
9f755218a1
texture_cache: move some large methods to cpp files
2019-06-20 21:38:34 -03:00
Fernando Sahmkow
3809041c24
texture_cache: Optimize GetSurface and use references on functions that don't change a surface.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
60bf761afb
texture_cache: Implement Buffer Copy and detect Turing GPUs Image Copies
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
228f516bb4
texture_cache uncompress-compress is untopological.
...
This makes conflicts between non compress and compress textures to be
auto recycled. It also limits the amount of mipmaps a texture can have
if it goes above it's limit.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
9251354152
texture_cache: Correct copying between compressed and uncompressed formats
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
0966665fc2
texture_cache: Only load on recycle with accurate GPU.
...
Testing so far has proven this to be quite safe as texture memory read
added a 2-5ms load to the current cache.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
ea1525dab1
Fix rebase errors
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
bdf9faab33
texture_cache: Handle uncontinuous surfaces.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
e60ed2bb3e
texture_cache: return null surface on invalid address
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
fcac55d5bf
texture_cache: Add checks for texture buffers.
2019-06-20 21:38:33 -03:00
Fernando Sahmkow
175aa343ff
texture_cache: Fermi2D reform and implement View Mirage
...
This also does some fixes on compressed textures reinterpret and on the
Fermi2D engine in general.
2019-06-20 21:38:33 -03:00
ReinUsesLisp
1bf4154e7d
gl_shader_decompiler: Implement image binding settings
2019-06-20 21:38:33 -03:00
ReinUsesLisp
9097301d92
shader: Implement bindless images
2019-06-20 21:38:33 -03:00
ReinUsesLisp
06c4ce8645
shader: Decode SUST and implement backing image functionality
2019-06-20 21:38:33 -03:00
ReinUsesLisp
007ffbef1c
gl_rasterizer: Track texture buffer usage
2019-06-20 21:38:33 -03:00
ReinUsesLisp
58c0d37422
video_core: Make ARB_buffer_storage a required extension
2019-06-20 21:36:12 -03:00
ReinUsesLisp
07f7ce1da2
gl_rasterizer_cache: Use texture buffers to emulate texture buffers
2019-06-20 21:36:12 -03:00
ReinUsesLisp
b8c75a845b
maxwell_3d: Partially implement texture buffers as 1D textures
2019-06-20 21:36:12 -03:00
ReinUsesLisp
6c81c8f5b7
gl_shader_decompiler: Allow 1D textures to be texture buffers
2019-06-20 21:36:12 -03:00
ReinUsesLisp
4e81fc8296
shader: Implement texture buffers
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d267948a73
texture_cache: loose TryReconstructSurface when accurate GPU is not on.
...
Also corrects some asserts.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6162cb922e
texture_cache: Document the most important methods.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
4530511ee4
texture_cache: Try to Reconstruct Surface on bigger than overlap.
...
This fixes clouds in SMO Cap Kingdom and lens on Cloud Kingdom.
Also moved accurate_gpu setting check to Pick Strategy
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
a79831d9d0
texture_cache: Implement Guard mechanism
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
7731a0e2d1
texture_cache: General Fixes
...
Fixed ASTC mipmaps loading
Fixed alignment on openGL upload/download
Fixed Block Height Calculation
Removed unalign_height
2019-06-20 21:36:12 -03:00
ReinUsesLisp
c2ed348bdd
surface_params: Ensure pitch is always written to avoid surface leaks
2019-06-20 21:36:12 -03:00
ReinUsesLisp
9098905dd1
gl_framebuffer_cache: Use a hashed struct to cache framebuffers
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d65a4af895
texture_cache return invalid buffer on deactivated color_mask
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6bd034eae9
engine_upload: Addapt to new Texture Cache
2019-06-20 21:36:12 -03:00
ReinUsesLisp
2131f71573
surface_params: Optimize CreateForTexture
...
Instead of using Common::AlignUp, use Common::AlignBits to align the
texture compression factor.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
41b4674458
gl_texture_cache: Make main views be proxy textures instead of a full view.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
07cc7e0c12
texture_cache: Add ASync Protections
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
1bbc9debfb
Remove Framebuffer reconfiguration and restrict rendertarget protection
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
5192521dc3
texture_cache: Implement GPU Dirty Flags
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
94f2be5473
texture_cache: Optimize GetMipBlockHeight and GetMipBlockDepth
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
a4a58be2d4
texture_cache: Implement L1_Inner_cache
2019-06-20 21:36:12 -03:00
ReinUsesLisp
345e73f2fe
video_core: Use un-shifted block sizes to avoid integer divisions
...
Instead of storing all block width, height and depths in their shifted
form:
block_width = 1U << block_shift;
Store them like they are provided by the emulated hardware (their
block_shift form). This way we can avoid doing the costly
Common::AlignUp operation to align texture sizes and drop CPU integer
divisions with bitwise logic (defined in Common::AlignBits).
2019-06-20 21:36:12 -03:00
ReinUsesLisp
28d7c2f5a5
texture_cache: Change internal cache from lists to vectors
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
b347543e83
Reduce amount of size calculations.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
4e2071b6d9
texture_cache: Correct premature texceptions
...
Due to our current infrastructure, it is possible for a mipmap to be set
on as a render target before a texception of that mipmap's superset be
set afterwards. This is problematic as we rely on texture views to set
up texceptions and protecting render targets targets for 3D texture
rendering.
One simple solution is to configure framebuffers after texture setup but
this brings other problems. This solution, forces a reconfiguration of
the framebuffers after such event happens.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
ba677ccb5a
texture_cache: Implement guest flushing
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
de0b1cb2b2
Fixes to mipmap's process and reconstruct process
2019-06-20 21:36:12 -03:00
ReinUsesLisp
e0002599ac
surface_base: Add parenthesis to EmplaceOverview's predicate
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
324e470879
Texture Cache: Implement Blitting and Fermi Copies
2019-06-20 21:36:12 -03:00
ReinUsesLisp
549fd18ac4
surface_view: Add constructor for ViewParams
2019-06-20 21:36:12 -03:00
ReinUsesLisp
16e8625a30
surface_base: Split BreakDown into layered and non-layered variants
2019-06-20 21:36:12 -03:00
ReinUsesLisp
2b30000a1e
surface_base: Silence truncation warnings and minor renames and reordering
2019-06-20 21:36:12 -03:00
ReinUsesLisp
03d10ea3b4
copy_params: Use constructor instead of C-like initialization
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
1af4414861
Correct Mipmaps View method in Texture Cache
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
d86f9cd709
Change texture_cache chaching from GPUAddr to CacheAddr
...
This also reverses the changes to make invalidation and flushing through
the GPU address.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
b711cdce78
Corrections to Structural Matching
...
The texture will now be reconstructed if the width only matches on GoB
alignment.
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
bc930754cc
Implement Texture Cache V2
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
3d471e732d
Correct Surface Base and Views for new Texture Cache
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
3b26206dbd
Add OGLTextureView
2019-06-20 21:36:12 -03:00
Fernando Sahmkow
6b0695b3cd
Deglobalize Memory Manager on texture cahe and Implement Invalidation and Flushing using GPUVAddr
2019-06-20 21:36:11 -03:00
ReinUsesLisp
6c410104f4
texture_cache: Remove execution context copies from the texture cache
...
This is done to simplify the OpenGL implementation, it is needed for
Vulkan.
2019-06-20 21:36:11 -03:00
ReinUsesLisp
fa59a7b4d8
gl_texture_cache: Implement fermi copies
2019-06-20 21:36:11 -03:00
ReinUsesLisp
1b4503c571
texture_cache: Split texture cache into different files
2019-06-20 21:36:11 -03:00
ReinUsesLisp
5f3aacdc37
texture_cache: Move staging buffer into a generic implementation
2019-06-20 21:36:11 -03:00
ReinUsesLisp
2787a0c287
texture_cache: Flush 3D textures in the order they are drawn
2019-06-20 21:36:11 -03:00
ReinUsesLisp
4b396f375c
gl_texture_cache: Minor changes
2019-06-20 21:36:11 -03:00
ReinUsesLisp
0cefb7bcb4
gl_texture_cache: Add copy from multiple overlaps into a single surface
2019-06-20 21:36:11 -03:00
ReinUsesLisp
84139586c9
gl_texture_cache: Attach surface textures instead of views
2019-06-20 21:36:11 -03:00
ReinUsesLisp
fb94871791
gl_texture_cache: Add fast copy path
2019-06-20 21:36:11 -03:00
ReinUsesLisp
bab21e8cb3
gl_texture_cache: Initial implementation
2019-06-20 21:36:11 -03:00
bunnei
c28694d907
Merge pull request #2591 from lioncash/record
...
core: Remove unused CiTrace source files
2019-06-19 22:28:26 -04:00
Lioncash
61d2498f00
core: Remove unused CiTrace source files
...
These source files have been unused for the entire lifecycle of the
project. They're a hold-over from Citra and only add to the build time
of the project, so they can be removed.
There's also likely no way this would ever work in yuzu in its current
form without revamping quite a bit of it, given how different the GPU on
the Switch is compared to the 3DS.
2019-06-18 16:57:59 -04:00
bunnei
c7b5c245e1
Merge pull request #2562 from ReinUsesLisp/split-cbuf-upload
...
video_core/engines: Move ConstBufferInfo out of Maxwell3D
2019-06-17 22:35:04 -04:00
Zach Hilman
c0e7b91145
Merge pull request #2538 from ReinUsesLisp/ssy-pbk
...
shader: Split SSY and PBK stack
2019-06-15 20:30:13 -04:00
ReinUsesLisp
ee81fb94cd
gl_device: Fix TestVariableAoffi test
...
This test is intended to be invalid GLSL, but it was being invalid in
two points instead of one. The intention is to use a non-immediate
parameter in a textureOffset like function.
The problem is that this shader was being compiled as a separable
shader object and the text was writting to gl_Position without a
redeclaration, being invalid GLSL.
Address that issue by using a user-defined output attribute.
2019-06-11 23:02:50 -03:00
bunnei
f981efdf8d
Merge pull request #2572 from FernandoS27/gpu-mem
...
GPUVM: Correct GPU VM virtual address space
2019-06-11 21:09:57 -04:00
Fernando Sahmkow
f79823fda7
GPUVM: Correct GPU VM virtual address space
2019-06-09 17:47:15 -04:00
ReinUsesLisp
528c15051c
kepler_compute: Use std::array for cbuf info
2019-06-07 20:36:22 -03:00
ReinUsesLisp
17d5fb6d06
kepler_compute: Fix block_dim_x encoding
2019-06-07 20:35:46 -03:00
ReinUsesLisp
4ec8a3df08
gl_shader_cache: Use static constructors for CachedShader initialization
2019-06-07 20:20:22 -03:00
ReinUsesLisp
5669ff3cbd
gl_rasterizer: Remove unused parameters in descriptor uploads
2019-06-07 19:52:16 -03:00
ReinUsesLisp
2f2a61887a
video_core/engines: Move ConstBufferInfo out of Maxwell3D
2019-06-07 19:47:15 -03:00
Zach Hilman
de33ad25f5
Merge pull request #2514 from ReinUsesLisp/opengl-compat
...
video_core: Drop OpenGL core in favor of OpenGL compatibility
2019-06-07 17:23:25 -04:00
ReinUsesLisp
fe8e6618f2
shader: Split SSY and PBK stack
...
Hardware testing revealed that SSY and PBK push to a different stack,
allowing code like this:
SSY label1;
PBK label2;
SYNC;
label1: PBK;
label2: EXIT;
2019-06-07 02:18:27 -03:00
ReinUsesLisp
769a50661a
shader/node: Minor changes
...
Reflect std::shared_ptr nature of Node on initializers and remove
constant members in nodes.
Add some commentaries.
2019-06-06 20:03:33 -03:00
ReinUsesLisp
e1b3be7ced
shader: Move Node declarations out of the shader IR header
...
Analysis passes do not have a good reason to depend on shader_ir.h to
work on top of nodes. This splits node-related declarations to their own
file and leaves the IR in shader_ir.h
2019-06-06 20:02:37 -03:00
ReinUsesLisp
bf4dfb3ad4
shader: Use shared_ptr to store nodes and move initialization to file
...
Instead of having a vector of unique_ptr stored in a vector and
returning star pointers to this, use shared_ptr. While changing
initialization code, move it to a separate file when possible.
This is a first step to allow code analysis and node generation beyond
the ShaderIR class.
2019-06-05 20:41:52 -03:00
bunnei
a20ba09bfd
Merge pull request #2520 from ReinUsesLisp/vulkan-refresh
...
vk_device,vk_shader_decompiler: Miscellaneous changes
2019-06-05 18:10:00 -04:00
bunnei
55c5029171
Merge pull request #2540 from ReinUsesLisp/remove-guest-position
...
gl_shader_decompiler: Remove guest "position" varying
2019-06-05 18:07:23 -04:00
bunnei
0bcc305797
Merge pull request #2512 from ReinUsesLisp/comp-indexing
...
gl_shader_decompiler: Pessimize uniform buffer access on AMD's prorpietary driver
2019-06-05 18:02:30 -04:00
Zach Hilman
81e09bb121
Merge pull request #2545 from lioncash/timing
...
core/core_timing_util: Use std::chrono types for specifying time units
2019-06-05 15:52:37 -04:00
Zach Hilman
dd4fe0dab1
Merge pull request #2534 from ReinUsesLisp/shader-cleanup
...
gl_shader_cache: Minor style changes
2019-06-05 15:28:34 -04:00
Lioncash
42f5fd0ab3
core/core_timing_util: Use std::chrono types for specifying time units
...
Makes the interface more type-safe and consistent in terms of return
values.
2019-06-04 20:31:24 -04:00
Fernando Sahmkow
a32c52b1d8
shader_bytecode: Mark EXIT as flow instruction
2019-06-04 12:18:35 -04:00
ReinUsesLisp
0935c2d97b
gl_shader_decompiler: Remove guest "position" varying
...
"position" was being written but not read anywhere besides geometry
shaders, where it had the same value as gl_Position.
This commit replaces "position" with gl_Position, reducing the
complexity of our code and the emitted GLSL code.
2019-06-03 01:01:34 -03:00
ReinUsesLisp
e72b9044a0
gl_shader_cache: Store a system class and drop global accessors
2019-05-30 14:01:40 -03:00
ReinUsesLisp
ad321564ed
gl_shader_cache: Add commentaries explaining the intention in shaders creation
2019-05-30 13:58:38 -03:00
ReinUsesLisp
838b6d2ff8
gl_shader_cache: Flip if condition in GetStageProgram to reduce indentation
2019-05-30 13:56:03 -03:00
ReinUsesLisp
6ac4490751
gl_buffer_cache: Remove unused ReserveMemory method
2019-05-30 13:21:01 -03:00
ReinUsesLisp
a89cc0bafc
maxwell_to_gl: Use GL_CLAMP to emulate Clamp wrap mode
2019-05-30 13:21:01 -03:00
ReinUsesLisp
b76df62c00
gl_rasterizer: Move alpha testing to the OpenGL pipeline
...
Removes the alpha testing code from each fragment shader invocation.
2019-05-30 13:21:01 -03:00
ReinUsesLisp
df509486c4
gl_rasterizer: Use GL_QUADS to emulate quads rendering
2019-05-30 13:21:01 -03:00
bunnei
e3608578e4
Merge pull request #2446 from ReinUsesLisp/tid
...
shader: Implement S2R Tid{XYZ} and CtaId{XYZ}
2019-05-29 12:21:17 -04:00
ReinUsesLisp
21c0b4dec8
gl_device: Add commentary to AOFFI unit test source code
...
The intention behind this commit is to hint someone inspecting an
apitrace dump to ignore this ill-formed GLSL code.
2019-05-27 00:55:57 -03:00
ReinUsesLisp
84928e6d67
gl_shader_gen: Always declare extensions after the version declaration
...
This addresses a bug on geometry shaders where code was being written
before all #extension declarations were done. Ref to #2523
2019-05-27 00:51:35 -03:00
ReinUsesLisp
f424b46036
vk_device: Let formats array type be deduced
2019-05-26 03:09:06 -03:00
ReinUsesLisp
a4c5e3e339
vk_shader_decompiler: Misc fixes
...
Fix missing OpSelectionMerge instruction. This caused devices loses on
most hardware, Intel didn't care.
Fix [-1;1] -> [0;1] depth conversions.
Conditionally use VK_EXT_scalar_block_layout. This allows us to use
non-std140 layouts on UBOs.
Update external Vulkan headers.
2019-05-26 01:48:04 -03:00
ReinUsesLisp
dec3c981d0
vk_device: Enable features when available and misc changes
...
Keeps track of native ASTC support, VK_EXT_scalar_block_layout
availability and SSBO range.
Check for independentBlend and vertexPipelineStorageAndAtomics as a
required feature. Always enable it.
Use vk::to_string format to log Vulkan enums.
Style changes.
2019-05-26 01:41:34 -03:00
Lioncash
5a4564bd8e
renderer_opengl/utils: Use a std::string_view with LabelGLObject()
...
Uses a std::string_view instead of a std::string, given the pointed to
string isn't modified and is only used in a formatting operation.
This is nice because a few usages directly supply a string literal to
the function, allowing these usages to otherwise not heap allocate,
unlike the std::string overloads.
While we're at it, we can combine the address formatting into a single
formatting call.
2019-05-24 23:50:10 -04:00
bunnei
68c9c9222d
Merge pull request #2358 from ReinUsesLisp/parallel-shader
...
gl_shader_cache: Use shared contexts to build shaders in parallel at boot
2019-05-24 22:42:08 -04:00
bunnei
1a2d90ab09
Merge pull request #2485 from ReinUsesLisp/generic-memory
...
shader/memory: Implement generic memory stores and loads (ST and LD)
2019-05-24 18:24:26 -04:00
ReinUsesLisp
d8827b07b5
gl_shader_decompiler: Use an if based cbuf indexing for broken drivers
...
The following code is broken on AMD's proprietary GLSL compiler:
```glsl
uint idx = ...;
vec4 values = ...;
float some_value = values[idx & 3];
```
It index the wrong components, to fix this the following pessimized code
is emitted when that bug is present:
```glsl
uint idx = ...;
vec4 values = ...;
float some_value;
if ((idx & 3) == 0) some_value = values.x;
if ((idx & 3) == 1) some_value = values.y;
if ((idx & 3) == 2) some_value = values.z;
if ((idx & 3) == 3) some_value = values.w;
```
2019-05-24 02:47:56 -03:00
ReinUsesLisp
46177901b8
gl_device: Add test to detect broken component indexing
...
Component indexing on AMD's proprietary driver is broken. This commit adds
a test to detect when we are on a driver that can't successfully manage
component indexing.
It dispatches a dummy draw with just one vertex shader that writes to an
indexed SSBO from the GPU with data sent through uniforms, it then reads
that data from the CPU and compares the expected output.
2019-05-24 02:47:56 -03:00
Lioncash
b6dcb1ae4d
shader/shader_ir: Make Comment() take a std::string by value
...
This allows for forming comment nodes without making unnecessary copies
of the std::string instance.
e.g. previously:
Comment(fmt::format("Base address is c[0x{:x}][0x{:x}]",
cbuf->GetIndex(), cbuf_offset));
Would result in a copy of the string being created, as CommentNode()
takes a std::string by value (a const ref passed to a value parameter
results in a copy).
Now, only one instance of the string is ever moved around. (fmt::format
returns a std::string, and since it's returned from a function by value,
this is a prvalue (which can be treated like an rvalue), so it's moved
into Comment's string parameter), we then move it into the CommentNode
constructor, which then moves the string into its member variable).
2019-05-23 03:01:55 -03:00
Lioncash
228e58d0a5
shader/decode/*: Add missing newline to files lacking them
...
Keeps the shader code file endings consistent.
2019-05-23 02:55:52 -03:00
Lioncash
87b4c1ac5e
shader/decode/*: Eliminate indirect inclusions
...
Amends cases where we were using things that were indirectly being
satisfied through other headers. This way, if those headers change and
eliminate dependencies on other headers in the future, we don't have
cascading compilation errors.
2019-05-23 02:55:52 -03:00
Lioncash
195b54602f
shader/decode/memory: Remove left in debug pragma
2019-05-22 17:08:50 -04:00
Lioncash
de23847184
renderer_opengl/gl_shader_decompiler: Remove redundant name specification in format string
...
This accidentally slipped through a rebase.
2019-05-21 09:47:21 -04:00
ReinUsesLisp
69215b5a55
gl_shader_cache: Fix clang strict standard build issues
2019-05-20 22:46:05 -03:00
ReinUsesLisp
c03b8c4c19
gl_shader_cache: Use shared contexts to build shaders in parallel
2019-05-20 22:45:55 -03:00
ReinUsesLisp
75e7b45d69
shader/memory: Implement ST (generic memory)
2019-05-20 22:41:53 -03:00
ReinUsesLisp
f78ef617b6
shader/memory: Implement LD (generic memory)
2019-05-20 22:38:59 -03:00
bunnei
9a17b20896
Merge pull request #2494 from lioncash/shader-text
...
gl_shader_decompiler: Add AddLine() overloads with single function that forwards to libfmt
2019-05-20 20:42:40 -04:00
ReinUsesLisp
9c3461604c
shader: Implement S2R Tid{XYZ} and CtaId{XYZ}
2019-05-20 16:36:49 -03:00
ReinUsesLisp
ada79fa8ad
gl_shader_decompiler: Make GetSwizzle constexpr
2019-05-20 16:36:48 -03:00
Lioncash
58a0c13e34
gl_shader_decompiler: Tidy up minor remaining cases of unnecessary std::string concatenation
2019-05-20 14:14:48 -04:00
Lioncash
6fb29764d6
gl_shader_decompiler: Replace individual overloads with the fmt-based one
...
Gets rid of the need to special-case brace handling depending on the
overload used, and makes it consistent across the board with how fmt
handles them.
Strings with compile-time deducible strings are directly forwarded to
std::string's constructor, so we don't need to worry about the
performance difference here, as it'll be identical.
2019-05-20 14:14:48 -04:00
Lioncash
784d2b6c3d
gl_shader_decompiler: Utilize fmt overload of AddLine() where applicable
2019-05-20 14:14:44 -04:00
Fernando Sahmkow
911fafb967
Revert #2466
...
This reverts a tested behavior on delay slots not exiting if the exit
flag is set. Currently new tests are required in order to ensure this
behavior.
2019-05-19 16:04:44 -04:00
Lioncash
91ec251c4a
gl_shader_decompiler: Add AddLine() overload that forwards to fmt
...
In a lot of places throughout the decompiler, string concatenation via
operator+ is used quite heavily. This is usually fine, when not heavily
used, but when used extensively, can be a problem. operator+ creates an
entirely new heap allocated temporary string and given we perform
expressions like:
std::string thing = a + b + c + d;
this ends up with a lot of unnecessary temporary strings being created
and discarded, which kind of thrashes the heap more than we need to.
Given we utilize fmt in some AddLine calls, we can make this a part of
the ShaderWriter's API. We can make an overload that simply acts as a
passthrough to fmt.
This way, whenever things need to be appended to a string, the operation
can be done via a single string formatting operation instead of
discarding numerous temporary strings. This also has the benefit of
making the strings themselves look nicer and makes it easier to spot
errors in them.
2019-05-19 14:12:20 -04:00
bunnei
d49efbfb4a
Merge pull request #2441 from ReinUsesLisp/al2p
...
shader: Implement AL2P and ALD.PHYS
2019-05-19 14:02:58 -04:00
Hexagon12
b94b08fa6f
Merge pull request #2491 from FernandoS27/dma-fix
...
Dma_pusher: ASSERT on empty command_list
2019-05-19 16:27:15 +01:00
Hexagon12
f8b1e53369
Merge pull request #2452 from FernandoS27/raster-cache-fix
...
Correct possible error on Rasterizer Caches
2019-05-19 16:00:44 +01:00
Hexagon12
2aebbe9bf9
Merge pull request #2497 from lioncash/shader-ir
...
shader/shader_ir: Minor changes
2019-05-19 15:51:06 +01:00
Hexagon12
fadf66993c
Merge pull request #2495 from lioncash/cache
...
gl_shader_disk_cache: Minor cleanup
2019-05-19 15:50:23 +01:00
Fernando Sahmkow
9e98100c94
Dma_pusher: ASSERT on empty command_list
...
This is a measure to avoid crashes on command list reading as an empty
command_list is considered a NOP.
2019-05-19 10:48:31 -04:00
Hexagon12
18cdbdafa2
Merge pull request #2467 from lioncash/move
...
video_core/gpu_thread: Remove redundant copy constructor for CommandDataContainer
2019-05-19 15:20:37 +01:00
Hexagon12
9175bffbdb
Merge pull request #2466 from yuzu-emu/mme-exit-delay-slot
...
GPU/MMEInterpreter: Ignore the 'exit' flag when it's executed inside a delay slot.
2019-05-19 15:14:41 +01:00
Hexagon12
ac3775e6ae
Merge pull request #2468 from lioncash/deduction
...
yuzu: Remove explicit types from locks where applicable
2019-05-19 15:05:56 +01:00
Hexagon12
b54bd3f018
Merge pull request #2472 from FernandoS27/tic
...
maxwell_3d: reduce severity of different component formats assert.
2019-05-19 15:04:47 +01:00
Hexagon12
3bd5f01240
Merge pull request #2469 from lioncash/copyable
...
video_core/engines/maxwell_3d: Add is_trivially_copyable_v check for Regs
2019-05-19 15:02:17 +01:00
Sebastian Valle
a6ed792ac4
Merge pull request #2470 from lioncash/ranged-for
...
video_core/engines/maxwell_3d: Simplify for loops into ranged for loops within InitializeRegisterDefaults()
2019-05-19 09:01:19 -05:00
Hexagon12
4452195d41
Merge pull request #2480 from ReinUsesLisp/fix-quads
...
gl_rasterizer: Pass the right number of array quad vertices count
2019-05-19 14:58:49 +01:00
Hexagon12
8e9a1e4249
Merge pull request #2483 from ReinUsesLisp/fix-point-size
...
gl_rasterizer: Limit OpenGL point size to a minimum of 1
2019-05-19 14:57:05 +01:00
Sebastian Valle
dfddb12255
Merge pull request #2471 from lioncash/engine-upload
...
video_core/engines/engine_upload: Minor tidying
2019-05-19 08:54:42 -05:00
Sebastian Valle
f9ad88f9d7
Merge pull request #2484 from ReinUsesLisp/triangle-fan
...
maxwell_to_gl: Add TriangleFan primitive topology
2019-05-19 08:53:29 -05:00
Lioncash
e310d943b8
shader/shader_ir: Remove unnecessary inline specifiers
...
constexpr internally links by default, so the inline specifier is
unnecessary.
2019-05-19 08:23:15 -04:00
Lioncash
212b148923
shader/shader_ir: Simplify constructors for OperationNode
...
Many of these constructors don't even need to be templated. The only
ones that need to be templated are the ones that actually make use of
the parameter pack.
Even then, since std::vector accepts an initializer list, we can supply
the parameter pack directly to it instead of creating our own copy of
the list, then copying it again into the std::vector.
2019-05-19 08:23:14 -04:00
Lioncash
81e7e63080
shader/shader_ir: Remove unnecessary template parameter packs from Operation() overloads where applicable
...
These overloads don't actually make use of the parameter pack, so they
can be turned into regular non-template function overloads.
2019-05-19 08:23:14 -04:00
Lioncash
e09ee0ff23
shader/shader_ir: Mark tracking functions as const member functions
...
These don't actually modify instance state, so they can be marked as
const member functions
2019-05-19 08:23:09 -04:00
Lioncash
ce04ab38bb
shader/shader_ir: Place implementations of constructor and destructor in cpp file
...
Given the class contains quite a lot of non-trivial types, place the
constructor and destructor within the cpp file to avoid inlining
construction and destruction code everywhere the class is used.
2019-05-19 04:02:02 -04:00
Lioncash
3356ea5bc2
gl_shader_gen: std::move objects where applicable
...
Avoids performing copies into the pair being returned. Instead, we can
just move the resources into the pair, avoiding the need to make copies
of both the std::string and ShaderEntries struct.
2019-05-19 03:46:54 -04:00
Lioncash
0a7f09a99b
gl_shader_disk_cache: in-class initialize virtual file offset of ShaderDiskCacheOpenGL
...
Given the offset is assigned a fixed value in the constructor, we can
just assign it directly and get rid of the need to write the name of the
variable again in the constructor initializer list.
2019-05-19 02:55:18 -04:00
Lioncash
634b78a4c6
gl_shader_disk_cache: Default ShaderDiskCacheOpenGL's destructor in the cpp file
...
Given the disk shader cache contains non-trivial types, we should
default it in the cpp file in order to prevent inlining of the
complex destruction logic.
2019-05-19 02:50:50 -04:00
Lioncash
7fdc644c44
gl_shader_disk_cache: Make hash specializations noexcept
...
The standard library expects hash specializations that don't throw
exceptions. Make this explicit in the type to allow selection of better
code paths if possible in implementations.
2019-05-19 02:46:45 -04:00
Lioncash
683c4e523f
gl_shader_disk_cache: Remove redundant code string construction in LoadDecompiledEntry()
...
We don't need to load the code into a vector and then construct a string
over the data. We can just create a string with the necessary size ahead
of time, and read the data directly into it, getting rid of an
unnecessary heap allocation.
2019-05-19 02:46:44 -04:00
Lioncash
5e4c227608
gl_shader_disk_cache: Make variable non-const in decompiled entry case
...
std::move does nothing when applied to a const variable. Resources can't
be moved if the object is immutable. With this change, we don't end up
making several unnecessary heap allocations and copies.
2019-05-19 02:46:44 -04:00
Lioncash
f417be9d3b
gl_shader_disk_cache: Special-case boolean handling
...
Booleans don't have a guaranteed size, but we still want to have them
integrate into the disk cache system without needing to actually use a
different type. We can do this by supplying non-template overloads for
the bool type.
Non-template overloads always have precedence during function
resolution, so this is safe to provide.
This gets rid of the need to smatter ternary conditionals, as well as
the need to use u8 types to store the value in.
2019-05-19 02:46:38 -04:00
ReinUsesLisp
21ea8b2fcb
gl_rasterizer: Limit OpenGL point size to a minimum of 1
2019-05-18 03:07:29 -03:00
ReinUsesLisp
52340c3294
maxwell_to_gl: Add TriangleFan primitive topology
2019-05-17 19:58:02 -03:00
ReinUsesLisp
a652e58c54
gl_rasterizer: Pass the right number of array quad vertices count
2019-05-17 17:08:34 -03:00
Fernando Sahmkow
fc975e9021
maxwell_3d: reduce sevirity of different component formats assert.
...
This was reduced due to happening on most games and at such constant
rate that it affected performance heavily for the end user. In general,
we are well aware of the assert and an implementation is already
planned.
2019-05-14 17:12:54 -04:00
Lioncash
b01cce716e
video_core/engines/engine_upload: Amend constructor initializer list order
...
Silences a -Wreorder warning.
2019-05-14 13:43:28 -04:00
Lioncash
9b6d993e52
video_core/engines/engine_upload: Default destructor in the cpp file
...
Avoids inlining destruction logic where applicable, and also makes
forward declarations not cause unexpected compilation errors depending
on where the State class is used.
2019-05-14 13:41:41 -04:00
Lioncash
ec1c69258a
video_core/engines/engine_upload: Remove unnecessary const on parameters in function declarations
...
These only apply in the definition of the function. They can be omitted
from the declaration.
2019-05-14 13:40:09 -04:00
Lioncash
0f83c8dffa
video_core/engines/engine_upload: Remove unnecessary includes
2019-05-14 13:39:04 -04:00
Lioncash
5db1b54b58
video_core/engines/maxwell3d: Get rid of three magic values in CallMethod()
...
We can use the named constant instead of using 32 directly.
2019-05-14 09:02:47 -04:00
Lioncash
48ce5880a0
video_core/engines/maxwell_3d: Simplify for loops into ranged for loops within InitializeRegisterDefaults()
...
Lessens the amount of code that needs to be read, and gets rid of the
need to introduce an indexing variable. Instead, we just operate on the
objects directly.
2019-05-14 08:53:19 -04:00
Lioncash
c212fc9b2c
video_core/engines/maxwell_3d: Add is_trivially_copyable_v check for Regs
...
std::memset is used to clear the entire register structure, which
requires that the Regs struct be trivially copyable (otherwise undefined
behavior is invoked). This prevents the case where a non-trivial type is
potentially added to the struct.
2019-05-14 08:47:56 -04:00
Lioncash
d6d809db87
yuzu: Remove explicit types from locks where applicable
...
With C++17's deduction guides, the type doesn't need to be explicitly
specified within locking primitives anymore.
2019-05-14 08:18:48 -04:00
Lioncash
c5129a3a58
video_core/gpu_thread: Remove redundant copy constructor for CommandDataContainer
...
std::move within a copy constructor (on a data member that isn't
mutable) will always result in a copy. Because of that, the behavior of
this copy constructor is identical to the one that would be generated
automatically by the compiler, so we can remove it.
2019-05-14 08:09:17 -04:00
Mat M
c4d549919f
Merge pull request #2462 from lioncash/video-mm
...
video_core/memory_manager: Minor tidying
2019-05-14 06:40:33 -04:00
Mat M
dadcf317dc
Merge pull request #2461 from lioncash/unused-var
...
video_core: Remove a few unused variables and functions
2019-05-14 06:36:26 -04:00
Rodrigo Locatti
940a71089d
Merge pull request #2413 from FernandoS27/opt-gpu
...
Rasterizer Cache: refactor flushing & optimize memory usage of surfaces
2019-05-13 23:01:59 -03:00
Sebastian Valle
9ef45f00bf
GPU/MMEInterpreter: Ignore the 'exit' flag when it's executed inside a delay slot.
...
It seems instructions marked with the 'exit' flag will not cause an exit when executed within a delay slot.
This was hwtested by fincs.
2019-05-12 16:38:51 -05:00
Lioncash
716fbaef74
video_core/memory_manager: Mark IsBlockContinuous() as a const member function
...
Corrects the typo in its name and marks the function as a const member
function, given it doesn't actually modify memory manager state.
2019-05-09 19:14:36 -04:00
Lioncash
d4bcd006b2
video_core/memory_manager: Mark the constructor as explicit
...
Prevents implicit converting constructions of the memory manager.
2019-05-09 19:10:26 -04:00
Lioncash
fd12788967
video_core/memory_manager: Default the destructor within the cpp file
...
Makes the class less surprising when it comes to forward declaring the
type, and also prevents inlining the destruction code of the class,
given it contains non-trivial types.
2019-05-09 19:10:13 -04:00
Lioncash
53afe47cec
video_core/memory_manager: Amend doxygen comments
...
Corrects references to non-existent parameters and corrects typos.
2019-05-09 19:09:19 -04:00
Lioncash
5235b053b4
video_core/memory_manager: Remove superfluous const from function declarations
...
These are able to be omitted from the declaration of functions, since
they don't do anything at the type system level. The definitions of the
functions can retain the use of const though, since they make the
variables immutable in the implementation of the function where they're
used.
2019-05-09 18:59:49 -04:00
Lioncash
b6408e9671
video_core/renderer_opengl/gl_shader_cache: Correct member initialization order
...
Silences a -Wreorder warning.
2019-05-09 18:55:47 -04:00
Lioncash
e43ba3acd4
video_core/shader/decode/texture: Remove unused variable from GetTld4Code()
2019-05-09 18:49:56 -04:00
Lioncash
e3c45b4338
renderer_vulkan/vk_shader_decompiler: Remove unused variable from DeclareInternalFlags()
2019-05-09 18:47:48 -04:00
Lioncash
175fe8aaeb
video_core/renderer_opengl/gl_shader_decompiler: Remove unused Composite() function
...
This isn't used at all, so it can be removed.
2019-05-09 18:45:26 -04:00
Lioncash
6d28d288a3
video_core/renderer_opengl/gl_rasterizer_cache: Remove unused variable in UploadGLMipmapTexture()
...
This variable is unused entirely, so it can be removed.
2019-05-09 18:42:48 -04:00
Lioncash
ba165b1092
video_core/gpu_thread: Remove unused local variable
...
Instead of retrieving the data from the std::variant instance, we can
just check if the variant contains that type of data.
This is essentially the same behavior, only it returns a bool indicating
whether or not the type in the variant is currently active, instead of
actually retrieving the data.
2019-05-09 18:39:21 -04:00
Lioncash
c56d893e77
video_core/textures/astc: Remove unused variables
...
Silences a few compilation warnings.
2019-05-09 18:33:36 -04:00
bunnei
daca045fcd
Merge pull request #2442 from FernandoS27/astc-fix
...
Fix Layered ASTC Textures
2019-05-09 13:23:14 -04:00
bunnei
f69d3a6351
Merge pull request #2443 from ReinUsesLisp/skip-repeated-variants
...
gl_shader_disk_cache: Skip stored shader variants instead of asserting
2019-05-09 13:22:42 -04:00
bunnei
c27b81cb85
Merge pull request #2429 from FernandoS27/compute
...
Corrections and Implementation on GPU Engines
2019-05-09 13:19:22 -04:00
Fernando Sahmkow
3a08c3207b
Correct possible error on Rasterizer Caches
...
There was a weird bug that could happen if the object died directly and
the cache address wasn't stored.
2019-05-07 12:33:10 -04:00
Lioncash
9e15193ef8
shader/decode/texture: Remove unused variable
...
This isn't used anywhere, so we can get rid of it.
2019-05-04 02:10:38 -04:00
Lioncash
08b270676b
gl_rasterizer: Silence unused variable warning
...
Makes use of src, so it's not considered unused.
2019-05-04 02:00:17 -04:00
ReinUsesLisp
d4df803b2b
shader_ir/other: Implement IPA.IDX
2019-05-02 21:46:37 -03:00
ReinUsesLisp
5321cdd276
gl_shader_decompiler: Skip physical unused attributes
2019-05-02 21:46:37 -03:00
ReinUsesLisp
28bffb1ffa
shader_ir/memory: Assert on non-32 bits ALD.PHYS
2019-05-02 21:46:25 -03:00
ReinUsesLisp
fe700e1856
shader: Add physical attributes commentaries
2019-05-02 21:46:25 -03:00
ReinUsesLisp
c6f9e651b2
gl_shader_decompiler: Implement GLSL physical attributes
2019-05-02 21:46:25 -03:00
ReinUsesLisp
71aa9d0877
shader_ir/memory: Implement physical input attributes
2019-05-02 21:46:25 -03:00
ReinUsesLisp
b7d412c99b
gl_shader_decompiler: Abstract generic attribute operations
2019-05-02 21:46:25 -03:00
ReinUsesLisp
bd81a03d9d
gl_shader_decompiler: Declare all possible varyings on physical attribute usage
2019-05-02 21:46:25 -03:00
ReinUsesLisp
06b363c9b5
shader: Remove unused AbufNode Ipa mode
2019-05-02 21:46:25 -03:00
ReinUsesLisp
002ecbea19
shader_ir/memory: Emit AL2P IR
2019-05-02 21:46:25 -03:00
ReinUsesLisp
7632a7d6d2
shader_bytecode: Add AL2P decoding
2019-05-02 21:46:25 -03:00
Fernando Sahmkow
e64c41efe8
Refactors and name corrections.
2019-05-01 15:31:39 -04:00
ReinUsesLisp
4aa081b4e7
gl_shader_disk_cache: Skip stored shader variants instead of asserting
...
Instead of asserting on already stored shader variants, silently skip them.
This shouldn't be happening but when a shader is invalidated and it is
not stored in the shader cache, this assert would hit and save that
shader anyways when the asserts are disabled.
2019-05-01 00:36:11 -03:00
Fernando Sahmkow
95261639fb
Fix Layered ASTC Textures
...
By adding the missing layer offset in ASTC compression.
2019-04-30 23:02:31 -04:00
bunnei
79e54abe19
Merge pull request #2100 from FreddyFunk/disk-cache-precompiled-file
...
gl_shader_disk_cache: Improve precompiled shader cache generation speed and size
2019-04-30 19:24:01 -04:00
bunnei
91e239d66f
Merge pull request #2435 from ReinUsesLisp/misc-vc
...
shader_ir: Miscellaneous fixes
2019-04-28 22:29:43 -04:00
bunnei
c52233ec8b
Merge pull request #2322 from ReinUsesLisp/wswitch
...
video_core: Silent -Wswitch warnings
2019-04-28 22:24:58 -04:00
bunnei
9a3737120d
Merge pull request #2423 from FernandoS27/half-correct
...
Corrections on Half Float operations: HADD2 HMUL2 and HFMA2
2019-04-28 22:24:22 -04:00
ReinUsesLisp
2156e52014
shader_ir: Move Sampler index entry in operand< to sort declarations
2019-04-26 01:13:05 -03:00
ReinUsesLisp
b77b4b76bb
shader_ir: Add missing entry to Sampler operand< comparison
2019-04-26 01:11:24 -03:00
ReinUsesLisp
0b91087a1e
shader_ir/texture: Fix sampler const buffer key shift
2019-04-26 01:09:29 -03:00
FreddyFunk
1a3ff252a4
Re added new lines at the end of files
2019-04-23 23:19:28 +02:00
unknown
3091b40691
gl_shader_disk_cache: Compress precompiled shader cache file with Zstandard
2019-04-23 22:24:31 +02:00
unknown
9db2c734c9
gl_shader_disk_cache: Use VectorVfsFile for the virtual precompiled shader cache file
2019-04-23 22:24:23 +02:00
unknown
3fe542cf60
gl_shader_disk_cache: Remove per shader compression
2019-04-23 21:40:01 +02:00
Fernando Sahmkow
b3118ee316
Fixes and Corrections to DMA Engine
2019-04-23 15:28:18 -04:00
Hexagon12
8df9449bb8
Merge pull request #2422 from ReinUsesLisp/fixup-samplers
...
gl_state: Fix samplers memory corruption
2019-04-23 18:30:35 +03:00
Hexagon12
b2fbcaae30
Merge pull request #2425 from FernandoS27/y-direction
...
Fix flipping on some games by applying Y direction register
2019-04-23 18:29:29 +03:00
Fernando Sahmkow
f1e5314f1a
Add Swizzle Parameters to the DMA engine
2019-04-23 11:21:00 -04:00
Fernando Sahmkow
e140e2ebc6
Add Documentation Headers to all the GPU Engines
2019-04-23 08:44:52 -04:00
Fernando Sahmkow
021d28c9b8
Corrections and styling
2019-04-23 08:02:24 -04:00
bunnei
4fad91ca45
Merge pull request #2383 from ReinUsesLisp/aoffi-test
...
gl_shader_decompiler: Disable variable AOFFI on unsupported devices
2019-04-22 22:14:02 -04:00
Fernando Sahmkow
701ce1c9d0
Implement Maxwell3D Data Upload
2019-04-22 19:27:36 -04:00
Fernando Sahmkow
e4ff140b99
Introduce skeleton of the GPU Compute Engine.
2019-04-22 19:05:43 -04:00
Fernando Sahmkow
a91d3fc639
Revamp Kepler Memory to use a subegine to manage uploads
2019-04-22 18:50:56 -04:00
bunnei
b5889cbd6f
Merge pull request #2403 from FernandoS27/compressed-linear
...
Support compressed formats on linear textures.
2019-04-22 17:09:42 -04:00
bunnei
68b707711a
Merge pull request #2411 from FernandoS27/unsafe-gpu
...
GPU Manager: Implement ReadBlockUnsafe and WriteBlockUnsafe
2019-04-22 17:09:00 -04:00
bunnei
01100f8afd
Merge pull request #2400 from FernandoS27/corret-kepler-mem
...
Implement Kepler Memory on both Linear and BlockLinear.
2019-04-22 16:47:05 -04:00
Fernando Sahmkow
4c36b78567
Rasterizer Cache: Use a temporal storage for Surfaces loading/flushing.
...
This PR should heavily reduce memory usage since temporal buffers are no
longer stored per Surface but instead managed by the Rasterizer Cache.
2019-04-21 11:42:07 -04:00
Fernando Sahmkow
623b2e4b8f
Corrections Half Float operations on const buffers and implement saturation.
2019-04-20 21:11:33 -04:00
bunnei
da0c3bc658
Merge pull request #2407 from FernandoS27/f2f
...
Do some corrections in conversion shader instructions.
2019-04-20 00:42:34 -04:00
bunnei
650d9b1044
Merge pull request #2409 from ReinUsesLisp/half-floats
...
shader_ir/decode: Miscellaneous fixes to half-float decompilation
2019-04-19 21:31:52 -04:00
Fernando Sahmkow
08cdcc2871
Apply Position Y Direction
2019-04-19 20:49:00 -04:00
Fernando Sahmkow
a3eb91ed8c
RasterizerCache Redesign: Flush
...
flushing is now responsability of children caches instead of the cache
object. This change will allow the specific cache to pass extra
parameters on flushing and will allow more flexibility.
2019-04-19 20:44:56 -04:00
Fernando Sahmkow
db4b2bc798
make ReadBlockunsafe and WriteBlockunsafe, ignore invalid pages.
2019-04-19 20:35:54 -04:00
bunnei
40dc893c37
Merge pull request #2374 from lioncash/pagetable
...
core: Reorganize boot order
2019-04-19 19:09:20 -04:00
ReinUsesLisp
d74cb16535
gl_state: Fix samplers memory corruption
...
It was possible for "samplers" to be read without being written. This
addresses that.
2019-04-19 17:07:56 -03:00
ReinUsesLisp
fbe8d1ceaa
video_core: Silent -Wswitch warnings
2019-04-18 15:54:39 -03:00
bunnei
4294062516
Merge pull request #2318 from ReinUsesLisp/sampler-cache
...
gl_sampler_cache: Port sampler cache to OpenGL
2019-04-17 21:45:56 -04:00
bunnei
5bd5140bde
Merge pull request #2348 from FernandoS27/guest-bindless
...
Implement Bindless Textures on Shader Decompiler and GL backend
2019-04-17 20:59:49 -04:00
bunnei
0cfbd3325b
Merge pull request #2315 from ReinUsesLisp/severity-decompiler
...
shader_ir/decode: Reduce the severity of common assertions
2019-04-16 22:21:19 -04:00
bunnei
21d498bc06
Merge pull request #2384 from ReinUsesLisp/gl-state-clear
...
gl_rasterizer: Apply just the needed state on Clear
2019-04-16 22:19:03 -04:00
bunnei
1b83f255c2
Merge pull request #2092 from ReinUsesLisp/stg
...
shader/memory: Implement STG and global memory flushing
2019-04-16 22:15:17 -04:00
Fernando Sahmkow
d0082de82a
Implement IsBlockContinous
...
This detects when a GPU Memory Block is not continous within host cpu
memory.
2019-04-16 18:49:35 -04:00
Fernando Sahmkow
da91e6e4b6
Apply Const correctness to SwizzleKepler and replace u32 for size_t on iterators.
2019-04-16 12:00:46 -04:00
Fernando Sahmkow
13d626fc21
Use ReadBlockUnsafe for fetyching DMA CommandLists
2019-04-16 11:22:34 -04:00
Fernando Sahmkow
06d1c5a991
Document unsafe versions and add BlockCopyUnsafe
2019-04-16 10:11:35 -04:00
Fernando Sahmkow
6fc562a9aa
Use ReadBlockUnsafe for Shader Cache
2019-04-15 23:34:03 -04:00
Fernando Sahmkow
ef381e6924
Use ReadBlockUnsafe on TIC and TSC reading
...
Use ReadBlockUnsafe on TIC and TSC reading as memory is never flushed
from host GPU there.
2019-04-15 23:10:24 -04:00
Fernando Sahmkow
367704aa82
GPU MemoryManager: Implement ReadBlockUnsafe and WriteBlockUnsafe
2019-04-15 23:01:35 -04:00
Fernando Sahmkow
3e96c367bd
Use WriteBlock and ReadBlock.
2019-04-15 22:42:34 -04:00
Fernando Sahmkow
bec28d692d
Implement Block Linear copies in Kepler Memory.
2019-04-15 21:22:16 -04:00
ReinUsesLisp
ef8245bed2
vk_shader_decompiler: Add missing operations
2019-04-15 21:32:57 -03:00
ReinUsesLisp
f43995ec53
shader_ir/decode: Fix half float pre-operations and remove MetaHalfArithmetic
...
Operations done before the main half float operation (like HAdd) were
managing a packed value instead of the unpacked one. Adding an unpacked
operation allows us to drop the per-operand MetaHalfArithmetic entry,
simplifying the code overall.
2019-04-15 21:16:10 -03:00
ReinUsesLisp
abcbcb1b2a
gl_shader_decompiler: Fix MrgH0 decompilation
...
GLSL decompilation for HMergeH0 was wrong. This addresses that issue.
2019-04-15 21:16:10 -03:00
ReinUsesLisp
64613db605
shader_ir/decode: Implement half float saturation
2019-04-15 21:16:10 -03:00
ReinUsesLisp
90cbf89303
shader_ir/decode: Reduce severity of unimplemented half-float FTZ
2019-04-15 21:16:09 -03:00
ReinUsesLisp
acf618afbc
renderer_opengl: Implement half float NaN comparisons
2019-04-15 21:13:26 -03:00
ReinUsesLisp
ae46ad48ed
shader_ir: Avoid using static on heap-allocated objects
...
Using static here might be faster at runtime, but it adds a heap
allocation called before main.
2019-04-15 21:12:43 -03:00
Fernando Sahmkow
aa471274d9
Do some corrections in conversion shader instructions.
...
Corrects encodings for I2F, F2F, I2I and F2I
Implements Immediate variants of all four conversion types.
Add assertions to unimplemented stuffs.
2019-04-15 19:16:27 -04:00
Fernando Sahmkow
8a099ac99f
Correct Kepler Memory on Linear Pushes.
2019-04-15 14:51:36 -04:00
Fernando Sahmkow
773d955dfa
Support compressed formats on linear textures.
2019-04-15 13:56:09 -04:00
Fernando Sahmkow
bf561e4340
Correct Pitch in Fermi2D
2019-04-15 12:24:29 -04:00
ReinUsesLisp
f15c59a164
gl_shader_decompiler: Use variable AOFFI on supported hardware
2019-04-14 05:13:19 -03:00
ReinUsesLisp
5c280e6ff0
shader_ir: Implement STG, keep track of global memory usage and flush
2019-04-14 00:25:32 -03:00
bunnei
c9454c8422
Merge pull request #2373 from FernandoS27/z32
...
Set Pixel Format to Z32 if its R32F and depth compare enabled, and Implement format ZF32_X24S8
2019-04-13 22:14:51 -04:00
bunnei
ee2206a1b7
Merge pull request #2386 from ReinUsesLisp/shader-manager
...
gl_shader_manager: Move code to source file and minor clean up
2019-04-13 22:09:27 -04:00
Lioncash
6d0551196d
video_core/gpu: Create threads separately from initialization
...
Like with CPU emulation, we generally don't want to fire off the threads
immediately after the relevant classes are initialized, we want to do
this after all necessary data is done loading first.
This splits the thread creation into its own interface member function
to allow controlling when these threads in particular get created.
2019-04-11 22:11:40 -04:00
bunnei
ea80e2bc57
Merge pull request #2235 from ReinUsesLisp/spirv-decompiler
...
vk_shader_decompiler: Implement a SPIR-V decompiler
2019-04-11 21:54:23 -04:00
Fernando Sahmkow
c9305959d3
gl_rasterizer_cache: Relax restrictions on FastCopySurface and FastLayeredCopySurface
2019-04-11 13:14:28 -04:00
bunnei
6951741a94
Merge pull request #2278 from ReinUsesLisp/vc-texture-cache
...
video_core: Implement API agnostic view based texture cache
2019-04-10 21:17:35 -04:00
bunnei
0371650bd7
Merge pull request #2372 from FernandoS27/fermi-fix
...
Correct Fermi Copy on Linear Textures.
2019-04-10 21:17:03 -04:00
ReinUsesLisp
93af663683
gl_shader_manager: Move code to source file and minor clean up
2019-04-10 19:29:15 -03:00
ReinUsesLisp
6df25e9c7b
gl_rasterizer: Apply just the needed state on Clear
2019-04-10 18:13:15 -03:00
ReinUsesLisp
0032821864
gl_device: Implement interface and add uniform offset alignment
2019-04-10 15:56:12 -03:00
ReinUsesLisp
75d23a3679
vk_shader_decompiler: Implement flow primitives
2019-04-10 14:20:25 -03:00
ReinUsesLisp
58ad8dfac6
vk_shader_decompiler: Implement most common texture primitives
2019-04-10 14:20:25 -03:00
ReinUsesLisp
4667ed8e22
vk_shader_decompiler: Implement texture decompilation helper functions
2019-04-10 14:20:25 -03:00
ReinUsesLisp
676172e20d
vk_shader_decompiler: Implement Assign and LogicalAssign
2019-04-10 14:20:25 -03:00
ReinUsesLisp
d316d248ab
vk_shader_decompiler: Implement non-OperationCode visits
2019-04-10 14:20:25 -03:00
ReinUsesLisp
b758c861b0
vk_shader_decompiler: Implement OperationCode decompilation interface
2019-04-10 14:20:25 -03:00
ReinUsesLisp
fec4eb9776
vk_shader_decompiler: Implement Visit
2019-04-10 14:20:25 -03:00
ReinUsesLisp
ca51f99840
vk_shader_decompiler: Implement labels tree and flow
2019-04-10 14:20:25 -03:00
ReinUsesLisp
13aa664f3f
vk_shader_decompiler: Implement declarations
2019-04-10 14:20:25 -03:00
ReinUsesLisp
ad53b233c5
vk_shader_decompiler: Declare and stub interface for a SPIR-V decompiler
2019-04-10 14:20:25 -03:00
ReinUsesLisp
970d9e57c8
video_core: Add sirit as optional dependency with Vulkan
...
sirit is a runtime assembler for SPIR-V
2019-04-10 14:20:25 -03:00
bunnei
97648f4841
Merge pull request #2345 from ReinUsesLisp/multibind
...
gl_rasterizer: Use ARB_multi_bind to update buffers with a single call per drawcall
2019-04-10 11:23:19 -04:00
bunnei
ed9dba89d3
Merge pull request #2375 from FernandoS27/fix-ldc
...
Remove unnecessary bounding in LD_C
2019-04-09 21:23:24 -04:00
Fernando Sahmkow
c9f35d96be
Remove bounding in LD_C
2019-04-09 20:02:11 -04:00
bunnei
2598433f9c
Merge pull request #2354 from lioncash/header
...
video_core/texures/texture: Remove unnecessary includes
2019-04-09 19:19:41 -04:00
bunnei
353a099481
Merge pull request #2366 from FernandoS27/xmad-fix
...
Correct XMAD mode, psl and high_b on different encodings.
2019-04-09 19:15:01 -04:00
bunnei
bc7e149835
Merge pull request #2369 from FernandoS27/mip-align
...
gl_backend: Align Pixel Storage
2019-04-09 17:20:43 -04:00
Fernando Sahmkow
cd91e98dab
Correct Fermi Copy on Linear Textures.
2019-04-09 14:13:58 -04:00
Fernando Sahmkow
7c458311d3
Implement Texture Format ZF32_X24S8.
2019-04-09 12:33:46 -04:00
Fernando Sahmkow
b0aa8ad736
Correct depth compare with color formats for R32F
2019-04-09 12:06:59 -04:00
Fernando Sahmkow
9f16833097
gl_backend: Align Pixel Storage
...
This commit makes sure GL reads on the correct pack size for the
respective texture buffer.
2019-04-08 17:16:02 -04:00
Fernando Sahmkow
5c55ae4e18
Correct LOP_IMN encoding
2019-04-08 13:39:12 -04:00
Fernando Sahmkow
16adc735a5
Correct XMAD mode, psl and high_b on different encodings.
2019-04-08 13:01:17 -04:00
Fernando Sahmkow
ef8be408d3
Adapt Bindless to work with AOFFI
2019-04-08 12:07:56 -04:00
Fernando Sahmkow
492040bd9c
Move ConstBufferAccessor to Maxwell3d, correct mistakes and clang format.
2019-04-08 11:36:11 -04:00
Fernando Sahmkow
797e351bf8
Fix bad rebase
2019-04-08 11:35:22 -04:00
Fernando Sahmkow
c60b0b8432
Fix TMML
2019-04-08 11:35:22 -04:00
Fernando Sahmkow
a77e9a27b0
Simplify ConstBufferAccessor
2019-04-08 11:35:19 -04:00
Fernando Sahmkow
fd4e994de3
Refactor GetTextureCode and GetTexCode to use an optional instead of optional parameters
2019-04-08 11:35:18 -04:00
Fernando Sahmkow
4841440382
Implement TXQ_B
2019-04-08 11:29:52 -04:00
Fernando Sahmkow
189bd1980c
Implement TMML_B
2019-04-08 11:29:49 -04:00
Fernando Sahmkow
ac3ba9a33e
Corrections to TEX_B
2019-04-08 11:28:44 -04:00
Fernando Sahmkow
90d06acfed
Fixes to Const Buffer Accessor and Formatting
2019-04-08 11:23:47 -04:00
Fernando Sahmkow
7af82ca022
Implement Bindless Handling on SetupTexture
2019-04-08 11:23:46 -04:00
Fernando Sahmkow
fe392fff24
Unify both sampler types.
2019-04-08 11:23:45 -04:00
Fernando Sahmkow
e28fd3d0a5
Implement Bindless Samplers and TEX_B in the IR.
2019-04-08 11:23:42 -04:00
Fernando Sahmkow
c4ac05c82c
Implement Const Buffer Accessor
2019-04-08 11:19:34 -04:00
bunnei
f14328bf0a
Merge pull request #2300 from FernandoS27/null-shader
...
shader_cache: Permit a Null Shader in case of a bad host_ptr.
2019-04-07 17:58:27 -04:00
bunnei
c2fee0e519
Merge pull request #2355 from ReinUsesLisp/sync-point
...
maxwell_3d: Reduce severity of ProcessSyncPoint
2019-04-07 17:56:11 -04:00
bunnei
8aaf418bd6
Merge pull request #2306 from ReinUsesLisp/aoffi
...
shader_ir: Implement AOFFI for TEX and TLD4
2019-04-07 17:52:30 -04:00
bunnei
6b18a1592f
Merge pull request #2321 from ReinUsesLisp/gl-state-rework
...
gl_state: Rework to enable individual applies
2019-04-07 17:50:07 -04:00
bunnei
21a4e7deea
Merge pull request #2098 from FreddyFunk/disk-cache-zstd
...
gl_shader_disk_cache: Use Zstandard for compression
2019-04-07 17:48:33 -04:00
bunnei
80162888e6
Merge pull request #2352 from bunnei/mem-manager-fixes
...
memory_manager: Improved implementation of read/write/copy block.
2019-04-07 17:44:59 -04:00
Fernando Sahmkow
021cd56bc9
Permit a Null Shader in case of a bad host_ptr.
2019-04-07 07:52:01 -04:00
ReinUsesLisp
ddcb711ee8
maxwell_3d: Reduce severity of ProcessSyncPoint
2019-04-06 02:18:20 -03:00
Lioncash
89c106e31b
video_core/textures/convert: Replace include with a forward declaration
...
Avoids dragging in a direct dependency in a header.
2019-04-06 00:14:36 -04:00
Lioncash
fbf452ab0e
video_core/texures/texture: Remove unnecessary includes
...
Nothing in this header relies on common_funcs or the memory manager.
This gets rid of reliance on indirect inclusions in the OpenGL caches.
2019-04-06 00:03:35 -04:00
bunnei
864280fabc
Merge pull request #2317 from FernandoS27/sync
...
Implement SyncPoint Register in the GPU.
2019-04-05 23:50:54 -04:00
bunnei
e3402d976d
Merge pull request #2346 from lioncash/header
...
video_core/engines: Remove unnecessary inclusions where applicable
2019-04-05 23:44:27 -04:00
bunnei
20be92d5e6
memory_manager: Improved implementation of read/write/copy block.
...
- Fixes graphical issues with Chocobo's Mystery Dungeon EVERY BUDDY!
- Fixes a crash with Mario Tennis Aces
2019-04-05 23:43:34 -04:00
bunnei
89b8801a97
Merge pull request #2350 from lioncash/vmem
...
video_core/memory_manager: Mark a few member functions with the const qualifier
2019-04-05 23:40:54 -04:00
bunnei
41890a84be
Merge pull request #2347 from lioncash/trunc
...
video_core/gpu_thread: Silence truncation warning in ThreadManager's constructor
2019-04-05 23:39:31 -04:00
bunnei
520e4e5d4b
Merge pull request #2327 from ReinUsesLisp/crash-safe-visit
...
gl_shader_decompiler: Return early when an operation is invalid
2019-04-05 23:36:18 -04:00
bunnei
cb2209d06a
Merge pull request #2337 from lioncash/temporary
...
gl_shader_decompiler: Rename GenerateTemporal() to GenerateTemporary()
2019-04-05 23:35:31 -04:00
Lioncash
00e7190e29
video_core/macro_interpreter: Remove assertion within FetchParameter()
...
We can just use .at(), which essentially does the same thing, but with
less code.
2019-04-05 22:56:58 -04:00
Lioncash
1efdb4897e
video_core/macro_interpreter: Simplify GetRegister()
...
Given we already ensure nothing can set the zeroth register in
SetRegister(), we don't need to check if the index is zero and special
case it. We can just access the register normally, since it's already
going to be zero.
We can also replace the assertion with .at() to perform the equivalent
behavior inline as part of the API.
2019-04-05 22:55:13 -04:00
Lioncash
c13fbe6a41
video_core/memory_manager: Make Read() a const qualified member function
...
Given this doesn't actually alter internal state, this can be made a
const member function.
2019-04-05 20:30:48 -04:00
Lioncash
76ef6e5c2b
video_core/memory_manager: Make ReadBlock() a const qualifier member function
...
Now, since we have a const qualified variant of GetPointer(), we can put
it to use in ReadBlock() to retrieve the source pointer that is passed
into memcpy.
Now block reading may be done from a const context.
2019-04-05 20:28:44 -04:00
Lioncash
34510bcda8
video_core/memory_manager: Add a const qualified variant of GetPointer()
...
Allows retrieving read-only pointers from a const context externally.
2019-04-05 20:25:28 -04:00
Lioncash
085b388a7a
video_core/memory_manager: Make FindFreeRegion() a const member function
...
This doesn't modify internal state, so it can be made a const member
function.
2019-04-05 20:22:55 -04:00
Lioncash
9dec087fca
video_core/memory_manager: Make GpuToCpuAddress() a const member function
...
This doesn't modify any internal state, so it can be made a const member
function to allow its use in const contexts.
2019-04-05 20:18:29 -04:00
Fernando Sahmkow
fc91e21206
Implement SyncPoint Register in the GPU.
2019-04-05 19:19:30 -04:00
Lioncash
30ce9b2b5c
video_core/gpu_thread: Silence truncation warning in ThreadManager's constructor
...
Since c5d41fd812
callback parameters were
changed to use an s64 to represent late cycles instead of an int, so
this was causing a truncation warning to occur here. Changing it to s64
is sufficient to silence the warning.
2019-04-05 18:37:37 -04:00
Lioncash
22f02076c6
video_core/engines: Make memory manager members private
...
These aren't used externally by anything, so they can be made private
data members.
2019-04-05 18:26:43 -04:00
Lioncash
26223f8124
video_core/engines: Remove unnecessary inclusions where applicable
...
Replaces header inclusions with forward declarations where applicable
and also removes unused headers within the cpp file. This reduces a few
more dependencies on core/memory.h
2019-04-05 18:26:32 -04:00
ReinUsesLisp
34c3e2c786
renderer_opengl/utils: Skip empty binds
2019-04-05 19:19:49 -03:00
ReinUsesLisp
b631c09e72
gl_rasterizer: Use ARB_multi_bind to update SSBOs
2019-04-05 19:18:43 -03:00
ReinUsesLisp
2d1f054c61
gl_rasterizer: Use ARB_multi_bind to update UBOs across stages
2019-04-05 19:10:46 -03:00
bunnei
66be5150d6
Merge pull request #2282 from bunnei/gpu-asynch-v2
...
gpu_thread: Improve synchronization by using CoreTiming.
2019-04-04 22:38:04 -04:00
bunnei
f7d6e08688
Merge pull request #2336 from ReinUsesLisp/txq
...
gl_shader_decompiler: Fix TXQ types
2019-04-04 22:36:19 -04:00
Lioncash
52746ed8dc
gl_shader_decompiler: Rename GenerateTemporal() to GenerateTemporary()
...
Temporal generally indicates a relation to time, but this is just
creating a temporary, so this isn't really an accurate name for what the
function is actually doing.
2019-04-04 19:35:04 -04:00
ReinUsesLisp
88a3c05b7b
gl_shader_decompiler: Fix TXQ types
...
TXQ returns integer types. Shaders usually do:
R0 = TXQ(); // => int
R0 = static_cast<float>(R0);
If we don't treat it as an integer, it will cast a binary float value as
float - resulting in a corrupted number.
2019-04-04 20:07:11 -03:00
Lioncash
3fd5998d84
video_core/renderer_opengl: Remove unnecessary includes
...
Quite a few unused includes have built up over time, particularly on
core/memory.h. Removing these includes means the source files including
those files will no longer need to be rebuilt if they're changed, making
compilation slightly faster in this scenario.
2019-04-04 12:00:46 -04:00
bunnei
d6374b2522
Merge pull request #2093 from FreddyFunk/disk-cache-better-compression
...
Better LZ4 compression utilization for the disk based shader cache and the yuzu build system
2019-04-03 21:50:29 -04:00
bunnei
d7438d067f
Merge pull request #2299 from lioncash/maxwell
...
gl_shader_manager: Remove reliance on a global accessor within MaxwellUniformData::SetFromRegs()
2019-04-03 21:47:48 -04:00
ReinUsesLisp
78bd66d037
gl_state: Rework to enable individual applies
2019-04-03 20:26:27 -03:00
ReinUsesLisp
04979560fb
shader_ir/memory: Reduce severity of LD_L cache management and log it
2019-04-03 17:12:44 -03:00
ReinUsesLisp
24abeb9a67
shader_ir/memory: Reduce severity of ST_L cache management and log it
2019-04-03 17:12:44 -03:00
ReinUsesLisp
06c1f75f21
gl_shader_decompiler: Return early when an operation is invalid
2019-04-03 16:02:09 -03:00
bunnei
7931a68d4e
Merge pull request #2302 from ReinUsesLisp/vk-swapchain
...
vk_swapchain: Implement a swapchain manager
2019-04-03 11:50:05 -04:00
ReinUsesLisp
576ad9a012
gl_sampler_cache: Port sampler cache to OpenGL
2019-04-02 16:58:08 -03:00
ReinUsesLisp
c5047540c9
video_core: Abstract vk_sampler_cache into a templated class
2019-04-02 15:54:11 -03:00
bunnei
4555b63750
gpu_thread: Improve synchronization by using CoreTiming.
2019-04-01 21:32:39 -04:00
Lioncash
781ab8407b
general: Use deducation guides for std::lock_guard and std::unique_lock
...
Since C++17, the introduction of deduction guides for locking facilities
means that we no longer need to hardcode the mutex type into the locks
themselves, making it easier to switch mutex types, should it ever be
necessary in the future.
2019-04-01 12:53:47 -04:00
ReinUsesLisp
38658b38b4
gl_shader_decompiler: Hide local definitions inside an anonymous namespace
2019-03-31 00:26:34 -03:00
Mat M
da02946f4f
shader_ir/decode: Silent implicit sign conversion warning
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-31 00:12:54 -03:00
bunnei
1960164055
Merge pull request #2297 from lioncash/reorder
...
video_core: Amend constructor initializer list order where applicable
2019-03-30 20:00:26 -04:00
bunnei
e199d1e14f
Merge pull request #2298 from lioncash/variable
...
video_core/{gl_rasterizer, gpu_thread}: Remove unused class variables where applicable
2019-03-30 19:59:45 -04:00
ReinUsesLisp
e8abe4b77c
gl_shader_decompiler: Add AOFFI backing implementation
2019-03-30 02:55:18 -03:00
ReinUsesLisp
cb68ce7c2f
shader_ir/decode: Implement AOFFI for TEX and TLD4
2019-03-30 02:53:29 -03:00
ReinUsesLisp
cf4ecc1945
shader_ir: Implement immediate register tracking
2019-03-30 02:53:16 -03:00
unknown
b4857e326f
common/zstd_compression: simplify decompression interface
2019-03-29 18:22:08 +01:00
unknown
aa92da205e
gl_shader_disk_cache: Fixup clang format
2019-03-29 18:22:08 +01:00
unknown
35ebbbc167
gl_shader_disk_cache: Use Zstandard for compression
2019-03-29 18:22:08 +01:00
unknown
4fad477aeb
gl_shader_disk_cache: Use LZ4HC with compression level 9 instead of compression level 12 for less compression time
2019-03-29 18:13:00 +01:00
unknown
c791192d64
Addressed feedback
2019-03-29 18:12:42 +01:00
unknown
74cee1b65d
gl_shader_disk_cache: Use better compression for transferable and precompiled shader disk chache files
2019-03-29 16:42:19 +01:00
unknown
798d76f4c7
data_compression: Move LZ4 compression from video_core/gl_shader_disk_cache to common/data_compression
2019-03-29 16:42:19 +01:00
ReinUsesLisp
746dab407e
vk_swapchain: Implement a swapchain manager
2019-03-29 00:00:51 -03:00
bunnei
76f024865d
Merge pull request #2296 from lioncash/override
...
video_core: Add missing override specifiers
2019-03-28 17:54:51 -04:00
Lioncash
c1ba3e3d4a
gl_shader_manager: Remove unnecessary gl_shader_manager inclusion
...
This isn't used at all in the OpenGL shader cache, so we can remove it's
include here, meaning one less file needs to be recompiled if any
changes ever occur within that header.
core/memory.h is also not used within this file at all, so we can remove
it as well.
2019-03-28 11:16:25 -04:00
Lioncash
1650593927
gl_shader_manager: Move using statement into the cpp file
...
Avoids introducing Maxwell3D into the namespace for everything that
includes the header.
2019-03-28 11:16:21 -04:00
Lioncash
7d88fc83bf
gl_shader_manager: Remove reliance on global accessor within MaxwellUniformData::SetFromRegs()
...
We can just pass in the Maxwell3D instance instead of going through the
system class to get at it.
This also lets us simplify the interface a little bit. Since we pass in
the Maxwell3D context now, we only really need to pass the shader stage
index value in.
2019-03-28 11:14:24 -04:00
Lioncash
d68716efdc
gl_shader_manager: Amend Doxygen string for MaxwellUniformData
...
Previously only one line of the whole comment was in proper Doxygen
formatting.
2019-03-27 13:10:43 -04:00
Lioncash
947d364dba
gpu_thread: Remove unused dma_pusher class member variable from ThreadManager
...
The pusher instance is only ever used in the constructor of the
ThreadManager for creating the thread that the ThreadManager instance
contains. Aside from that, the member is unused, so it can be removed.
2019-03-27 12:51:21 -04:00
Lioncash
e2131f7310
gl_rasterizer: Remove unused reference member variable from RasterizerOpenGL
...
This member variable is no longer being used, so it can be removed,
removing a dependency on EmuWindow from the rasterizer's interface"
2019-03-27 12:45:59 -04:00
Lioncash
a5fa4b311e
video_core: Amend constructor initializer list order where applicable
...
Specifies the members in the same order that initialization would take
place in.
This also silences -Wreorder warnings.
2019-03-27 12:37:53 -04:00
Lioncash
bbe700359d
video_core: Add missing override specifiers
...
Ensures that the signatures will always match with the base class.
Also silences a few compilation warnings.
2019-03-27 12:24:52 -04:00
Lioncash
e36f1a5ba9
video_core/gpu: Amend typo in GPU member variable name
...
smaphore -> semaphore
2019-03-27 12:12:57 -04:00
bunnei
e5893db3e6
Merge pull request #2256 from bunnei/gpu-vmm
...
gpu: Rewrite MemoryManager based on the VMManager implementation.
2019-03-22 18:41:12 -04:00
ReinUsesLisp
d708d03d20
video_core: Implement API agnostic view based texture cache
...
Implements an API agnostic texture view based texture cache. Classes
defined here are intended to be inherited by the API implementation and
used in API-specific code.
This implementation exposes protected virtual functions to be called
from the implementer.
Before executing any surface copies methods (defined in API-specific code)
it tries to detect if the overlapping surface is a superset and if it
is, it creates a view. Views are references of a subset of a surface, it
can be a superset view (the same as referencing the whole texture).
Current code manages 1D, 1D array, 2D, 2D array, cube maps and cube map
arrays with layer and mipmap level views. Texture 3D slices views are
not implemented.
If the view attempt fails, the fast path is invoked with the overlapping
textures (defined in the implementer). If that one fails (returning
nullptr) it will flush and reload the texture.
2019-03-22 13:34:04 -03:00
bunnei
d0dddb3e9d
Revert "Devirtualize Register/Unregister and use a wrapper instead."
...
- Fixes graphical issues from transitions in Super Mario Odyssey.
2019-03-21 21:56:56 -04:00
bunnei
2117edd0f8
memory_manager: Cleanup FindFreeRegion.
2019-03-20 23:12:28 -04:00
bunnei
5a5fccaa23
memory_manager: Use Common::AlignUp in public interface as needed.
2019-03-20 22:58:49 -04:00
bunnei
72837e4b3d
memory_manager: Bug fixes and further cleanup.
2019-03-20 22:36:03 -04:00
bunnei
19330f45d3
maxwell_dma: Check for valid source in destination before copy.
...
- Avoid a crash in Octopath Traveler.
2019-03-20 22:36:03 -04:00
bunnei
197dcf0b5e
memory_manager: Add protections for invalid GPU addresses.
...
- Avoid a crash in Xenoblade Chronicles 2.
2019-03-20 22:36:03 -04:00
bunnei
21eb4cfa7f
gl_rasterizer_cache: Check that backing memory is valid before creating a surface.
...
- Fixes a crash in Puyo Puyo Tetris.
2019-03-20 22:36:02 -04:00
bunnei
22d3dfbcd4
gpu: Rewrite virtual memory manager using PageTable.
2019-03-20 22:36:02 -04:00
bunnei
241563d15c
gpu: Move GPUVAddr definition to common_types.
2019-03-20 22:36:02 -04:00
bunnei
032e4c4ca3
gl_rasterizer: Skip zero addr/sized regions on flush/invalidate.
2019-03-16 22:03:19 -04:00
bunnei
2392e146b0
Merge pull request #2244 from bunnei/gpu-mem-refactor
...
video_core: Refactor to use MemoryManager interface for all memory access.
2019-03-16 21:59:45 -04:00
bunnei
10118c71e0
memory: Simplify rasterizer cache operations.
2019-03-16 00:41:08 -04:00
bunnei
574e89d924
video_core: Refactor to use MemoryManager interface for all memory access.
...
# Conflicts:
# src/video_core/engines/kepler_memory.cpp
# src/video_core/engines/maxwell_3d.cpp
# src/video_core/morton.cpp
# src/video_core/morton.h
# src/video_core/renderer_opengl/gl_global_cache.cpp
# src/video_core/renderer_opengl/gl_global_cache.h
# src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
2019-03-16 00:38:48 -04:00
bunnei
2eaf6c41a4
gpu: Use host address for caching instead of guest address.
2019-03-14 22:34:42 -04:00
bunnei
84d3cdf7d7
Merge pull request #2233 from ReinUsesLisp/morton-cleanup
...
video_core/morton: Miscellaneous changes
2019-03-14 21:23:12 -04:00
bunnei
6788ebffc8
Merge pull request #2229 from ReinUsesLisp/vk-sampler-cache
...
vk_sampler_cache: Implement a sampler cache
2019-03-14 21:22:34 -04:00
bunnei
8bd17aa044
Merge pull request #2216 from ReinUsesLisp/rasterizer-system
...
gl_rasterizer: Use system instance passed from argument
2019-03-14 16:37:05 -04:00
bunnei
4e6c667586
Merge pull request #2227 from lioncash/override
...
renderer_opengl/gl_global_cache: Add missing override specifiers
2019-03-13 17:05:49 -04:00
ReinUsesLisp
ffe2e50458
video_core/morton: Use enum to describe MortonCopyPixels128 mode
2019-03-13 16:35:21 -03:00
ReinUsesLisp
6ed6129b4f
video_core/morton: Remove unused parameter in MortonSwizzle
2019-03-13 16:35:10 -03:00
ReinUsesLisp
9030a8259f
video_core/morton: Remove clang-format off when it's not needed
2019-03-13 16:16:45 -03:00
ReinUsesLisp
fdf76a25ab
video_core/morton: Remove unused functions
2019-03-13 16:15:54 -03:00
ReinUsesLisp
a63295a872
video_core/texture: Fix up sampler lod bias
2019-03-13 00:45:54 -03:00
Mat M
a3734d7e31
vk_sampler_cache: Use operator== instead of memcmp
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-03-12 21:05:36 -03:00
ReinUsesLisp
aa59d77c3b
vk_sampler_cache: Implement a sampler cache
2019-03-12 20:20:57 -03:00
ReinUsesLisp
8ebeb9ade2
video_core/texture: Add a raw representation of TSCEntry
2019-03-12 16:56:29 -03:00
bunnei
2ad44a453f
Merge pull request #2215 from ReinUsesLisp/samplers
...
gl_rasterizer: Encapsulate sampler queries into methods
2019-03-12 13:10:53 -04:00
Lioncash
3350c0a779
renderer_opengl/gl_global_cache: Replace indexing for assignment with insert_or_assign
...
The previous code had some minor issues with it, really not a big deal,
but amending it is basically 'free', so I figured, "why not?".
With the standard container maps, when:
map[key] = thing;
is done, this can cause potentially undesirable behavior in certain
scenarios. In particular, if there's no value associated with the key,
then the map constructs a default initialized instance of the value
type.
In this case, since it's a std::shared_ptr (as a type alias) that is
the value type, this will construct a std::shared_pointer, and then
assign over it (with objects that are quite large, or actively heap
allocate this can be extremely undesirable).
We also make the function take the region by value, as we can avoid a
copy (and by extension with std::shared_ptr, a copy causes an atomic
reference count increment), in certain scenarios when ownership isn't a
concern (i.e. when ReserveGlobalRegion is called with an rvalue
reference, then no copy at all occurs). So, it's more-or-less a "free"
gain without many downsides.
2019-03-11 12:20:35 -04:00
Lioncash
1070c020db
renderer_opengl/gl_global_cache: Append missing override specifiers
...
Two of the functions here are overridden functions, so we can append
these specifiers to make it explicit.
2019-03-11 12:02:30 -04:00
ReinUsesLisp
a6c048920e
gl_rasterizer: Use system instance passed from argument
2019-03-11 03:17:21 -03:00
bunnei
633ce92908
Merge pull request #2147 from ReinUsesLisp/texture-clean
...
shader_ir: Remove "extras" from the MetaTexture
2019-03-10 17:28:36 -04:00
bunnei
4a84921b31
Merge pull request #2143 from ReinUsesLisp/texview
...
gl_rasterizer_cache: Create texture views for array discrepancies
2019-03-10 17:27:49 -04:00
ReinUsesLisp
a0be7b3b92
gl_rasterizer: Encapsulate sampler queries into methods
2019-03-09 04:35:57 -03:00
ReinUsesLisp
6ee0ba64c8
gl_rasterizer: Minor logger changes
2019-03-09 03:34:49 -03:00
bunnei
160fc63c72
Merge pull request #2209 from lioncash/reorder
...
video_core/gpu_thread: Silence a -Wreorder warning
2019-03-08 12:04:26 -05:00
bunnei
78c803b4f3
Merge pull request #2208 from lioncash/gpu
...
video_core/gpu: Make GPU's destructor virtual
2019-03-08 12:03:58 -05:00
bunnei
1143923cdd
Merge pull request #2191 from ReinUsesLisp/maxwell-to-vk
...
maxwell_to_vk: Initial implementation
2019-03-08 11:51:08 -05:00
ReinUsesLisp
e7ac5a6adf
dma_pusher: Store command_list_header by copy
...
Instead of holding a reference that will get invalidated by
dma_pushbuffer.pop(), hold it as a copy. This doesn't have any
performance cost since CommandListHeader is 8 bytes long.
2019-03-08 04:06:54 -03:00
Lioncash
c2d4c8b95e
video_core/gpu_thread: Remove unimplemented WaitForIdle function prototype
...
This function didn't have a definition, so we can remove it to prevent
accidentally attempting to use it.
2019-03-07 16:08:52 -05:00
Lioncash
48a461a629
video_core/gpu_thread: Amend constructor initializer list order
...
Moves the data members to satisfy the order they're declared as in the
constructor initializer list.
Silences a -Wreorder warning.
2019-03-07 16:05:49 -05:00
Lioncash
24e2e601d5
video_core/gpu: Make GPU's destructor virtual
...
Because of the recent separation of GPU functionality into sync/async
variants, we need to mark the destructor virtual to provide proper
destruction behavior, given we use the base class within the System
class.
Prior to this, it was undefined behavior whether or not the destructor
in the derived classes would ever execute.
2019-03-07 15:59:45 -05:00
bunnei
4f352833a5
Merge pull request #2055 from bunnei/gpu-thread
...
Asynchronous GPU command processing
2019-03-07 10:41:53 -05:00
bunnei
076c76f4e4
Merge pull request #2149 from ReinUsesLisp/decoders-style
...
gl_rasterizer_cache: Move format conversion functions to their own file
2019-03-06 21:56:20 -05:00
bunnei
84ad81ee67
gpu_thread: Fix deadlock with threading idle state check.
2019-03-06 21:48:57 -05:00
bunnei
63aa08acbe
gpu_thread: (HACK) Ignore flush on FlushAndInvalidateRegion.
2019-03-06 21:48:57 -05:00
bunnei
3f1b4fb23a
gpu: Always flush.
2019-03-06 21:48:57 -05:00
bunnei
aaa373585c
gpu: Refactor a/synchronous implementations into their own classes.
2019-03-06 21:48:57 -05:00
bunnei
7b574f406b
gpu: Move command processing to another thread.
2019-03-06 21:48:57 -05:00
bunnei
d2ff93c319
Merge pull request #2190 from lioncash/ogl-global
...
core: Remove the global telemetry accessor function
2019-03-06 21:41:53 -05:00
bunnei
ac51d048a9
gpu: Refactor command and swap buffers interface for asynch.
2019-03-06 21:09:09 -05:00
bunnei
4483089d70
gpu: Refactor to take RendererBase instead of RasterizerInterface.
2019-03-06 21:09:09 -05:00
bunnei
22f105c06d
Merge pull request #2203 from lioncash/engines-include
...
video_core/engines: Remove unnecessary includes
2019-03-06 10:51:27 -05:00
Lioncash
f9ee0dc7ee
video_core/engines: Remove unnecessary includes
...
Removes a few unnecessary dependencies on core-related machinery, such
as the core.h and memory.h, which reduces the amount of rebuilding
necessary if those files change.
This also uncovered some indirect dependencies within other source
files. This also fixes those.
2019-03-05 20:35:32 -05:00
Lioncash
42085ff110
video_core/surface: Remove obsolete TODO in PixelFormatFromRenderTargetFormat()
...
This isn't needed anymore, according to Hexagon
2019-03-05 10:15:06 -05:00
bunnei
07e13d6728
Merge pull request #2165 from ReinUsesLisp/unbind-tex
...
gl_rasterizer: Unbind textures but don't apply the gl_state
2019-03-04 13:51:59 -05:00
Lioncash
90febaf717
video_core/renderer_opengl: Replace direct usage of global system object accessors
...
We already pass a reference to the system object to the constructor of the renderer,
so we can just use that instead of using the global accessor functions.
2019-03-04 10:24:09 -05:00
ReinUsesLisp
1f6571b3de
maxwell_to_vk: Initial implementation
2019-03-04 04:06:05 -03:00
Mat M
a461e266ea
Merge pull request #2183 from ReinUsesLisp/vk-buffer-cache-clang
...
vk_buffer_cache: Fix clang-format
2019-03-02 14:43:15 -05:00
bunnei
3c39b39bbc
Merge pull request #2182 from bunnei/my-wasted-friday
...
fuck git for ruining my day, I will learn but I will not forgive
2019-03-02 00:57:15 -05:00
ReinUsesLisp
8e84e81e74
vk_buffer_cache: Fix clang-format
2019-03-02 02:16:45 -03:00
bunnei
ab70c2583d
fuck git for ruining my day, I will learn but I will not forgive
2019-03-02 00:01:34 -05:00
ReinUsesLisp
35c105a108
vk_buffer_cache: Implement a buffer cache
...
This buffer cache is just like OpenGL's buffer cache with some minor
style changes. It uses VKStreamBuffer.
2019-03-01 17:33:36 -03:00
ReinUsesLisp
e85066dac7
gl_rasterizer: Remove texture unbinding after dispatching a draw call
...
Unbinding was required when OpenGL delete operations didn't unbind a
resource if it was bound. This is no longer needed and can be removed.
2019-02-28 00:17:50 -03:00
ReinUsesLisp
bb3ab7d66c
gl_state: Fixup multibind bug
2019-02-28 00:17:03 -03:00
bunnei
1b13859af8
Merge pull request #2152 from ReinUsesLisp/vk-stream-buffer
...
vk_stream_buffer: Implement a stream buffer
2019-02-27 21:19:15 -05:00
bunnei
1f5d6a8fed
Merge pull request #2121 from FernandoS27/texception2
...
Improve the Accuracy of the Rasterizer Cache through a Texception Pass
2019-02-27 21:17:55 -05:00
bunnei
66f4fd4c81
Merge pull request #2172 from lioncash/reorder
...
gl_rasterizer/vk_memory_manager: Silence -Wreorder warnings
2019-02-27 21:14:20 -05:00
Fernando Sahmkow
7ea097e5c2
Devirtualize Register/Unregister and use a wrapper instead.
2019-02-27 21:58:50 -04:00
Fernando Sahmkow
5a9204dbd7
Corrections and redesign.
2019-02-27 21:58:49 -04:00
Fernando Sahmkow
d6b9b51606
Fix linux compile error.
2019-02-27 21:58:48 -04:00
Fernando Sahmkow
e64fa4d2ea
Remove NotifyFrameBuffer as we are doing a texception pass every drawcall.
2019-02-27 21:58:47 -04:00
Fernando Sahmkow
3558c88442
Remove certain optimizations that caused texception to fail in certain scenarios.
2019-02-27 21:58:45 -04:00
Fernando Sahmkow
e9d84ef22c
Bug fixes and formatting
2019-02-27 21:58:44 -04:00
Fernando Sahmkow
5bc82d124c
rasterizer_cache_gl: Implement Texception Pass
2019-02-27 21:58:43 -04:00
Fernando Sahmkow
8932001610
rasterizer_cache_gl: Implement Partial Reinterpretation of Surfaces.
2019-02-27 21:58:40 -04:00
Fernando Sahmkow
44ea2810e4
rasterizer_cache: mark reinterpreted surfaces and add ability to reload marked surfaces on next use.
2019-02-27 21:58:39 -04:00
Fernando Sahmkow
d583fc1e97
rasterizer_cache_gl: Notify on framebuffer change
2019-02-27 21:58:37 -04:00
Fernando Sahmkow
45b6d2d349
rasterizer_cache: Expose FlushObject to Child classes and allow redefining of Register and Unregister
2019-02-27 21:57:33 -04:00
bunnei
f15e2dd881
Merge pull request #2163 from ReinUsesLisp/bitset-dirty
...
maxwell_3d: Use std::bitset to manage dirty flags
2019-02-27 20:50:08 -05:00
ReinUsesLisp
27ddbeb01c
gl_rasterizer_cache: Create texture views for array discrepancies
...
When a texture is sampled in a shader with a different array mode than
the cached state, create a texture view and bind that to the shader
instead.
2019-02-27 14:41:06 -03:00
bunnei
66e023fba2
Merge pull request #2167 from lioncash/namespace
...
common: Move Quaternion, Rectangle, Vec2, Vec3, and Vec4 into the Common namespace
2019-02-27 11:19:53 -05:00
Lioncash
16ea93c11e
vk_memory_manager: Reorder constructor initializer list in terms of member declaration order
...
Reorders members in the order that they would actually be initialized
in. Silences a -Wreorder warning.
2019-02-27 11:08:19 -05:00
Lioncash
a6a783b3dc
gl_rasterizer: Reorder constructor initializer list in terms of member declaration order
...
Orders the members in the order they would actually be initialized in.
Silences a -Wreorder warning.
2019-02-27 11:08:19 -05:00
Lioncash
e7eff72e83
gl_shader_disk_cache: Remove #pragma once from cpp file
...
This is only necessary in headers. Silences a warning with clang.
2019-02-27 11:02:49 -05:00
Lioncash
b9238edd0d
common/math_util: Move contents into the Common namespace
...
These types are within the common library, so they should be within the
Common namespace.
2019-02-27 03:38:39 -05:00
ReinUsesLisp
0ad3c031f4
gl_rasterizer_cache: Move format conversion to its own file
2019-02-26 20:08:27 -03:00
ReinUsesLisp
0ccd490fcd
decoders: Minor style changes
2019-02-26 20:08:27 -03:00
ReinUsesLisp
d91e35a50a
renderer_opengl: Update pixel format tracking
2019-02-26 03:47:16 -03:00
ReinUsesLisp
5219edd715
maxwell_3d: Use std::bitset to manage dirty flags
2019-02-26 03:01:48 -03:00
ReinUsesLisp
730eb1dad7
vk_stream_buffer: Remove copy code path
2019-02-26 02:09:43 -03:00
ReinUsesLisp
5ca63d0675
shader/decode: Remove extras from MetaTexture
2019-02-26 00:11:30 -03:00
ReinUsesLisp
48e6f77c03
shader/decode: Split memory and texture instructions decoding
2019-02-26 00:11:30 -03:00
Lioncash
c1b2e35625
shader/track: Resolve variable shadowing warnings
2019-02-25 09:10:59 -05:00
bunnei
c07987dfab
Merge pull request #2118 from FernandoS27/ipa-improve
...
shader_decompiler: Improve Accuracy of Attribute Interpolation.
2019-02-24 23:04:22 -05:00
bunnei
c4243c07cc
Merge pull request #2119 from FernandoS27/fix-copy
...
rasterizer_cache_gl: Only do fast layered copy on the same format.
2019-02-24 23:03:52 -05:00
bunnei
90c780e6f3
Merge pull request #2139 from degasus/dma_pusher
...
video_core/dma_pusher: The full list of headers at once.
2019-02-24 04:15:49 -05:00
ReinUsesLisp
33a0597603
vk_stream_buffer: Implement a stream buffer
...
This manages two kinds of streaming buffers: one for unified memory
models and one for dedicated GPUs. The first one skips the copy from the
staging buffer to the real buffer, since it creates an unified buffer.
This implementation waits for all fences to finish their operation
before "invalidating". This is suboptimal since it should allocate
another buffer or start searching from the beginning. There is room for
improvement here.
This could also handle AMD's "pinned" memory (a heap with 256 MiB) that
seems to be designed for buffer streaming.
2019-02-24 04:27:51 -03:00
ReinUsesLisp
281a8bf259
vk_resource_manager: Minor VKFenceWatch changes
2019-02-24 04:19:04 -03:00
bunnei
f7090bacc5
Merge pull request #2146 from ReinUsesLisp/vulkan-scheduler
...
vk_scheduler: Implement a scheduler
2019-02-23 23:32:43 -05:00
bunnei
d062991643
Merge pull request #2150 from ReinUsesLisp/fixup-layer-swizzle
...
gl_rasterizer_cache: Fixup parameter order in layered swizzle
2019-02-23 23:31:34 -05:00
ReinUsesLisp
92050c4d86
vk_memory_manager: Fixup commit interval allocation
...
VKMemoryCommitImpl was using as the end of its interval "begin + end".
That ended up wasting memory.
2019-02-24 01:04:41 -03:00
ReinUsesLisp
abef11a540
gl_rasterizer_cache: Fixup parameter order in layered swizzle
2019-02-23 23:27:30 -03:00
ReinUsesLisp
f546fb35ed
vk_scheduler: Implement a scheduler
...
The scheduler abstracts command buffer and fence management with an
interface that's able to do OpenGL-like operations on Vulkan command
buffers.
It returns by value a command buffer and fence that have to be used for
subsequent operations until Flush or Finish is executed, after that the
current execution context (the pair of command buffers and fences) gets
invalidated a new one must be fetched. Thankfully validation layers will
quickly detect if this is skipped throwing an error due to modifications
to a sent command buffer.
2019-02-22 01:33:32 -03:00
bunnei
94b27bb8a5
Merge pull request #2138 from ReinUsesLisp/vulkan-memory-manager
...
vk_memory_manager: Implement memory manager
2019-02-21 22:26:54 -05:00
bunnei
9539c4203b
Merge pull request #2125 from ReinUsesLisp/fixup-glstate
...
gl_state: Synchronize gl_state even when state is disabled
2019-02-20 21:47:46 -05:00
bunnei
ae437320c8
Merge pull request #2130 from lioncash/system_engine
...
video_core: Remove usages of System::GetInstance() within the engines
2019-02-20 21:24:56 -05:00
Markus Wick
6dd40976d0
video_core/dma_pusher: Simplyfy Step() logic.
...
As fetching command list headers and and the list of command headers is a fixed 1:1 relation now, they can be implemented within a single call.
This cleans up the Step() logic quite a bit.
2019-02-19 10:28:42 +01:00
Markus Wick
717394c980
video_core/dma_pusher: The full list of headers at once.
...
Fetching every u32 from memory leads to a big overhead. So let's fetch all of them as a block if possible.
This reduces the Memory::* calls by the dma_pusher by a factor of 10.
2019-02-19 09:58:38 +01:00
ReinUsesLisp
b675c97cdd
vk_memory_manager: Implement memory manager
...
A memory manager object handles the memory allocations for a device. It
allocates chunks of Vulkan memory objects and then suballocates.
2019-02-19 03:42:28 -03:00
bunnei
4bce08d497
Merge pull request #2122 from ReinUsesLisp/vulkan-resource-manager
...
vk_resource_manager: Implement fence and command buffer allocator
2019-02-18 21:05:28 -05:00
bunnei
4699fdca8f
Merge pull request #2127 from FearlessTobi/fix-screenshot-srgb
...
renderer_opengl: respect the sRGB colorspace for the screenshot feature
2019-02-16 15:36:00 -05:00
Lioncash
a8fa5019b5
video_core: Remove usages of System::GetInstance() within the engines
...
Avoids the use of the global accessor in favor of explicitly making the
system a dependency within the interface.
2019-02-15 22:06:23 -05:00
James Rowe
99da6362c4
Merge pull request #2123 from lioncash/coretiming-global
...
core_timing: De-globalize core_timing facilities
2019-02-15 19:52:11 -07:00
Lioncash
bd983414f6
core_timing: Convert core timing into a class
...
Gets rid of the largest set of mutable global state within the core.
This also paves a way for eliminating usages of GetInstance() on the
System class as a follow-up.
Note that no behavioral changes have been made, and this simply extracts
the functionality into a class. This also has the benefit of making
dependencies on the core timing functionality explicit within the
relevant interfaces.
2019-02-15 21:50:25 -05:00
fearlessTobi
9a56b99fa4
renderer_opengl: respect the sRGB colorspace for the screenshot feature
...
Previously, we were completely ignoring for screenshots whether the game uses RGB or sRGB.
This resulted in screenshot colors that looked off for some titles.
2019-02-15 21:27:29 +01:00
ReinUsesLisp
8dfc81239f
gl_state: Synchronize gl_state even when state is disabled
...
There are some potential edge cases where gl_state may fail to track the
state if a related state changes while the toggle is disabled or it
didn't change. This addresses that.
2019-02-15 01:30:14 -03:00
bunnei
4327f430f1
Merge pull request #2112 from lioncash/shadowing
...
gl_rasterizer_cache: Get rid of variable shadowing
2019-02-14 21:45:20 -05:00
bunnei
a8fc5d6edd
Merge pull request #2111 from ReinUsesLisp/fetch-fix
...
gl_shader_decompiler: Re-implement TLDS lod
2019-02-14 21:42:34 -05:00
ReinUsesLisp
ae6c052ed9
vk_resource_manager: Implement a command buffer pool with VKFencedPool
2019-02-14 18:44:26 -03:00
ReinUsesLisp
a2b6de7e9f
vk_resource_manager: Add VKFencedPool interface
...
Handles a pool of resources protected by fences. Manages resource
overflow allocating more resources.
This class is intended to be used through inheritance.
2019-02-14 18:44:26 -03:00
ReinUsesLisp
0ffdd0a683
vk_resource_manager: Implement VKResourceManager and fence allocator
...
CommitFence iterates a pool of fences until one is found. If all fences
are being used at the same time, allocate more.
2019-02-14 18:44:26 -03:00
ReinUsesLisp
aa0b6babda
vk_resource_manager: Implement VKFenceWatch
...
A fence watch is used to keep track of the usage of a fence and protect
a resource or set of resources without having to inherit from their
handlers.
2019-02-14 18:44:26 -03:00
ReinUsesLisp
25c2fe1c6b
vk_resource_manager: Implement VKFence
...
Fences take ownership of objects, protecting them from GPU-side or
driver-side concurrent access. They must be commited from the resource
manager. Their usage flow is: commit the fence from the resource
manager, protect resources with it and use them, send the fence to an
execution queue and Wait for it if needed and then call Release. Used
resources will automatically be signaled when they are free to be
reused.
2019-02-14 18:44:26 -03:00
ReinUsesLisp
33a4cebc22
vk_resource_manager: Add VKResource interface
...
VKResource is an interface that gets signaled by a fence when it is free
to be reused.
2019-02-14 18:36:15 -03:00
bunnei
fcc3aa0bbf
Merge pull request #2113 from ReinUsesLisp/vulkan-base
...
vulkan: Add dependencies and device abstraction
2019-02-14 10:06:48 -05:00
Fernando Sahmkow
10682ad7e0
shader_decompiler: Improve Accuracy of Attribute Interpolation.
2019-02-14 03:25:07 -04:00
Fernando Sahmkow
bb41683394
rasterizer_cache_gl: Only do fast layered copy on the same format. As
...
glCopyImageSubData does not support different formats.
2019-02-13 16:55:00 -04:00
bunnei
cd542d5aac
Merge pull request #2099 from greggameplayer/BGRA8-Framebuffer-Real
...
Implement BGRA8 framebuffer format
2019-02-12 21:44:20 -05:00
ReinUsesLisp
8beca060d1
vk_device: Abstract device handling into a class
...
VKDevice contains all the data required to manage and initialize a
physical device. Its intention is to be passed across Vulkan objects to
query device-specific data (for example the logical device and the
dispatch loader).
2019-02-12 21:43:02 -03:00
Lioncash
86b55cb6df
renderer_opengl: Remove reference to global system instance
...
We already store a reference to the system instance that the renderer is
created with, so we don't need to refer to the system instance via
Core::System::GetInstance()
2019-02-12 19:33:22 -05:00
bunnei
8135f4bfce
Merge pull request #2110 from lioncash/namespace
...
core_timing: Rename CoreTiming namespace to Core::Timing
2019-02-12 19:26:37 -05:00
bunnei
c440ecfafe
Merge pull request #2104 from ReinUsesLisp/compute-assert
...
kepler_compute: Fixup assert and rename the engine
2019-02-12 19:24:34 -05:00
Lioncash
054e39647c
gl_rasterizer_cache: Remove unnecessary newline
2019-02-12 16:56:19 -05:00
Lioncash
e25c464c02
gl_rasterizer_cache: Get rid of variable shadowing
...
Avoids shadowing the members of the struct itself, which results in a
-Wshadow warning.
2019-02-12 16:46:39 -05:00
ReinUsesLisp
18fe910957
renderer_vulkan: Add declarations file
...
This file is intended to be included instead of vulkan/vulkan.hpp. It
includes declarations of unique handlers using a dynamic dispatcher
instead of a static one (which would require linking to a Vulkan
library).
2019-02-12 18:33:02 -03:00
ReinUsesLisp
e60d4d70bc
gl_shader_decompiler: Re-implement TLDS lod
2019-02-12 17:03:07 -03:00
Lioncash
48d9d66dc5
core_timing: Rename CoreTiming namespace to Core::Timing
...
Places all of the timing-related functionality under the existing Core
namespace to keep things consistent, rather than having the timing
utilities sitting in its own completely separate namespace.
2019-02-12 12:42:17 -05:00
bunnei
444231a83d
Merge pull request #2108 from FernandoS27/fix-cc
...
Fix incorrect value for CC bit in IADD
2019-02-12 10:39:03 -05:00
bunnei
c1accfefde
Merge pull request #2109 from FernandoS27/fix-f2i
...
Corrected F2I None mode to RoundEven.
2019-02-12 10:20:29 -05:00
bunnei
27e5efd265
Merge pull request #2068 from ReinUsesLisp/shader-cleanup-textures
...
shader_ir: Clean texture management code
2019-02-12 10:20:15 -05:00
Fernando Sahmkow
f5ec165e8c
Corrected F2I None mode to RoundEven.
2019-02-11 18:46:45 -04:00
Fernando Sahmkow
edd668047c
Fix incorrect value for CC bit in IADD
2019-02-11 16:44:43 -04:00
ReinUsesLisp
1ddcd0e6f0
kepler_compute: Fixup assert and rename engines
...
When I originally added the compute assert I used the wrong
documentation. This addresses that.
The dispatch register was tested with homebrew against hardware and is
triggered by some games (e.g. Super Mario Odyssey). What exactly is
missing to get a valid program bound by this engine requires more
investigation.
2019-02-10 19:29:33 -03:00
greggameplayer
a6a73d8892
Implement BGRA8 framebuffer format
2019-02-09 23:44:01 +01:00
bunnei
1d98027a0e
Merge pull request #1904 from bunnei/better-fermi-copy
...
gl_rasterizer: Implement a more accurate fermi 2D copy.
2019-02-08 23:32:24 -05:00
Fernando Sahmkow
e543320129
Implement linear textures ( #2089 )
2019-02-08 18:28:01 -05:00
ReinUsesLisp
e36e7ae74e
gl_rasterizer_cache: Fixup texture view parameters
...
These parameters were declared as constants and passed to glTextureView
but then they were removed on a rabase. This addresses that mistake.
2019-02-08 18:32:58 -03:00
ReinUsesLisp
889c646ac0
shader_ir: Remove F4 prefix to texture operations
...
This was originally included because texture operations returned a vec4.
These operations now return a single float and the F4 prefix doesn't
mean anything.
2019-02-07 17:36:46 -03:00
ReinUsesLisp
d62b0a9e29
shader_ir: Clean texture management code
...
Previous code relied on GLSL parameter order (something that's always
ill-formed on an IR design). This approach passes spatial coordiantes
through operation nodes and array and depth compare values in the the
texture metadata. It still contains an "extra" vector containing generic
nodes for bias and component index (for example) which is still a bit
ill-formed but it should be better than the previous approach.
2019-02-07 00:46:13 -03:00
bunnei
f09d1dffd1
Merge pull request #2083 from ReinUsesLisp/shader-ir-cbuf-tracking
...
shader/track: Add a more permissive global memory tracking
2019-02-06 21:56:14 -05:00
bunnei
35e1118766
gl_rasterizer_cache: Mark surface copy destinations as modified.
2019-02-06 21:54:25 -05:00
bunnei
dd1aab5446
gl_rasterizer: Implement a more accurate fermi 2D copy.
...
- This is a blit, use the blit registers.
2019-02-06 21:54:21 -05:00
Frederic L
d0ac624403
gl_shader_disk_cache: Check LZ4 size limit
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-02-06 22:23:41 -03:00
Frederic L
9f0b247cf6
gl_shader_disk_cache: Consider compressed size zero as an error
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-02-06 22:23:41 -03:00
ReinUsesLisp
e6a2245304
gl_shader_disk_cache: Use unordered containers
2019-02-06 22:23:41 -03:00
ReinUsesLisp
e147ed4fc0
gl_shader_cache: Fixup GLSL unique identifiers
2019-02-06 22:23:40 -03:00
ReinUsesLisp
eb73247433
gl_shader_cache: Link loading screen with disk shader cache load
2019-02-06 22:23:40 -03:00
ReinUsesLisp
df0f31f44e
gl_shader_cache: Set GL_PROGRAM_SEPARABLE to dumped shaders
...
i965 (and probably all mesa drivers) require GL_PROGRAM_SEPARABLE when using
glProgramBinary. This is probably required by the standard but it's ignored by
permisive proprietary drivers.
2019-02-06 22:23:40 -03:00
ReinUsesLisp
7fefec585c
gl_shader_disk_cache: Pass core system as argument and guard against games without title ids
2019-02-06 22:23:40 -03:00
ReinUsesLisp
2bc6a699dc
gl_shader_disk_cache: Guard reads and writes against failure
2019-02-06 22:23:40 -03:00
ReinUsesLisp
750abcc23d
gl_shader_disk_cache: Address miscellaneous feedback
2019-02-06 22:23:40 -03:00
ReinUsesLisp
8ee3666a3c
gl_shader_disk_cache: Pass return values returning instead of by parameters
2019-02-06 22:23:40 -03:00
ReinUsesLisp
ed956569a4
gl_shader_disk_cache: Compress program binaries using LZ4
2019-02-06 22:23:39 -03:00
ReinUsesLisp
f087639e4a
gl_shader_disk_cache: Compress GLSL code using LZ4
2019-02-06 22:23:39 -03:00
ReinUsesLisp
cfb20c4c9d
gl_shader_disk_cache: Save GLSL and entries into the precompiled file
2019-02-06 22:23:39 -03:00
ReinUsesLisp
e78da8dc1f
settings: Hide shader cache behind a setting
2019-02-06 22:20:57 -03:00
ReinUsesLisp
be4641c43f
gl_shader_disk_cache: Invalidate shader cache changes with CMake hash
2019-02-06 22:20:57 -03:00
ReinUsesLisp
a3703f5767
gl_shader_cache: Refactor to support disk shader cache
2019-02-06 22:20:57 -03:00
ReinUsesLisp
4039086226
gl_shader_disk_cache: Add transferable cache invalidation
2019-02-06 22:20:57 -03:00
ReinUsesLisp
a1faed9950
gl_shader_disk_cache: Add precompiled load
2019-02-06 22:20:57 -03:00
ReinUsesLisp
57fb15d2a3
gl_shader_disk_cache: Add precompiled save
2019-02-06 22:20:57 -03:00
ReinUsesLisp
3435cd8d5e
gl_shader_disk_cache: Add transferable load
2019-02-06 22:20:57 -03:00
ReinUsesLisp
b1efceec89
gl_shader_disk_cache: Add transferable stores
2019-02-06 22:20:57 -03:00
ReinUsesLisp
98be5a4928
gl_shader_disk_cache: Add ShaderDiskCacheOpenGL class and helpers
2019-02-06 22:20:57 -03:00
ReinUsesLisp
145c3ac89e
gl_shader_disk_cache: Add file and move BaseBindings declaration
2019-02-06 22:20:57 -03:00
ReinUsesLisp
c2c5260fd7
gl_shader_decompiler: Remove name entries
2019-02-06 22:20:57 -03:00
ReinUsesLisp
8b11368671
gl_shader_util: Add parameter to handle retrievable programs
2019-02-06 22:20:57 -03:00
ReinUsesLisp
0ed5d728ca
rasterizer_interface: Add disk cache entry for the rasterizer
2019-02-06 22:20:57 -03:00
ReinUsesLisp
049050856f
shader_decode: Implement LDG and basic cbuf tracking
2019-02-06 22:20:57 -03:00
bunnei
10ab714fe0
Merge pull request #2042 from ReinUsesLisp/nouveau-tex
...
maxwell_3d: Allow texture handles with TIC id zero
2019-02-06 20:19:20 -05:00
bunnei
40ac058557
Merge pull request #2071 from ReinUsesLisp/dsa-texture
...
gl_rasterizer: Use DSA for textures and move swizzling to texture state
2019-02-06 20:17:59 -05:00
bunnei
7aa7d8f4ff
Merge pull request #2085 from ReinUsesLisp/cube-minus-one
...
video_core/texture: Fix BitField size for depth_minus_one
2019-02-05 17:15:26 -05:00
bunnei
72c70d6808
Merge pull request #2081 from ReinUsesLisp/lmem-64
...
shader_ir/memory: Add LD_L 64 bits loads
2019-02-05 09:17:48 -05:00
ReinUsesLisp
b5e685b297
video_core/texture: Fix BitField size for depth_minus_one
2019-02-05 04:32:06 -03:00
bunnei
bb4549a73d
Merge pull request #2082 from FernandoS27/txq-stl
...
Fix TXQ not using the component mask.
2019-02-04 20:22:32 -05:00
Mat M
a568cd805b
Update src/video_core/engines/shader_bytecode.h
...
Co-Authored-By: FernandoS27 <fsahmkow27@gmail.com>
2019-02-03 21:27:26 -04:00
Fernando Sahmkow
0306c50339
Fix TXQ not using the component mask.
2019-02-03 18:17:18 -04:00
ReinUsesLisp
dfa7be5ddf
shader_ir/memory: Add ST_L 64 and 128 bits stores
2019-02-03 19:08:10 -03:00
ReinUsesLisp
0d1d755086
shader/track: Search inside of conditional nodes
...
Some games search conditionally use global memory instructions. This
allows the heuristic to search inside conditional nodes for the source
constant buffer.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
42b75e8be8
shader_ir: Rename BasicBlock to NodeBlock
...
It's not always used as a basic block. Rename it for consistency.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
6a6fabea58
shader_ir: Pass decoded nodes as a whole instead of per basic blocks
...
Some games call LDG at the top of a basic block, making the tracking
heuristic to fail. This commit lets the heuristic the decoded nodes as a
whole instead of per basic blocks.
This may lead to some false positives but allows it the heuristic to
track cases it previously couldn't.
2019-02-03 17:21:20 -03:00
ReinUsesLisp
2bdbb90af7
video_core: Assert on invalid GPU to CPU address queries
2019-02-03 04:58:40 -03:00
ReinUsesLisp
04e68e9738
maxwell_3d: Allow sampler handles with TSC id zero
2019-02-03 04:58:40 -03:00
ReinUsesLisp
390721a561
maxwell_3d: Allow texture handles with TIC id zero
...
Also remove "enabled" field from Tegra::Texture::FullTextureInfo because
it would become unused.
2019-02-03 04:58:24 -03:00
ReinUsesLisp
e01a9de35f
memory_manager: Check for reserved page status
2019-02-03 04:58:24 -03:00
ReinUsesLisp
f61c1ed246
shader_ir/memory: Add LD_L 128 bits loads
2019-02-03 00:35:34 -03:00
ReinUsesLisp
9feb68085d
shader_bytecode: Rename BytesN enums to BitsN
2019-02-03 00:25:40 -03:00
ReinUsesLisp
0be835132c
shader_ir/memory: Add LD_L 64 bits loads
2019-02-03 00:25:40 -03:00
bunnei
eceab45dac
Merge pull request #2074 from ReinUsesLisp/shader-ir-unify-offset
...
shader_ir: Unify constant buffer offset values
2019-02-01 13:24:04 -05:00
bunnei
2d226ff8ac
Merge pull request #2067 from ReinUsesLisp/workaround-fb
...
gl_rasterizer: Workaround invalid zeta clears
2019-02-01 12:50:09 -05:00
ReinUsesLisp
26f8a700a7
rasterizer_interface: Remove unused AccelerateFill operation
2019-02-01 03:02:22 -03:00
ReinUsesLisp
13222f94c0
video_core: Remove unused Fill surface type
2019-02-01 02:57:47 -03:00
ReinUsesLisp
3e80b08944
gl_rasterizer_cache: Fixup test clause
2019-01-30 19:10:35 -03:00
Mat M
911587fb8d
gl_rasterizer_cache: Guard clause swizzle testing
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-01-30 19:10:35 -03:00
ReinUsesLisp
220df45b7d
gl_state: Remove texture target tracking
2019-01-30 19:10:35 -03:00
ReinUsesLisp
704744bb72
gl_rasterizer_cache: Move swizzling to textures instead of state
2019-01-30 19:10:35 -03:00
ReinUsesLisp
3bbaa98c78
gl_state: Use DSA and multi bind to update texture bindings
2019-01-30 19:10:11 -03:00
ReinUsesLisp
4b676e7786
gl_rasterizer: Use DSA for textures
2019-01-30 19:10:11 -03:00
Hexagon12
35480167b1
Merge pull request #2076 from lioncash/enc
...
video_core/dma_pusher: Silence C4828 warnings
2019-01-30 19:42:15 +02:00
Lioncash
0b594f3344
video_core/dma_pusher: Silence C4828 warnings
...
This was previously causing:
warning C4828: The file contains a character starting at offset 0xa33
that is illegal in the current source character set (codepage 65001).
warnings on Windows when compiling yuzu.
2019-01-30 12:36:31 -05:00
bunnei
92b18345a8
Merge pull request #1485 from FernandoS27/render-info
...
Add more info into textures' object labels
2019-01-30 12:35:56 -05:00
ReinUsesLisp
477d616f7d
shader_ir: Unify constant buffer offset values
...
Constant buffer values on the shader IR were using different offsets if
the access direct or indirect. cbuf34 has a non-multiplied offset while
cbuf36 does. On shader decoding this commit multiplies it by four on
cbuf34 queries.
2019-01-30 02:45:50 -03:00
bunnei
3c3d9afd61
Merge pull request #2070 from ReinUsesLisp/cubearray-view
...
gl_shader_cache: Fix texture view for cubemaps as cubemap arrays
2019-01-29 22:27:08 -05:00
ReinUsesLisp
52c326c301
gl_shader_cache: Use explicit bindings
2019-01-30 00:11:02 -03:00
ReinUsesLisp
9f803299de
gl_rasterizer: Implement global memory management
2019-01-30 00:00:15 -03:00
ReinUsesLisp
3b84e04af1
shader_decode: Implement LDG and basic cbuf tracking
2019-01-30 00:00:15 -03:00
Kevin
ba38d91fe2
video_core/GPU Implemented the GPU PFIFO puller semaphore operations. ( #1908 )
...
* Implemented the puller semaphore operations.
* Nit: Fix 2 style issues
* Nit: Add Break to default case.
* Fix style.
* Update for comments. Added ReferenceCount method
* Forgot to remove GpuSmaphoreAddress union.
* Fix the clang-format issues.
* More clang formatting.
* two more white spaces for the Clang formatting.
* Move puller members into the regs union
* Updated to use Memory::WriteBlock instead of Memory::Write*
* Fix clang style issues
* White space clang error
* Removing unused funcitons and other pr comment
* Removing unused funcitons and other pr comment
* More union magic for setting regs value.
* union magic refcnt as well
* Remove local var
* Set up the regs and regs_assert_positions up properly
* Fix clang error
2019-01-29 21:49:18 -05:00
ReinUsesLisp
f58a6152fc
gl_shader_cache: Fix texture view for cubemaps as cubemap arrays
...
Cubemaps are considered layered and to create a texture view the texture
mustn't be a layered texture, resulting in cubemaps being bound as
cubemap arrays. To fix this issue this commit introduces an extra
surface parameter called "is_array" and uses this to query for texture
view creation.
Now that texture views for cubemaps are actually being created, this
also fixes the number of layers created for the texture view (since they
have to be 6 to create a texture view of cubemaps).
2019-01-29 23:49:02 -03:00
ReinUsesLisp
07692230ca
gl_rasterizer: Workaround invalid zeta clears
...
Some games (like Xenoblade Chronicles 2) clear both depth and stencil
buffers while there's a depth-only texture attached (e.g. D16 Unorm).
This commit reads the zeta format of the bound surface on
ConfigureFramebuffers and returns if depth and/or stencil attachments
were set. This is ignored on DrawArrays but on Clear it's used to just
clear those attachments, bypassing an OpenGL error.
2019-01-29 23:47:33 -03:00
Lioncash
b2b98b2f44
shader/shader_ir: Amend three comment typos
...
Given we're in the area, these are three trivial typos that can be
corrected.
2019-01-28 07:52:04 -05:00
Lioncash
62e08c30b7
shader/shader_ir: Amend constructor initializer ordering for AbufNode
...
Orders the class members in the same order that they would actually be
initialized in. Gets rid of two compiler warnings.
2019-01-28 07:50:34 -05:00
Lioncash
3e1a9a45a6
shader/decode: Avoid a pessimizing std::move within DecodeRange()
...
std::moveing a local variable in a return statement has the potential to
prevent copy elision from occurring, so this can just be converted into
a regular return.
2019-01-28 07:43:23 -05:00
ReinUsesLisp
fc6d46c374
video_core: Silent implicit conversion warning
2019-01-26 02:27:14 -03:00
bunnei
1f4ca1e841
Merge pull request #1927 from ReinUsesLisp/shader-ir
...
video_core: Replace gl_shader_decompiler with an IR based decompiler
2019-01-25 23:42:14 -05:00
bunnei
045b0b70b6
frontend: Refactor ScopeAcquireWindowContext out of renderer_opengl.
2019-01-23 19:19:23 -05:00
ReinUsesLisp
9a82dec74a
maxwell_3d: Set rt_separate_frag_data to 1 by default
...
Commercial games assume that this value is 1 but they never set it. On
the other hand nouveau manually sets this register. On
ConfigureFramebuffers we were asserting for what we are actually
implementing (according to envytools).
2019-01-22 04:14:29 -03:00
James Rowe
ea73ffe202
Rename step 1 and step 2 to be a little more descriptive
2019-01-20 18:40:25 -07:00
James Rowe
e8bd6b1fcc
QT: Upgrade the Loading Bar to look much better
2019-01-20 14:47:35 -07:00
bunnei
197d0d9d24
Merge pull request #2008 from ReinUsesLisp/dirty-framebuffers
...
gl_rasterizer_cache: Use dirty flags for framebuffers
2019-01-20 14:06:26 -05:00
bunnei
cbf8bea9d5
Merge pull request #2002 from ReinUsesLisp/dsa-vao-buffer
...
gl_rasterizer: Use DSA for VAOs and buffers
2019-01-20 14:06:01 -05:00
ReinUsesLisp
a1b1ea47ed
gl_rasterizer: Silent unsafe mix warning
2019-01-18 03:25:28 -03:00
ReinUsesLisp
a63d7c49fc
shader_ir: Fixup clang build
2019-01-15 21:06:05 -03:00
ReinUsesLisp
1e40a4b343
gl_shader_decompiler: replace std::get<> with std::get_if<> for macOS compatibility
2019-01-15 17:54:53 -03:00
ReinUsesLisp
51de4e00a6
gl_shader_decompiler: Inline textureGather component
2019-01-15 17:54:53 -03:00
ReinUsesLisp
1c9c4eefeb
shader_decode: Fixup XMAD
2019-01-15 17:54:53 -03:00
ReinUsesLisp
170c8212bb
shader_ir: Pass to decoder functions basic block's code
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2d6c064e66
shader_decode: Improve zero flag implementation
2019-01-15 17:54:53 -03:00
ReinUsesLisp
d911740e5d
shader_ir: Remove composite primitives and use temporals instead
2019-01-15 17:54:53 -03:00
ReinUsesLisp
bb12f99b20
gl_shader_decompiler: Fixup AssignCompositeHalf
2019-01-15 17:54:53 -03:00
ReinUsesLisp
50195b1704
shader_decode: Use proper primitive names
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2faad9bf23
shader_decode: Use BitfieldExtract instead of shift + and
2019-01-15 17:54:53 -03:00
ReinUsesLisp
52223313b1
shader_ir: Remove Ipa primitive
2019-01-15 17:54:53 -03:00
ReinUsesLisp
d6b173d5fe
gl_shader_decompiler: Use rasterizer's UBO size limit
2019-01-15 17:54:53 -03:00
ReinUsesLisp
df74ff3c8b
gl_shader_gen: Fixup code formatting
2019-01-15 17:54:53 -03:00
ReinUsesLisp
af5d7e2c49
video_core: Rename glsl_decompiler to gl_shader_decompiler
2019-01-15 17:54:53 -03:00
ReinUsesLisp
d9118d324a
shader_ir: Remove RZ and use Register::ZeroIndex instead
2019-01-15 17:54:53 -03:00
ReinUsesLisp
5af82a8ed4
shader_decode: Implement TEXS.F16
2019-01-15 17:54:53 -03:00
ReinUsesLisp
c68c13e1aa
shader_decode: Fixup R2P
2019-01-15 17:54:53 -03:00
ReinUsesLisp
8b5588e776
glsl_decompiler: Fixup TLDS
2019-01-15 17:54:53 -03:00
ReinUsesLisp
dbed6c6485
glsl_decompiler: Fixup geometry shaders
2019-01-15 17:54:53 -03:00
ReinUsesLisp
ea78c78253
shader_decode: Fixup WriteLogicOperation zero comparison
2019-01-15 17:54:53 -03:00
ReinUsesLisp
ab7f52b279
glsl_decompiler: Fixup permissive member function declarations
2019-01-15 17:54:53 -03:00
ReinUsesLisp
55a10d02e5
shader_decode: Fixup PSET
2019-01-15 17:54:53 -03:00
ReinUsesLisp
a2e22b4359
shader_decode: Fixup clang-format
2019-01-15 17:54:53 -03:00
ReinUsesLisp
e1fea1e0c5
video_core: Implement IR based geometry shaders
2019-01-15 17:54:53 -03:00
ReinUsesLisp
a1b845b651
shader_decode: Implement VMAD and VSETP
2019-01-15 17:54:53 -03:00
ReinUsesLisp
b11e0b94c7
shader_decode: Implement HSET2
2019-01-15 17:54:53 -03:00
ReinUsesLisp
2df55985b6
shader_decode: Rework HSETP2
2019-01-15 17:54:53 -03:00
ReinUsesLisp
8332482c24
shader_decode: Implement R2P
2019-01-15 17:54:53 -03:00
ReinUsesLisp
3f1136ac6f
shader_decode: Implement CSETP
2019-01-15 17:54:52 -03:00
ReinUsesLisp
7e13e8bfcb
shader_decode: Implement PSET
2019-01-15 17:54:52 -03:00
ReinUsesLisp
dd91650aaf
shader_decode: Implement HFMA2
2019-01-15 17:54:52 -03:00
ReinUsesLisp
d6f76307fe
glsl_decompiler: Remove HNegate inlining
2019-01-15 17:54:52 -03:00
ReinUsesLisp
027f443e69
shader_decode: Implement POPC
2019-01-15 17:54:52 -03:00
ReinUsesLisp
55e6786254
shader_decode: Implement TLDS (untested)
2019-01-15 17:54:52 -03:00
ReinUsesLisp
ec98e4d842
shader_decode: Update TLD4 reflecting #1862 changes
2019-01-15 17:54:52 -03:00
ReinUsesLisp
03e088a4f4
shader_ir: Fixup TEX and TEXS and partially fix TLD4 decompiling
2019-01-15 17:54:52 -03:00
ReinUsesLisp
2d9136cec6
shader_decode: Fixup FSET
2019-01-15 17:54:52 -03:00