bb63ae3052
correct constness
2017-08-19 10:13:20 +03:00
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
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
60fc0b086f
VideoCore: Split regs.h inclusions
2017-02-09 00:04:24 -08:00
5759d94b5c
VideoCore: Move Regs to its own file
2017-02-04 13:59:12 -08:00
f7c7f422c6
VideoCore: Split shader regs from Regs struct
2017-02-04 13:59:11 -08:00
000e78144c
VideoCore: Split rasterizer regs from Regs struct
2017-02-04 13:08:47 -08:00
dcdffabfe6
VideoCore: Extract swrast-specific data from OutputVertex
2017-01-29 21:31:38 -08:00
92bf5c88e6
VideoCore: Split shader output writing from semantic loading
2017-01-29 21:31:37 -08:00
335df895b9
VideoCore: Consistently use shader configuration to load attributes
2017-01-29 21:31:37 -08:00
ab6954e942
VideoCore: Rename some types to more accurate names
2017-01-29 21:31:36 -08:00
0e9081b973
VideoCore/Shader: Move entry_point to SetupBatch
2017-01-25 18:53:25 -08:00
0f64274145
VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetup
2017-01-25 18:53:25 -08:00
6fa3687afc
Shader: Remove OutputRegisters struct
2017-01-25 18:53:25 -08:00
ade7ed7c5f
VideoCore/Shader: Move ProduceDebugInfo to InterpreterEngine
2017-01-25 18:53:24 -08:00
114d6b2f97
VideoCore/Shader: Split interpreter and JIT into separate ShaderEngines
2017-01-25 18:53:24 -08:00
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
bd82cffd0b
VideoCore/Shader: Add constness to methods
2017-01-25 18:53:23 -08:00
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
e3caf669b0
VideoCore/Shader: Use self instead of g_state.vs in ShaderSetup
2017-01-25 18:53:23 -08:00
34d581f2dc
VideoCore/Shader: Extract input vertex loading code into function
2017-01-25 18:53:20 -08:00
c135317de1
VideoCore/Shader: Extract DebugData out from UnitState
2016-12-16 00:16:25 -08:00
e4e962bc7c
VideoCore/Shader: Remove dynamic control flow in (Get)UniformOffset
2016-12-15 23:08:05 -08:00
d27cb1dedc
VideoCore/Shader: Move DebugData to a separate file
2016-12-15 23:08:05 -08:00
f00ada3363
VideoCore: Eliminate an unnecessary copy in the drawcall loop
2016-12-14 21:00:29 -08:00
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
396a8d91a4
Manually tweak source formatting and then re-run clang-format
2016-09-18 21:14:25 -07:00
dc8479928c
Sources: Run clang-format on everything.
2016-09-18 09:38:01 +09:00
ff0fa86b17
Retrieve shader result from new OutputRegisters-type
2016-05-16 18:55:51 +02:00
4e01e9ffc5
Refactor access to state in shader-jit
2016-05-13 09:20:14 +02:00
7e756faaba
Move program_counter and call_stack from UnitState to interpreter
2016-05-12 19:05:42 +02:00
6c6d99ca51
Move default_attributes into Pica state
2016-05-12 19:05:41 +02:00
f6eb62d062
Merge pull request #1690 from JayFoxRox/tex-type-3
...
Pica: Implement texture type 3 (Projection2D)
2016-05-11 21:47:08 -04:00
ae7a82fa1c
Turn ShaderSetup into struct
2016-05-11 23:48:24 +02:00
2f8e8e1455
Pica: Add tc0.w to OutputVertex
2016-05-11 08:07:36 +02:00
691a42fe98
VideoCore: Run include-what-you-use and fix most includes.
2016-04-30 17:02:41 +01:00
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
ffcf7ecee9
shader: Remove unused 'state' argument from 'Setup' function.
2016-04-13 23:04:48 -04:00
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
6b775034dd
Add immediate mode vertex submission
2016-03-02 22:16:38 -05:00
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
87e3b9ffc0
Shader: Fix size_t to int casts of register offsets
2015-09-07 16:50:28 +02:00
96820ae42a
Build fix for Debug configurations.
2015-08-16 15:14:54 +02:00
33ba604fd9
Introduce a shader tracer to allow inspection of input/output values for each processed instruction.
2015-08-16 14:12:11 +02:00
db97090cad
Shader: Use a POD struct for registers.
2015-08-15 18:03:27 -04:00
094ae6fadb
Shader: Initial implementation of x86_x64 JIT compiler for Pica vertex shaders.
...
- Config: Add an option for selecting to use shader JIT or interpreter.
- Qt: Add a menu option for enabling/disabling the shader JIT.
2015-08-15 18:01:07 -04:00
3f69c2039d
Shader: Define a common interface for running vertex shader programs.
2015-08-15 17:33:44 -04:00