Commit Graph

1540 Commits

Author SHA1 Message Date
46f660a789 GLRasterizer: Implemented stencil testing in the hw renderer. 2015-08-20 10:11:09 -05:00
186873420f GPU/Rasterizer: Corrected the stencil implementation.
Verified the behavior with hardware tests.
2015-08-20 10:10:35 -05:00
f3e8f42718 Shader: implement SGE, SGEI and SLT in JIT 2015-08-19 14:29:39 +02:00
863730f6a7 Shader: implement SGE, SGEI in interpreter 2015-08-19 14:29:39 +02:00
3c5ff418ca Merge pull request #1047 from aroulin/shader-ex2-lg2
Shader: Save caller-saved registers in JIT before a CALL
2015-08-18 22:02:25 -04:00
2f9eb98f03 Shader: Save caller-saved registers in JIT before a CALL 2015-08-19 03:40:07 +02:00
026379ed55 Merge pull request #1037 from aroulin/shader-ex2-lg2
Shader: Implement EX2 and LG2 in interpreter/JIT
2015-08-18 19:42:32 -04:00
1f18c9f8dd Merge pull request #1034 from yuriks/rg8-textures
videocore: Added RG8 texture support
2015-08-16 22:17:12 -04:00
7d3a6016d6 Shader: implement EX2 and LG2 in JIT 2015-08-17 01:12:34 +02:00
9d6748fa94 Fix Linux GCC 4.9 build (complaining about undeclared memset) 2015-08-16 17:21:08 +02:00
638e47c04d Shader: implement EX2 and LG2 in interpreter 2015-08-16 15:54:30 +02:00
96820ae42a Build fix for Debug configurations. 2015-08-16 15:14:54 +02:00
f5144e6c10 Merge pull request #997 from Lectem/cmdlist_full_debug
citra-qt: Improve pica command list widget (add mask, fix some issues)
2015-08-16 13:34:45 +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
2e3601f415 Pica/DebugUtils: Include uniform information into shader dumps. 2015-08-16 13:22:01 +02:00
4cb302c8ae citra-qt: Improve shader debugger.
Now supports dumping the current shader and recognizes a larger number of output semantics.
2015-08-16 13:22:00 +02:00
5b65d95310 videocore: Added RG8 texture support 2015-08-16 02:21:50 -03:00
db97090cad Shader: Use a POD struct for registers. 2015-08-15 18:03:27 -04:00
b39c053785 Rename ARCHITECTURE_X64 definition to ARCHITECTURE_x86_64. 2015-08-15 18:03:27 -04:00
0ee00861f6 Common: Cleanup CPU capability detection code. 2015-08-15 18:03:26 -04:00
a1942238f5 Common: Move cpu_detect to x64 directory. 2015-08-15 18:03:26 -04:00
bd7e691f78 x64: Refactor to remove fake interfaces and general cleanups. 2015-08-15 18:03:25 -04:00
cfb354f11f JIT: Support negative address offsets. 2015-08-15 18:01:22 -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
d67e2f78b7 Common: Added MurmurHash3 hash function for general-purpose use. 2015-08-15 17:33:46 -04:00
3f69c2039d Shader: Define a common interface for running vertex shader programs. 2015-08-15 17:33:44 -04:00
18527b9e21 Shader: Move shader code to its own subdirectory, "shader". 2015-08-15 17:33:42 -04:00
642b9b5030 GPU: Refactor "VertexShader" namespace to "Shader".
- Also renames "vertex_shader.*" to "shader_interpreter.*"
2015-08-15 17:33:41 -04:00
35f3360663 Merge pull request #893 from linkmauve/remove-uint._t-int._t
Replace standard uint*_t and int*_t with CommonTypes’ u* and s* types
2015-08-11 17:55:24 -04:00
5115d0177e ARM Core, Video Core, CitraQt, Citrace: Use CommonTypes types instead of the standard u?int*_t types. 2015-08-11 22:38:44 +01:00
254582aa35 OpenGL: Fix state tracking in situations with reused object handles
If an OpenGL object is created, bound to a binding using the state
tracker, and then destroyed, a newly created object can be assigned the
same numeric handle by OpenGL. However, even though it is a new object,
and thus needs to be bound to the binding again, the state tracker
compared the current and previous handles and concluded that no change
needed to be made, leading to failure to bind objects in certain cases.

