aboutsummaryrefslogtreecommitdiff
path: root/src/video_core
AgeCommit message (Collapse)Author
2017-09-25Merge pull request #2951 from huwpascoe/perf-4B3n30
Optimized Morton
2017-09-25Optimized Float<M,E> multiplicationHuw Pascoe
Before: ucomiss xmm1, xmm1 jp .L9 pxor xmm2, xmm2 mov edx, 1 ucomiss xmm0, xmm2 setp al cmovne eax, edx test al, al jne .L9 .L3: movaps xmm0, xmm2 ret .L9: ucomiss xmm0, xmm0 jp .L10 pxor xmm2, xmm2 mov edx, 1 ucomiss xmm1, xmm2 setp al cmovne eax, edx test al, al je .L3 After: movaps xmm2, xmm1 mulss xmm2, xmm0 ucomiss xmm2, xmm2 jnp .L3 ucomiss xmm1, xmm0 jnp .L11 .L3: movaps xmm0, xmm2 ret .L11: pxor xmm2, xmm2 jmp .L3
2017-09-24Optimized MortonHuw Pascoe
2017-09-24Merge pull request #2921 from jroweboy/batch-fix-2James Rowe
GPU: Add draw for immediate and batch modes
2017-09-23Remove pipeline.gpu_mode and fix minor issuesJames Rowe
2017-09-22Merge pull request #2928 from huwpascoe/masterYuri Kunde Schlesner
Fixed framebuffer warning
2017-09-17Improved performance of FromAttributeBufferHuw Pascoe
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-17Fixed framebuffer warningHuw Pascoe
2017-09-16Merge pull request #2900 from wwylele/clip-2Yuri Kunde Schlesner
PICA: implement custom clip plane
2017-09-11GPU: Add draw for immediate and batch modesJames Rowe
PR #1461 introduced a regression where some games would change configuration even while in the poorly named "drawing" mode, which broke the heuristic citra was using to determine when to draw the batch. This change adds back in a draw call for batching, and also adds in a draw call in immediate mode each time it adds a triangle.
2017-09-07Merge pull request #2865 from wwylele/gs++bunnei
PICA: implemented geometry shader
2017-09-05Merge pull request #2914 from wwylele/fresnel-fixbunnei
pica/lighting: only apply Fresnel factor for the last light
2017-09-03pica/lighting: only apply Fresnel factor for the last lightwwylele
2017-08-31video_core: report telemetry for gas modewwylele
2017-08-30Merge pull request #2891 from wwylele/sw-bumpbunnei
SwRasterizer/Lighting: implement bump mapping
2017-08-28Merge pull request #2892 from Subv/warnings2Weiyi Wang
Warnings: Fixed a few missing-return warnings in video_core.
2017-08-26Warnings: Fixed a few missing-return warnings in video_core.Subv
2017-08-25SwRasterizer/Clipper: flip the sign convention to match PICA and OpenGLwwylele
2017-08-25gl_rasterizer: implement custom clip planewwylele
2017-08-24SwRasterizer: implement custom clip planewwylele
2017-08-22gl_rasterizer/lighting: more accurate CP formulawwylele
2017-08-22SwRasterizer/Lighting: implement LUT input CPwwylele
2017-08-22SwRasterizer/Lighting: implement bump mappingwwylele
2017-08-21swrasterizer: remove invalid TODOwwylele
This function is called in clipping, before the pespective divide, and is not used in later rasterization. Thus it doesn't need perspective correction.
2017-08-21swrasterizer/clipper: remove tested TODOwwylele
hwtested. Current implementation is the correct behavior
2017-08-21gl_shader_gen: simplify and clarify the depth transformation between vertex ↵wwylele
shader and fragment shader
2017-08-21gl_rasterizer: add clipping plane z<=0 defined in PICAwwylele
2017-08-20Merge pull request #2872 from wwylele/sw-geo-factorYuri Kunde Schlesner
SwRasterizer/Lighting: implement geometric factor
2017-08-19Merge pull request #2871 from wwylele/sw-spotlightJames Rowe
SwRasterizer/Lighting: implement spot light
2017-08-19pica/command_processor: build geometry pipeline and run geometry shaderwwylele
The geometry pipeline manages data transfer between VS, GS and primitive assembler. It has known four modes: - no GS mode: sends VS output directly to the primitive assembler (what citra currently does) - GS mode 0: sends VS output to GS input registers, and sends GS output to primitive assembler - GS mode 1: sends VS output to GS uniform registers, and sends GS output to primitive assembler. It also takes an index from the index buffer at the beginning of each primitive for determine the primitive size. - GS mode 2: similar to mode 1, but doesn't take the index and uses a fixed primitive size. hwtest shows that immediate mode also supports GS (at least for mode 0), so the geometry pipeline gets refactored into its own class for supporting both drawing mode. In the immediate mode, some games don't set the pipeline registers to a valid value until the first attribute input, so a geometry pipeline reset flag is set in `pipeline.vs_default_attributes_setup.index` trigger, and the actual pipeline reconfigure is triggered in the first attribute input. In the normal drawing mode with index buffer, the vertex cache is a little bit modified to support the geometry pipeline. Instead of OutputVertex, it now holds AttributeBuffer, which is the input to the geometry pipeline. The AttributeBuffer->OutputVertex conversion is done inside the pipeline vertex handler. The actual hardware vertex cache is believed to be implemented in a similar way (because this is the only way that makes sense). Both geometry pipeline and GS unit rely on states preservation across drawing call, so they are put into the global state. In the future, the other three vertex shader units should be also placed in the global state, and a scheduler should be implemented on top of the four units. Note that the current gs_unit already allows running VS on it in the future.
2017-08-19pica/shader/jit: implement SETEMIT and EMITwwylele
2017-08-19pica/primitive_assembly: Handle winding for GS primitivewwylele
hwtest shows that, although GS always emit a group of three vertices as one primitive, it still respects to the topology type, as if the three vertices are input into the primitive assembler independently and sequentially. It is also shown that the winding flag in SETEMIT only takes effect for Shader topology type, which is believed to be the actual difference between List and Shader (hence removed the TODO). However, only Shader topology type is observed in official games when GS is in use, so the other mode seems to be just unintended usage.
2017-08-19correct constnesswwylele
2017-08-19pica/shader/interpreter: implement SETEMIT and EMITwwylele
2017-08-19pica/shader: extend UnitState for GSwwylele
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-11gl_shader_gen: don't call SampleTexture when bump map is not usedwwylele
2017-08-11SwRasterizer/Lighting: implement spot lightwwylele
2017-08-11SwRasterizer/Lighting: implement geometric factorwwylele
2017-08-10SwRasterizer/Lighting: use make_tuple instead of constructorwwylele
implicit tuple constructor is a c++17 thing, which is not supported by some not-so-old libraries. Play safe for now
2017-08-10pica/regs: layout geometry shader configuration regswwylele
All the register meanings are derived from ctrulib (3dbrew is outdated for most of them)
2017-08-09Merge pull request #2822 from wwylele/sw_lighting-2Weiyi Wang
Implement fragment lighting in the sw renderer (take 2)
2017-08-07pica: upload shared shader code to both unitwwylele
2017-08-03SwRasterizer/Lighting: shorten file namewwylele
2017-08-02SwRasterizer/Lighting: move to its own filewwylele
2017-08-02SwRasterizer/Lighting: reduce confusionwwylele
2017-08-02SwRasterizer/Lighting: move quaternion normalization to the callerwwylele
2017-07-27pica/shader_interpreter: fix off-by-one in LOOPwwylele
2017-07-22Merge pull request #2816 from wwylele/proctex-lutlutlutSebastian Valle
gl_rasterizer: use texture buffer for proctex LUT
2017-07-22Merge pull request #2834 from wwylele/depth-enable-fixSebastian Valle
gl_rasterizer_cache: fix using_depth_fb
2017-07-17telemetry: Log performance, configuration, and system data.bunnei