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]).
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
e10b11a5d0
video_core/shader: Document sanitized MUL operation
9 years ago
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
9 years ago
Yuri Kunde Schlesner
60fc0b086f
VideoCore: Split regs.h inclusions
9 years ago
Yuri Kunde Schlesner
5759d94b5c
VideoCore: Move Regs to its own file
9 years ago
Yuri Kunde Schlesner
f7c7f422c6
VideoCore: Split shader regs from Regs struct
9 years ago
Yuri Kunde Schlesner
000e78144c
VideoCore: Split rasterizer regs from Regs struct
9 years ago
wwylele
6dc1d6e568
ShaderJIT: add 16 dummy bytes at the bottom of the stack
9 years ago
Weiyi Wang
0b9c59ff22
Common/x64: remove legacy emitter and abi ( #2504 )
These are not used any more since we moved shader JIT to xbyak.
9 years ago
Merry
f7e96dc068
shader_jit_x64_compiler: esi and edi should be persistent ( #2500 )
9 years ago
Yuri Kunde Schlesner
dcdffabfe6
VideoCore: Extract swrast-specific data from OutputVertex
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
92bf5c88e6
VideoCore: Split shader output writing from semantic loading
9 years ago
Yuri Kunde Schlesner
335df895b9
VideoCore: Consistently use shader configuration to load attributes
9 years ago
Yuri Kunde Schlesner
ab6954e942
VideoCore: Rename some types to more accurate names
9 years ago
Yuri Kunde Schlesner
0e9081b973
VideoCore/Shader: Move entry_point to SetupBatch
9 years ago
Yuri Kunde Schlesner
0f64274145
VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetup
9 years ago
Yuri Kunde Schlesner
6fa3687afc
Shader: Remove OutputRegisters struct
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
1a2acc3baa
Shader: Don't read ShaderSetup from global state
9 years ago
Yuri Kunde Schlesner
fa4ac279a7
shader_jit_x64: Don't read program from global state
9 years ago
Yuri Kunde Schlesner
ade7ed7c5f
VideoCore/Shader: Move ProduceDebugInfo to InterpreterEngine
9 years ago
Yuri Kunde Schlesner
114d6b2f97
VideoCore/Shader: Split interpreter and JIT into separate ShaderEngines
9 years ago
Yuri Kunde Schlesner
8eefc62833
VideoCore/Shader: Rename shader_jit_x64{ => _compiler}.{cpp,h}
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
bd82cffd0b
VideoCore/Shader: Add constness to methods
9 years ago
Yuri Kunde Schlesner
1e1f939817
VideoCore/Shader: Use only entry_point as ShaderSetup param
This removes all implicit dependency of ShaderState on global PICA
state.
9 years ago
Yuri Kunde Schlesner
e3caf669b0
VideoCore/Shader: Use self instead of g_state.vs in ShaderSetup
9 years ago
Yuri Kunde Schlesner
34d581f2dc
VideoCore/Shader: Extract input vertex loading code into function
9 years ago
Kloen
5cc94c17f6
video_core: fix shader.cpp signed / unsigned warning
9 years ago
Jonathan Hao
c18cb1b192
Fix some warnings ( #2399 )
9 years ago
Yuri Kunde Schlesner
c135317de1
VideoCore/Shader: Extract DebugData out from UnitState
9 years ago
Yuri Kunde Schlesner
6e7e767645
Remove unnecessary cast
9 years ago
Yuri Kunde Schlesner
b5e3599704
VideoCore/Shader: Extract evaluate_condition lambda to function scope
9 years ago
Yuri Kunde Schlesner
960578f4e1
VideoCore/Shader: Extract call lambda up a scope and remove unused param
9 years ago
Yuri Kunde Schlesner
e4e962bc7c
VideoCore/Shader: Remove dynamic control flow in (Get)UniformOffset
9 years ago
Yuri Kunde Schlesner
d27cb1dedc
VideoCore/Shader: Move DebugData to a separate file
9 years ago
Yuri Kunde Schlesner
fb9e856b91
shader_jit_x64: Use LOOPCOUNT_REG as a 64-bit reg when indexing
9 years ago
Yuri Kunde Schlesner
f00ada3363
VideoCore: Eliminate an unnecessary copy in the drawcall loop
9 years ago
Yuri Kunde Schlesner
5ff3206207
shader_jit_x64: Use Reg32 for LOOP* registers, eliminating casts
9 years ago
Yuri Kunde Schlesner
f4e98ecf3f
VideoCore: Convert x64 shader JIT to use Xbyak for assembly
9 years ago
Jannik Vogel
2d8097eecc
shader_jit: Fix non-SSE4.1 path where FLR would not truncate
9 years ago
Jannik Vogel
e2cb7d7833
shader_jit: Load LOOPCOUNT_REG and LOOPINC 4 bit left-shifted
9 years ago
Yuri Kunde Schlesner
d9a904f9cb
VideoCore: Shader interpreter cleanups
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
f120e78b56
Remove special rules for Windows.h and library includes
9 years ago
Yuri Kunde Schlesner
84fbbe2629
Use negative priorities to avoid special-casing the self-include
9 years ago
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.
9 years ago
Yuri Kunde Schlesner
396a8d91a4
Manually tweak source formatting and then re-run clang-format
9 years ago