7dc488a375
shader/texture: Fix illegal 3D texture assert
...
Fix typo in the illegal 3D texture assert logic. We care about catching
arrayed 3D textures or 3D shadow textures, not regular 3D textures.
2020-02-21 15:57:27 -03:00
bf0c929d4c
Merge pull request #3415 from ReinUsesLisp/texture-code
...
shader/texture: Allow 2D shadow arrays and simplify code
2020-02-19 20:06:14 -05:00
1b6308727c
shader_conversion: I2F : add Assert for case src_size is Short
2020-02-19 11:40:35 +07:00
a2c2c5768f
fix warning
2020-02-19 11:10:26 +07:00
a8508f2bc0
clang-format fix
2020-02-19 11:02:59 +07:00
556f3a6e9a
shader_conversion: add conversion I2F for Short
2020-02-19 10:54:37 +07:00
6910ade146
shader/texture: Allow 2D shadow arrays and simplify code
...
Shadow sampler 2D arrays are supported on OpenGL, so there's no reason
to forbid these. Enable textureLod usage on these.
Minor style changes.
2020-02-15 02:36:28 -03:00
63a59b9935
Merge pull request #3379 from ReinUsesLisp/cbuf-offset
...
shader/decode: Fix constant buffer offsets
2020-02-14 13:22:53 -05:00
90df4b8e2b
Merge pull request #3369 from ReinUsesLisp/shf
...
shader/shift: Implement SHF
2020-02-07 22:06:57 -05:00
bf9a822b87
shader/decode: Fix constant buffer offsets
...
Some instances were using cbuf34.offset instead of cbuf34.GetOffset().
This returned the an invalid offset. Address those instances and rename
offset to "shifted_offset" to avoid future bugs.
2020-02-05 12:19:09 -03:00
08c508b1c4
Merge pull request #3357 from ReinUsesLisp/bfi-rc
...
shader/bfi: Implement register-constant buffer variant
2020-02-04 15:14:13 -05:00
bf21aacc74
Merge pull request #3356 from ReinUsesLisp/fcmp
...
shader/arithmetic: Implement FCMP
2020-02-04 11:36:59 -05:00
c31ec00d67
Merge pull request #3337 from ReinUsesLisp/vulkan-staged
...
yuzu: Implement Vulkan frontend
2020-02-03 16:56:25 -05:00
223a89a19f
shader: Remove curly braces initializers on shared pointers
2020-02-01 22:52:10 -03:00
b5bbe7e752
Merge pull request #3282 from FernandoS27/indexed-samplers
...
Partially implement Indexed samplers in general and specific code in GLSL
2020-02-01 20:41:40 -05:00
729ca120e3
shader/shift: Implement SHIFT_RIGHT_{IMM,R}
...
Shifts a pair of registers to the right and returns the low register.
2020-02-01 21:20:02 -03:00
017474c3f8
shader/shift: Implement SHF_LEFT_{IMM,R}
...
Shifts a pair of registers to the left and returns the high register.
2020-02-01 21:19:44 -03:00
c593e45dbd
Merge pull request #3347 from ReinUsesLisp/local-mem
...
shader/memory: Implement LDL.S16, LDS.S16, STL.S16 and STS.S16
2020-01-30 10:59:52 -05:00
9f0162e4b5
shader/other: Fix skips for SYNC and BRK
2020-01-29 17:53:11 -03:00
270177f38a
shader/other: Stub S2R LaneId
2020-01-29 17:53:11 -03:00
137a8aa55c
shader/bfi: Implement register-constant buffer variant
...
It's the same as the variant that was implemented, but it takes the
operands from another source.
2020-01-27 01:20:38 -03:00
e3fc3459c8
shader/arithmetic: Implement FCMP
...
Compares the third operand with zero, then selects between the first and
second.
2020-01-27 01:15:44 -03:00
d95d4ac843
shader/memory: Implement ATOM.ADD
...
ATOM operates atomically on global memory. For now only add ATOM.ADD
since that's what was found in commercial games.
This asserts for ATOM.ADD.S32 (handling the others as unimplemented),
although ATOM.ADD.U32 shouldn't be any different.
This change forces us to change the default type on SPIR-V storage
buffers from float to uint. We could also alias the buffers, but it's
simpler for now to just use uint. While we are at it, abstract the code
to avoid repetition.
2020-01-26 01:54:24 -03:00
bb8eb15d39
Shader_IR: Address feedback.
2020-01-25 09:04:59 -04:00
d26e74f0a3
shader/memory: Implement STL.S16 and STS.S16
2020-01-25 03:16:10 -03:00
9a2cdf8520
shader/memory: Implement unaligned LDL.S16 and LDS.S16
2020-01-25 03:16:10 -03:00
531f25a037
shader/memory: Move unaligned load/store to functions
2020-01-25 03:16:10 -03:00
96638f57c9
shader/memory: Implement LDL.S16 and LDS.S16
2020-01-25 03:15:55 -03:00
806f569143
Shader_IR: Change name of TrackSampler function so it does not confuse with the type.
2020-01-24 16:44:48 -04:00
7c530e0666
Shader_IR: Propagate bindless index into the GL compiler.
2020-01-24 16:44:47 -04:00
037ea431ce
Shader_IR: deduce size of indexed samplers
2020-01-24 16:43:31 -04:00
f4603d23c5
Shader_IR: Setup Indexed Samplers on the IR
2020-01-24 16:43:30 -04:00
a104b985a8
Merge pull request #3273 from FernandoS27/txd-array
...
Shader_IR: Implement TXD Array.
2020-01-24 14:02:40 -05:00
63ba41a26d
shader/memory: Implement ATOMS.ADD.U32
2020-01-16 17:30:55 -03:00
55f95e7f26
Merge pull request #3287 from ReinUsesLisp/ldg-stg-16
...
shader_ir/memory: Implement u16 and u8 for STG and LDG
2020-01-14 09:57:08 -05:00
13021b534c
shader_ir/texture: Simplify AOFFI code
2020-01-09 03:50:37 -03:00
e2a2a556b9
shader_ir/memory: Implement u16 and u8 for STG and LDG
...
Using the same technique we used for u8 on LDG, implement u16.
In the case of STG, load memory and insert the value we want to set
into it with bitfieldInsert. Then set that value.
2020-01-09 02:12:29 -03:00
a1667a7b46
Shader_IR: Implement TXD Array.
...
This commit extends the compilation of TXD to support array samplers on
TXD.
2020-01-04 13:28:02 -04:00
028b2718ed
Merge pull request #3239 from ReinUsesLisp/p2r
...
shader/p2r: Implement P2R Pr
2019-12-31 20:37:16 -05:00
8a76f816a4
Merge pull request #3228 from ReinUsesLisp/ptp
...
shader/texture: Implement AOFFI and PTP for TLD4 and TLD4S
2019-12-26 21:43:44 -05:00
16dcfacbfc
Merge pull request #3235 from ReinUsesLisp/ldg-u8
...
shader/memory: Implement LDG.U8 and unaligned U8 loads
2019-12-21 22:50:28 -05:00
38d3a48873
shader/p2r: Implement P2R Pr
...
P2R dumps predicate or condition codes state to a register. This is
useful for unit testing.
2019-12-20 18:02:41 -03:00
cf27b59493
shader/r2p: Refactor P2R to support P2R
2019-12-20 17:55:42 -03:00
7be65c6a68
Merge pull request #3234 from ReinUsesLisp/i2f-u8-selector
...
shader/conversion: Implement byte selector in I2F
2019-12-19 22:36:26 -05:00
ae8d4b6c0c
shader/memory: Implement LDG.U8 and unaligned U8 loads
...
LDG can load single bytes instead of full integers or packs of integers.
These have the advantage of loading bytes that are not aligned to 4
bytes.
To emulate these this commit gets the byte being referenced (by doing
"address & 3" and then using that to extract the byte from the loaded
integer:
result = bitfieldExtract(loaded_integer, (address % 4) * 8, 8)
2019-12-18 01:21:46 -03:00
a7d6bd1ef1
shader/conversion: Implement byte selector in I2F
...
I2F's byte selector is used to choose what bytes to convert to float.
e.g. if the input is 0xaabbccdd and the selector is ".B3" it will
convert 0xaa. The default (when it's not shown in nvdisasm) is ".B0", in
that example the default would convert 0xdd to float.
2019-12-18 00:41:22 -03:00
15a753b9a5
shader/texture: Properly shrink unused entries in size mismatches
...
When a image format mismatches we were inserting zeroes to the texture
itself. This was not handling cases were the mismatch uses less
coordinates than the guest shader code. Address that by resizing the
vector.
2019-12-17 23:38:10 -03:00
e09c1fbc1f
shader/texture: Implement TLD4.PTP
2019-12-16 04:09:24 -03:00
844e4a297b
shader/texture: Enable arrayed TLD4
2019-12-16 02:37:21 -03:00
3d2c44848b
shader/texture: Implement AOFFI for TLD4S
2019-12-16 02:06:42 -03:00