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
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
ReinUsesLisp
3b84e04af1
shader_decode: Implement LDG and basic cbuf tracking
2019-01-30 00:00:15 -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
a63d7c49fc
shader_ir: Fixup clang build
2019-01-15 21:06:05 -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
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
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
ReinUsesLisp
af5c6e4ccb
shader_decode: Implement IADD32I
2019-01-15 17:54:52 -03:00
ReinUsesLisp
fc46ecddb3
video_core: Return safe values after an assert hits
2019-01-15 17:54:52 -03:00
ReinUsesLisp
148a6418ed
shader_decode: Implement FFMA
2019-01-15 17:54:52 -03:00
ReinUsesLisp
21aff36459
video_core: Address feedback
2019-01-15 17:54:52 -03:00
ReinUsesLisp
59b34b1d76
shader_ir: Fixup file inclusions and clang-format
2019-01-15 17:54:52 -03:00
Mat M
57a900cc45
shader_ir: Move comment node string
...
Co-Authored-By: ReinUsesLisp <reinuseslisp@airmail.cc>
2019-01-15 17:54:52 -03:00
ReinUsesLisp
d4fae3a699
shader_ir: Address feedback to avoid UB in bit casting
2019-01-15 17:54:52 -03:00
ReinUsesLisp
946c86f0bb
shader_decode: Fixup clang-format
2019-01-15 17:54:52 -03:00
ReinUsesLisp
c9cf899d18
shader_decode: Implement LEA
2019-01-15 17:54:52 -03:00
ReinUsesLisp
4fd06efeb9
shader_decode: Implement IADD3
2019-01-15 17:54:52 -03:00
ReinUsesLisp
a40fd07516
shader_decode: Implement LOP3
2019-01-15 17:54:52 -03:00
ReinUsesLisp
b184ca9089
shader_decode: Implement ST_L
2019-01-15 17:54:52 -03:00
ReinUsesLisp
8d42feb09b
shader_decode: Implement LD_L
2019-01-15 17:54:52 -03:00
ReinUsesLisp
21f9e9da09
shader_decode: Implement HSETP2
2019-01-15 17:54:52 -03:00
ReinUsesLisp
68c99d2597
shader_decode: Implement HADD2 and HMUL2
2019-01-15 17:54:52 -03:00
ReinUsesLisp
cf4a08d950
shader_decode: Implement HADD2_IMM and HMUL2_IMM
2019-01-15 17:54:52 -03:00
ReinUsesLisp
376a837511
shader_decode: Implement MOV_SYS
2019-01-15 17:54:52 -03:00
ReinUsesLisp
518a2bd206
shader_decode: Implement IMNMX
2019-01-15 17:54:52 -03:00
ReinUsesLisp
07944a2345
shader_decode: Implement F2F_C
2019-01-15 17:54:52 -03:00
ReinUsesLisp
e8235c0215
shader_decode: Implement I2I
2019-01-15 17:54:52 -03:00
ReinUsesLisp
6ca31f544a
shader_decode: Implement BRA internal flag
2019-01-15 17:54:52 -03:00
ReinUsesLisp
210620ff31
shader_decode: Implement ISCADD
2019-01-15 17:54:52 -03:00
ReinUsesLisp
b0e7920838
shader_decode: Implement XMAD
2019-01-15 17:54:51 -03:00
ReinUsesLisp
becfdb8638
shader_decode: Implement PBK and BRK
2019-01-15 17:54:51 -03:00
ReinUsesLisp
8f37531f8e
shader_decode: Implement LOP
2019-01-15 17:54:51 -03:00
ReinUsesLisp
8486e7f8c8
shader_decode: Implement SEL
2019-01-15 17:54:51 -03:00
ReinUsesLisp
ccb71bece9
shader_decode: Implement IADD
2019-01-15 17:54:51 -03:00
ReinUsesLisp
faadae5814
shader_decode: Implement ISETP
2019-01-15 17:54:51 -03:00
ReinUsesLisp
80183de884
shader_decode: Implement BFI
2019-01-15 17:54:51 -03:00
ReinUsesLisp
078ba28e13
shader_decode: Implement ISET
2019-01-15 17:54:51 -03:00
ReinUsesLisp
acdbbb8885
shader_decode: Implement LD_C
2019-01-15 17:54:51 -03:00
ReinUsesLisp
d79c462af0
shader_decode: Implement SHL
2019-01-15 17:54:51 -03:00
ReinUsesLisp
a2819c204f
shader_decode: Implement SHR
2019-01-15 17:54:51 -03:00
ReinUsesLisp
39f1c6246a
shader_decode: Implement LOP32I
2019-01-15 17:54:51 -03:00
ReinUsesLisp
501284a81a
shader_decode: Implement BFE
2019-01-15 17:54:51 -03:00
ReinUsesLisp
e444a6553f
shader_decode: Implement FSET
2019-01-15 17:54:51 -03:00
ReinUsesLisp
3052eae25e
shader_decode: Implement F2I
2019-01-15 17:54:51 -03:00
ReinUsesLisp
8abe5ba2c8
shader_decode: Implement I2F
2019-01-15 17:54:51 -03:00
ReinUsesLisp
c849b5b320
shader_decode: Implement F2F
2019-01-15 17:54:50 -03:00
ReinUsesLisp
9118deb990
shader_decode: Stub DEPBAR
2019-01-15 17:54:50 -03:00
ReinUsesLisp
97f33f00cf
shader_decode: Implement SSY and SYNC
2019-01-15 17:54:50 -03:00
ReinUsesLisp
abdbafbc20
shader_decode: Implement PSETP
2019-01-15 17:54:50 -03:00
ReinUsesLisp
802c23b8a8
shader_decode: Implement TMML
2019-01-15 17:54:50 -03:00
ReinUsesLisp
2b90637f4b
shader_decode: Implement TEX and TXQ
2019-01-15 17:54:50 -03:00
ReinUsesLisp
878672f371
shader_decode: Implement TEXS (F32)
2019-01-15 17:54:50 -03:00
ReinUsesLisp
c703f0aee4
shader_decode: Implement FSETP
2019-01-15 17:54:50 -03:00
ReinUsesLisp
8215ae942c
shader_decode: Partially implement BRA
2019-01-15 17:54:50 -03:00
ReinUsesLisp
4f95dc950e
shader_decode: Implement IPA
2019-01-15 17:54:50 -03:00
ReinUsesLisp
cacb934f21
shader_decode: Implement EXIT
2019-01-15 17:54:50 -03:00
ReinUsesLisp
0c049e0a21
shader_decode: Implement ST_A
2019-01-15 17:54:50 -03:00
ReinUsesLisp
e3f1233ce1
shader_decode: Implement LD_A
2019-01-15 17:54:50 -03:00
ReinUsesLisp
ea358bd4bf
shader_decode: Implement FADD32I
2019-01-15 17:54:50 -03:00
ReinUsesLisp
c9b2a1b051
shader_decode: Implement FMUL32_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
2edee801ce
shader_decode: Implement MOV32_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
06cb910c6d
shader_decode: Stub RRO_C, RRO_R and RRO_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
5e6a0a08c1
shader_decode: Implement FMNMX_C, FMNMX_R and FMNMX_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
964ddeeb90
shader_decode: Implement MUFU
2019-01-15 17:54:50 -03:00
ReinUsesLisp
4ccaa1402d
shader_decode: Implement FADD_C, FADD_R and FADD_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
7c192ec43f
shader_decode: Implement FMUL_C, FMUL_R and FMUL_IMM
2019-01-15 17:54:50 -03:00
ReinUsesLisp
4c70d5b8eb
shader_decode: Implement MOV_C and MOV_R
2019-01-15 17:54:50 -03:00
ReinUsesLisp
0c6fb456e0
glsl_decompiler: Implementation
2019-01-15 17:54:50 -03:00
ReinUsesLisp
fbc67a0563
shader_ir: Add condition code helper
2019-01-15 17:54:50 -03:00
ReinUsesLisp
a58abbcfc4
shader_ir: Add predicate combiner helper
2019-01-15 17:54:49 -03:00
ReinUsesLisp
bf07272695
shader_ir: Add comparison helpers
2019-01-15 17:54:49 -03:00
ReinUsesLisp
60f044df56
shader_ir: Add half float helpers
2019-01-15 17:54:49 -03:00
ReinUsesLisp
e3c55e31d7
shader_ir: Add integer helpers
2019-01-15 17:54:49 -03:00
ReinUsesLisp
833d0806f9
shader_ir: Add float helpers
2019-01-15 17:54:49 -03:00
ReinUsesLisp
6b9eea3fe5
shader_ir: Add setters
2019-01-15 17:54:49 -03:00
ReinUsesLisp
12a95ff453
shader_ir: Add local memory getters
2019-01-15 17:54:49 -03:00
ReinUsesLisp
2f87fd060d
shader_ir: Add internal flag getters
2019-01-15 17:54:49 -03:00
ReinUsesLisp
15f431f0cb
shader_ir: Add attribute getters
2019-01-15 17:54:49 -03:00
ReinUsesLisp
864e8f55cf
shader_ir: Add constant buffer getters
2019-01-15 17:54:49 -03:00
ReinUsesLisp
5e639bfcf6
shader_ir: Add register getter
2019-01-15 17:54:49 -03:00
ReinUsesLisp
4aaa2192b9
shader_ir: Add immediate node constructors
2019-01-15 17:54:49 -03:00
ReinUsesLisp
15a0e1481d
shader_ir: Initial implementation
2019-01-15 17:54:49 -03:00
James Rowe
1d28b2e142
Remove references to PICA and rasterizers in video_core
2018-01-12 19:11:03 -07:00
Huw Pascoe
a234e4c200
Improved performance of FromAttributeBuffer
...
Ternary operator is optimized by the compiler
whereas std::min() is meant to return a value.
I've noticed a 5%-10% emulation speed increase.
2017-09-17 15:56:36 +01:00
wwylele
8285ca4ad8
pica/shader/jit: implement SETEMIT and EMIT
2017-08-19 10:13:20 +03:00
wwylele
bb63ae3052
correct constness
2017-08-19 10:13:20 +03:00
wwylele
28128348f2
pica/shader/interpreter: implement SETEMIT and EMIT
2017-08-19 10:13:20 +03:00
wwylele
46c6973d2b
pica/shader: extend UnitState for GS
...
Among four shader units in pica, a special unit can be configured to run both VS and GS program. GSUnitState represents this unit, which extends UnitState (which represents the other three normal units) with extra state for primitive emitting. It uses lots of raw pointers to represent internal structure in order to keep it standard layout type for JIT to access.
This unit doesn't handle triangle winding (inverting) itself; instead, it calls a WindingSetter handler. This will be explained in the following commits
2017-08-19 10:13:20 +03:00
wwylele
c89f804a01
pica/shader_interpreter: fix off-by-one in LOOP
2017-07-27 13:48:27 +03:00
Yuri Kunde Schlesner
f6715f98f5
Stop using reserved operator names (and/or/xor) with Xbyak
...
Also has the Dynarmic upgrade with the same change
2017-06-17 12:20:22 -07:00
Jannik Vogel
925724c990
Pica: Set program code / swizzle data limit to 4096
...
One of the later commits will enable writing to GS regs.
It turns out that on startup, most games will write 4096 GS program words.
The current limit of 1024 would hence result in 3072 (4096 - 1024) error messages:
```
HW.GPU <Error> video_core/shader/shader.cpp:WriteProgramCode:229: Invalid GS program offset 1024
```
New constants have been introduced to represent these limits.
The swizzle data size has also been raised. This matches the given field sizes of [GPUREG_SH_OPDESCS_INDEX](https://3dbrew.org/wiki/GPU/Internal_Registers#GPUREG_SH_OPDESCS_INDEX ) and [GPUREG_SH_CODETRANSFER_INDEX](https://www.3dbrew.org/wiki/GPU/Internal_Registers#GPUREG_SH_CODETRANSFER_INDEX ) (12 bit = [0; 4095]).
2017-05-11 15:01:27 +02:00
Mat M
0cb52ee74a
Doxygen: Amend minor issues ( #2593 )
...
Corrects a few issues with regards to Doxygen documentation, for example:
- Incorrect parameter referencing.
- Missing @param tags.
- Typos in @param tags.
and a few minor other issues.
2017-02-26 17:58:51 -08:00
Yuri Kunde Schlesner
e10b11a5d0
video_core/shader: Document sanitized MUL operation
2017-02-12 13:29:14 -08:00
Yuri Kunde Schlesner
443bb3d522
Merge pull request #2550 from yuriks/pica-refactor2
...
Small VideoCore cleanups
2017-02-12 12:33:26 -08:00
Yuri Kunde Schlesner
e2fa1ca5e1
video_core: Fix benign out-of-bounds indexing of array ( #2553 )
...
The resulting pointer wasn't written to unless the index was verified as
valid, but that's still UB and triggered debug checks in MSVC.
Reported by garrettboast on IRC
2017-02-10 20:51:09 -08:00
Yuri Kunde Schlesner
60fc0b086f
VideoCore: Split regs.h inclusions
2017-02-09 00:04:24 -08:00
Yuri Kunde Schlesner
5759d94b5c
VideoCore: Move Regs to its own file
2017-02-04 13:59:12 -08:00
Yuri Kunde Schlesner
f7c7f422c6
VideoCore: Split shader regs from Regs struct
2017-02-04 13:59:11 -08:00
Yuri Kunde Schlesner
000e78144c
VideoCore: Split rasterizer regs from Regs struct
2017-02-04 13:08:47 -08:00
Yuri Kunde Schlesner
97e06b0a0d
Merge pull request #2476 from yuriks/shader-refactor3
...
Oh No! More shader changes!
2017-02-04 13:02:48 -08:00
wwylele
6dc1d6e568
ShaderJIT: add 16 dummy bytes at the bottom of the stack
2017-02-03 14:53:38 +02:00
Weiyi Wang
0b9c59ff22
Common/x64: remove legacy emitter and abi ( #2504 )
...
These are not used any more since we moved shader JIT to xbyak.
2017-01-31 01:06:42 -08:00
Merry
f7e96dc068
shader_jit_x64_compiler: esi and edi should be persistent ( #2500 )
2017-01-31 00:38:31 -08:00
Yuri Kunde Schlesner
dcdffabfe6
VideoCore: Extract swrast-specific data from OutputVertex
2017-01-29 21:31:38 -08:00
Yuri Kunde Schlesner
8ed9f9d49f
VideoCore/Shader: Clean up OutputVertex::FromAttributeBuffer
...
This also fixes a long-standing but neverthless harmless memory
corruption bug, whech the padding of the OutputVertex struct would get
corrupted by unused attributes.
2017-01-29 21:31:38 -08:00
Yuri Kunde Schlesner
92bf5c88e6
VideoCore: Split shader output writing from semantic loading
2017-01-29 21:31:37 -08:00
Yuri Kunde Schlesner
335df895b9
VideoCore: Consistently use shader configuration to load attributes
2017-01-29 21:31:37 -08:00
Yuri Kunde Schlesner
ab6954e942
VideoCore: Rename some types to more accurate names
2017-01-29 21:31:36 -08:00
Yuri Kunde Schlesner
0e9081b973
VideoCore/Shader: Move entry_point to SetupBatch
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
0f64274145
VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetup
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
6fa3687afc
Shader: Remove OutputRegisters struct
2017-01-25 18:53:25 -08:00
Yuri Kunde Schlesner
9ea5eacf91
Shader: Initialize conditional_code in interpreter
...
This doesn't belong in LoadInputVertex because it also happens for
non-VS invocations. Since it's not used by the JIT it seems adequate to
initialize it in the interpreter which is the only thing that cares
about them.
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
1a2acc3baa
Shader: Don't read ShaderSetup from global state
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
fa4ac279a7
shader_jit_x64: Don't read program from global state
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
ade7ed7c5f
VideoCore/Shader: Move ProduceDebugInfo to InterpreterEngine
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
114d6b2f97
VideoCore/Shader: Split interpreter and JIT into separate ShaderEngines
2017-01-25 18:53:24 -08:00
Yuri Kunde Schlesner
8eefc62833
VideoCore/Shader: Rename shader_jit_x64{ => _compiler}.{cpp,h}
2017-01-25 18:53:23 -08:00
Yuri Kunde Schlesner
dd4a1672a7
VideoCore/Shader: Split shader uniform state and shader engine
...
Currently there's only a single dummy implementation, which will be
split in a following commit.
2017-01-25 18:53:23 -08:00
Yuri Kunde Schlesner
bd82cffd0b
VideoCore/Shader: Add constness to methods
2017-01-25 18:53:23 -08:00
Yuri Kunde Schlesner
1e1f939817
VideoCore/Shader: Use only entry_point as ShaderSetup param
...
This removes all implicit dependency of ShaderState on global PICA
state.
2017-01-25 18:53:23 -08:00
Yuri Kunde Schlesner
e3caf669b0
VideoCore/Shader: Use self instead of g_state.vs in ShaderSetup
2017-01-25 18:53:23 -08:00
Yuri Kunde Schlesner
34d581f2dc
VideoCore/Shader: Extract input vertex loading code into function
2017-01-25 18:53:20 -08:00
Kloen
5cc94c17f6
video_core: fix shader.cpp signed / unsigned warning
2017-01-23 16:53:31 +01:00
Jonathan Hao
c18cb1b192
Fix some warnings ( #2399 )
2017-01-04 13:48:29 -03:00
Yuri Kunde Schlesner
c135317de1
VideoCore/Shader: Extract DebugData out from UnitState
2016-12-16 00:16:25 -08:00
Yuri Kunde Schlesner
6e7e767645
Remove unnecessary cast
2016-12-16 00:15:55 -08:00
Yuri Kunde Schlesner
b5e3599704
VideoCore/Shader: Extract evaluate_condition lambda to function scope
2016-12-16 00:15:51 -08:00
Yuri Kunde Schlesner
960578f4e1
VideoCore/Shader: Extract call lambda up a scope and remove unused param
2016-12-15 23:08:05 -08:00
Yuri Kunde Schlesner
e4e962bc7c
VideoCore/Shader: Remove dynamic control flow in (Get)UniformOffset
2016-12-15 23:08:05 -08:00
Yuri Kunde Schlesner
d27cb1dedc
VideoCore/Shader: Move DebugData to a separate file
2016-12-15 23:08:05 -08:00
Yuri Kunde Schlesner
fb9e856b91
shader_jit_x64: Use LOOPCOUNT_REG as a 64-bit reg when indexing
2016-12-15 10:02:42 -08:00
Yuri Kunde Schlesner
f00ada3363
VideoCore: Eliminate an unnecessary copy in the drawcall loop
2016-12-14 21:00:29 -08:00
Yuri Kunde Schlesner
5ff3206207
shader_jit_x64: Use Reg32 for LOOP* registers, eliminating casts
2016-12-14 20:06:09 -08:00
Yuri Kunde Schlesner
f4e98ecf3f
VideoCore: Convert x64 shader JIT to use Xbyak for assembly
2016-12-14 20:06:08 -08:00
Jannik Vogel
2d8097eecc
shader_jit: Fix non-SSE4.1 path where FLR would not truncate
2016-12-04 04:26:33 +01:00
Jannik Vogel
e2cb7d7833
shader_jit: Load LOOPCOUNT_REG and LOOPINC 4 bit left-shifted
2016-12-02 04:33:15 +01:00
Yuri Kunde Schlesner
d9a904f9cb
VideoCore: Shader interpreter cleanups
2016-09-29 21:15:49 -07:00
Yuri Kunde Schlesner
26b68313b9
VideoCore: Fix out-of-bounds read in ShaderSetup::ProduceDebugInfo
...
As far as I can tell, memset was replaced by a fill without correcting
the parameter type, causing an out-of-bounds array read in the Vec4
constructor.
2016-09-29 21:11:36 -07:00
Yuri Kunde Schlesner
f120e78b56
Remove special rules for Windows.h and library includes
2016-09-21 00:16:33 -07:00
Yuri Kunde Schlesner
84fbbe2629
Use negative priorities to avoid special-casing the self-include
2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot
ebdae19fd2
Remove empty newlines in #include blocks.
...
This makes clang-format useful on those.
Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Yuri Kunde Schlesner
396a8d91a4
Manually tweak source formatting and then re-run clang-format
2016-09-18 21:14:25 -07:00
Emmanuel Gil Peyrot
dc8479928c
Sources: Run clang-format on everything.
2016-09-18 09:38:01 +09:00
Yuri Kunde Schlesner
a3afeb4687
VideoCore: Fix dangling lambda context in shader interpreter
...
The static meant that after the first execution, these lambda context
would be pointing to a random location on the stack. Fixes a random
crash when using the interpreter.
2016-09-15 22:15:11 -07:00
Jannik Vogel
ff0fa86b17
Retrieve shader result from new OutputRegisters-type
2016-05-16 18:55:51 +02:00
Jannik Vogel
1308afe2c2
Use new shader-jit signature for interpreter
2016-05-13 09:41:55 +02:00
Jannik Vogel
4e01e9ffc5
Refactor access to state in shader-jit
2016-05-13 09:20:14 +02:00
Jannik Vogel
7e756faaba
Move program_counter and call_stack from UnitState to interpreter
2016-05-12 19:05:42 +02:00
Jannik Vogel
6c6d99ca51
Move default_attributes into Pica state
2016-05-12 19:05:41 +02:00
bunnei
f6eb62d062
Merge pull request #1690 from JayFoxRox/tex-type-3
...
Pica: Implement texture type 3 (Projection2D)
2016-05-11 21:47:08 -04:00
Jannik Vogel
ae7a82fa1c
Turn ShaderSetup into struct
2016-05-11 23:48:24 +02:00
Jannik Vogel
2f8e8e1455
Pica: Add tc0.w to OutputVertex
2016-05-11 08:07:36 +02:00
Jannik Vogel
696cb197a5
Pica: Replace logic in shader.cpp with loop
2016-05-03 01:40:47 +02:00
Emmanuel Gil Peyrot
691a42fe98
VideoCore: Run include-what-you-use and fix most includes.
2016-04-30 17:02:41 +01:00
bunnei
90243c56fb
Merge pull request #1730 from hrydgard/vertex-loader
...
* Remove late accesses to attribute_config
* Refactor: Extract VertexLoader from command_processor.cpp.
Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached.
* Move "&" to their proper place, add missing includes and make some properly relative.
* Don't keep base_address in the loader, it doesn't belong there (with it, the loader can't be cached).
* Optimize the vertex loader, nearly doubling its speed.
* Debugger fix
* Move and rename the MemoryAccesses class to MemoryAccessTracker.
2016-04-29 09:42:47 -04:00
Yuri Kunde Schlesner
e3a8292495
Common: Remove section measurement from profiler ( #1731 )
...
This has been entirely superseded by MicroProfile. The rest of the code
can go when a simpler frametime/FPS meter is added to the GUI.
2016-04-29 00:07:10 -07:00
Henrik Rydgard
47ff008817
Refactor: Extract VertexLoader from command_processor.cpp.
...
Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached.
2016-04-28 19:05:55 +02:00
Sam Spilsbury
656a442433
shader: Shader size is long uint, not uint.
2016-04-25 00:40:03 +08:00
Sam Spilsbury
c6709d97bc
shader: Handle non-CALL opcodes with a break
2016-04-25 00:39:54 +08:00
Sam Spilsbury
bbffa6ad69
shader: Format string must be provided inline and not as a variable
2016-04-24 23:40:52 +08:00
bunnei
d7fe2784cc
shader_jit_x64: Rename RuntimeAssert to Compile_Assert.
2016-04-13 23:04:53 -04:00
bunnei
3f623b2561
shader_jit_x64.cpp: Rename JitCompiler to JitShader.
2016-04-13 23:04:53 -04:00
bunnei
847fb951e2
shader_jit_x64: Free memory that's no longer needed after compilation.
2016-04-13 23:04:52 -04:00
bunnei
60aa72e117
shader_jit_x64: Use a sorted vector instead of a set for keeping track of return addresses.
2016-04-13 23:04:52 -04:00
bunnei
60749f2cda
shader_jit_x64: Use CALL/RET instead of JMP for subroutines.
2016-04-13 23:04:52 -04:00
bunnei
1d45b57939
shader_jit_x64: Separate initialization and code generation for readability.
2016-04-13 23:04:50 -04:00
bunnei
6e0319eec9
shader_jit_x64: Get rid of unnecessary last_program_counter variable.
2016-04-13 23:04:49 -04:00
bunnei
f3afe24594
shader_jit_x64: Execute certain asserts at runtime.
...
- This is because we compile the full shader code space, and therefore its common to compile malformed instructions.
2016-04-13 23:04:49 -04:00
bunnei
ffcf7ecee9
shader: Remove unused 'state' argument from 'Setup' function.
2016-04-13 23:04:48 -04:00
bunnei
a5a74eb121
shader_jit_x64: Specify shader main offset at runtime.
2016-04-13 23:04:47 -04:00
bunnei
c9d10de644
shader_jit_x64: Allocate each program independently and persist for emu session.
2016-04-13 23:04:47 -04:00
bunnei
4632791a40
shader_jit_x64: Rewrite flow control to support arbitrary CALL and JMP instructions.
2016-04-13 23:04:44 -04:00
bunnei
135aec7bea
shader_jit_x64: Fix strict memory aliasing issues.
2016-04-13 23:04:43 -04:00
Mathew Maidment
aa6380e5bc
Merge pull request #1643 from MerryMage/make_unique
...
Common: Remove Common::make_unique, use std::make_unique
2016-04-05 20:10:11 -04:00
MerryMage
a06dcfeb61
Common: Remove Common::make_unique, use std::make_unique
2016-04-05 13:31:17 +01:00
bunnei
ebbba0d381
Merge pull request #1508 from JayFoxRox/vs-output-map
...
Respect vs output map
2016-03-22 11:59:12 -04:00
bunnei
784c5539ea
Merge pull request #1538 from lioncash/dot
...
shader_interpreter: use std::inner_product for the dot product
2016-03-20 00:35:06 -04:00
Lioncash
63e956cc7a
video_core: Don't cast away const
2016-03-17 02:01:38 -04:00
Lioncash
4d89df8df2
shader_interpreter: use std::inner_product for the dot product
...
Same thing, less code.
2016-03-17 01:00:30 -04:00
bunnei
96cafbe4cc
Merge pull request #1503 from bunnei/clear-jit-cache
...
Clear JIT cache
2016-03-16 13:18:51 -04:00
Jannik Vogel
9aad2f29bb
PICA: Fix MAD/MADI encoding
2016-03-15 20:01:25 +01:00
Jannik Vogel
f746a00964
Respect vs output map
2016-03-14 13:03:34 +01:00
bunnei
6efb710b28
shader_jit_x64: Clear cache after code space fills up.
2016-03-12 12:15:49 -05:00
bunnei
c103759cdc
shader_jit_x64: Make assert outputs more useful & cleanup formatting.
2016-03-12 12:06:28 -05:00
bunnei
46f78b7f19
shader: Update log message to use proper log class.
2016-03-12 12:03:32 -05:00
Lioncash
88d604383e
Common: Get rid of alignment macros
...
The gl rasterizer already uses alignas,
so we may as well move everything over.
2016-03-09 01:31:14 -05:00
Dwayne Slater
6b775034dd
Add immediate mode vertex submission
2016-03-02 22:16:38 -05:00
bunnei
b003075570
pica: Implement decoding of basic fragment lighting components.
...
- Diffuse
- Distance attenuation
- float16/float20 types
- Vertex Shader 'view' output
2016-02-05 17:17:28 -05:00
bunnei
a43f8d2fb7
Merge pull request #1367 from yuriks/jit-jmp
...
Shader JIT: Fix off-by-one error when compiling JMPs
2016-01-27 09:19:28 -05:00
Yuri Kunde Schlesner
083d2d89a5
Shader: Implement "invert condition" feature of IFU instruction
...
If the bit 0 of the JMPU instruction is set, then the jump condition
will be inverted. That is, a jump will happen when the boolean is false
instead of when it is true.
2016-01-24 20:29:06 -08:00
Yuri Kunde Schlesner
c1071c1ff7
Shader JIT: Fix off-by-one error when compiling JMPs
...
There was a mistake in the JMP code which meant that one instruction at
the destination would be skipped when the jump was taken. This commit
also changes the meaning of the culprit parameter to make it less
confusing and avoid similar mistakes in the future.
2016-01-24 02:15:56 -08:00
Lioncash
aec28ed91e
video_core: Reorganize headers
2015-09-11 07:31:15 -04:00
Lioncash
1fa772393b
video_core: Remove unnecessary includes from headers
2015-09-11 00:10:03 -04:00
Lioncash
526eb33d1e
video_core: Remove unused variables
2015-09-10 10:26:21 -04:00
aroulin
1484a23530
Shader JIT: Use SCALE constant from emitter
2015-09-07 16:50:28 +02:00
aroulin
87e3b9ffc0
Shader: Fix size_t to int casts of register offsets
2015-09-07 16:50:28 +02:00
bunnei
918ca40c68
Merge pull request #1088 from aroulin/x64-emitter-abi-call
...
x64: Proper stack alignment in shader JIT function calls
2015-09-02 08:46:58 -04:00
aroulin
ba998b85a1
video_core: Fix format specifiers warnings
2015-09-02 08:20:00 +02:00
aroulin
179ad35c2e
x64: Proper stack alignment in shader JIT function calls
...
Import Dolphin stack handling and register saving routines
Also removes the x86 parts from abi files
2015-09-01 23:39:52 +02:00
aroulin
84959be150
Shader JIT: Fix SGE/SGEI NaN behavior
...
SGE was incorrectly emulated w.r.t. NaN behavior as the CMPSS SSE
instruction was used with NLT
2015-08-31 08:16:15 +02:00
Yuri Kunde Schlesner
c5a4025b65
Merge pull request #1065 from yuriks/shader-fp
...
Shader FP compliance fixes
2015-08-27 16:34:13 -07:00
aroulin
f52d8c1a9b
Shader JIT: Fix float to integer rounding in MOVA
...
MOVA converts new address register values from floats to integers using truncation
2015-08-27 15:26:41 +02:00
archshift
dd0e1061ef
Shader JIT: ifdef out reference to ifdef'd out shader_map
...
shader_map was only defined on x86 architectures, but was cleared on shutdown
with no ifdef protection. Ifdef this out so non-x86 architectures can be built.
2015-08-26 22:28:19 +00:00
Yuri Kunde Schlesner
0fcabd2b11
Integrate the MicroProfile profiling library
...
This brings goodies such as a configurable user interface and
multi-threaded timeline view.
2015-08-24 22:16:28 -03:00
Yuri Kunde Schlesner
d8ef20c856
Shader JIT: Tiny micro-optimization in DPH
2015-08-24 01:48:37 -03:00
Yuri Kunde Schlesner
630a850d4d
Shaders: Fix multiplications between 0.0 and inf
...
The PICA200 semantics for multiplication are so that when multiplying
inf by exactly 0.0, the result is 0.0, instead of NaN, as defined by
IEEE. This is relied upon by games.
Fixes #1024 (missing OoT interface items)
2015-08-24 01:48:15 -03:00
Yuri Kunde Schlesner
082b74fa24
Shaders: Explicitly conform to PICA semantics in MAX/MIN
2015-08-24 01:46:58 -03:00
Yuri Kunde Schlesner
76247170df
Shader JIT: Add name to second scratch register (XMM4)
2015-08-24 01:46:10 -03:00
Lioncash
fa5076eb9b
shader_jit: Replace two MDisp usages with MatR
2015-08-24 00:39:50 -04:00
Yuri Kunde Schlesner
455147ee95
Shader JIT: Fix CMP NaN behavior to match hardware
2015-08-24 01:29:40 -03:00
bunnei
83c214f6d8
Merge pull request #1062 from aroulin/shader-rcp-rsq
...
Shader: RCP and RSQ computes only the 1st component
2015-08-23 17:56:35 -04:00
aroulin
03c5cfead4
Shader: Use std::sqrt for float instead of sqrt
2015-08-23 22:03:07 +02:00
aroulin
fa552f11ef
Shader: RCP and RSQ computes only the 1st component
2015-08-23 22:01:17 +02:00
aroulin
2f1514b904
Shader: implement DPH/DPHI in JIT
2015-08-22 11:09:53 +02:00
aroulin
2e7cf2f6cf
Shader: implement DPH/DPHI in interpreter
...
Tests revealed that the component with w=1 is
SRC1 and not SRC2, it is now fixed on 3dbrew.
2015-08-22 11:09:53 +02:00
aroulin
f3e8f42718
Shader: implement SGE, SGEI and SLT in JIT
2015-08-19 14:29:39 +02:00
aroulin
863730f6a7
Shader: implement SGE, SGEI in interpreter
2015-08-19 14:29:39 +02:00