This manifested as broken text in VVVVVV, which this commit fixes along
with similar texturing problems in other games.
2015-08-06 00:59:37 -03:00
ff68db61bc OpenGL: Remove redundant texture.enable_2d field from OpenGLState
All uses of this field where it's false can just set the texture id to 0
instead.
2015-08-05 22:55:22 -03:00
a96502edd3 Videocore: Implement simple vertex caching
This gives a ~2/3 reduction in the amount of vertices that need to be
processed through the vertex loaders and the vertex shader, yielding a
good speedup.
2015-08-04 23:41:47 -03:00
bb7eb5c574 Merge pull request #1006 from yuriks/fb-commit-profile
OpenGL: Add a profiler category measuring framebuffer readback
2015-07-30 10:39:38 -04:00
31c1bb901b Merge pull request #963 from yuriks/gpu-fixes
Misc. GPU vertex loading fixes
2015-07-29 16:45:17 -04:00
428154da45 OpenGL: Add a profiler category measuring framebuffer readback 2015-07-28 17:37:46 -03:00
e1a3fed6ff Merge pull request #991 from yuriks/globjects
OpenGL: Make OpenGL object resource wrappers fully inline
2015-07-26 16:37:33 -04:00
cb76453ec4 Merge pull request #992 from yuriks/hot-path-debug
VideoCore: #ifdef out some debugging routines
2015-07-26 11:45:51 -04:00
facb2555a9 citra-qt/debug_utils: Use lock_guard everywhere
unique_lock were being used as lock_guards.
Also replaced manual lock/unlock by lock_guard for harmonization.
2015-07-26 16:28:44 +02:00
e663751f8b citra-qt/command list: Add mask column 2015-07-26 16:23:12 +02:00
1762267de4 OpenGL: Make OpenGL object resource wrappers fully inline
The functions are so simple that having them separate only bloats the
code and hinders optimization.
2015-07-26 10:58:58 -03:00
72237a9305 Merge pull request #987 from yuriks/regnames
Videocore: Don't reinitialize register name map on every query.
2015-07-26 15:56:56 +02:00
e130dac7de Videocore: Don't reinitialize register name map on every query
This greatly speeds up the command list debug widget.
2015-07-26 10:10:10 -03:00
4909a1486e Videocore: Simplify variables in vertex shader interpreter
Simplifies the code and gives a tiny speed-up.
2015-07-26 08:49:35 -03:00
877d2a0e48 Videocore: Replace std::stack in shader interpreter with static_vector
Shaves off 1/3rd of the vertex shader time in Fire Emblem
2015-07-26 08:49:35 -03:00
13347997ba VideoCore: #ifdef out some debugging routines
Some disabled debugging functionality was being called from rendering
routines in VideoCore. Although disabled, many of them still allocated
memory or did some extra work that was enough to show up in a profiler.
Gives a slight (~2ms) speedup.
2015-07-26 06:55:47 -03:00
00529c71d4 Address error that remained in last merge 2015-07-25 16:54:51 -03:00
9a0f9f12cd Merge pull request #892 from zawata/another-warning-fixes
Yet More Warning Fixes
2015-07-25 12:50:32 -07:00
1760eb5ca6 Merge pull request #980 from Subv/more_breakpoints
Qt/GPU Breakpoints: Added three more breakpoint types.
2015-07-24 01:58:11 +02:00
1fe9b0b82e VideoCore: Fix values of unset components in input attribute arrays
If an input attribute array had a field with less than 4 components, the
remaining components were left unset if not specified by a default
vertex attribute. If neither mechanism would set a component, it would
assume a garbage value.

It has been verified that the hardware behavior is to instead to set the
missing components from the fixed default of (0 0 0 1). The default
vertex attribute values aren't used at all if a vertex array is
specified for that attribute.

Fixes UI graphics on Fire Emblem: Awakening, a small texturing glitch
when selecting a character in Cubic Ninja, as well as eliminating the
unset-W hack which was required for Ocarina of Time to not have
garbled triangles.

This change has been tested against hardware.
2015-07-23 16:51:25 -03:00