Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2018-09-12 | GPU: Basic implementation of the Kepler Inline Memory engine (p2mf). | Subv | 1 | -0/+4 | |
This engine writes data from a FIFO register into the configured address. | |||||
2018-09-10 | video_core: Refactor command_processor. | Markus Wick | 1 | -41/+42 | |
Inline the WriteReg helper as it is called ~20k times per frame. | |||||
2018-09-10 | video_core: Move command buffer loop. | Markus Wick | 1 | -45/+52 | |
This moves the hot loop into video_core. This refactoring shall reduce the CPU overhead of calling ProcessCommandList. | |||||
2018-09-04 | command_processor: Use std::array for bound_engines. | Markus Wick | 1 | -2/+2 | |
subchannel is a 3 bit field. So there must not be more than 8 bound engines. And using a hashmap for up to 8 values is a bit overpowered. | |||||
2018-08-07 | Lowered down the logging for methods | Hexagon12 | 1 | -4/+4 | |
2018-07-03 | Update clang format | James Rowe | 1 | -3/+3 | |
2018-07-03 | Rename logging macro back to LOG_* | James Rowe | 1 | -3/+3 | |
2018-06-12 | GPU: Partially implemented the Maxwell DMA engine. | Subv | 1 | -1/+5 | |
Only tiled->linear and linear->tiled copies that aren't offsetted are supported for now. Queries are not supported. Swizzled copies are not supported. | |||||
2018-05-25 | GPU: Allow command lists to rebind a channel to another engine in the middle of the command list. | Subv | 1 | -1/+0 | |
2018-04-25 | GPU: Move the Maxwell3D macro uploading code to the inside of the Maxwell3D processor. | Subv | 1 | -25/+0 | |
It doesn't belong in the PFIFO handler. | |||||
2018-04-25 | GPU: Corrected the upper bound of the PFIFO method ids in the command processor. | Subv | 1 | -1/+1 | |
2018-04-25 | video-core: Move logging macros over to new fmt-capable ones | Lioncash | 1 | -5/+7 | |
2018-04-24 | memory_manager: Make GpuToCpuAddress return an optional. | bunnei | 1 | -3/+3 | |
2018-04-24 | memory_manager: Use GPUVAdddr, not PAddr, for GPU addresses. | bunnei | 1 | -3/+1 | |
2018-03-18 | GPU: Store uploaded GPU macros and keep track of the number of method parameters. | Subv | 1 | -15/+41 | |
2018-03-18 | GPU: Macros are specific to the Maxwell3D engine, so handle them internally. | Subv | 1 | -29/+0 | |
2018-03-17 | GPU: Process command mode 5 (IncreaseOnce) differently from other commands. | Subv | 1 | -5/+38 | |
Accumulate all arguments before calling the desired method. Note: Maybe we should do the same for the NonIncreasing mode? | |||||
2018-02-12 | Make a GPU class in VideoCore to contain the GPU state. | Subv | 1 | -22/+11 | |
Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there. | |||||
2018-02-12 | GPU: Added a command processor to decode the GPU pushbuffers and forward the commands to their respective engines. | Subv | 1 | -0/+130 | |
2018-01-13 | Remove references to PICA and rasterizers in video_core | James Rowe | 1 | -647/+0 | |
2017-10-15 | hle: Initial implementation of NX service framework and IPC. | bunnei | 1 | -1/+1 | |
2017-10-04 | Extracted the attribute setup and draw commands into their own functions | Huw Pascoe | 1 | -217/+222 | |
2017-09-23 | Remove pipeline.gpu_mode and fix minor issues | James Rowe | 1 | -12/+2 | |
2017-09-11 | GPU: Add draw for immediate and batch modes | James Rowe | 1 | -2/+17 | |
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-08-19 | pica/command_processor: build geometry pipeline and run geometry shader | wwylele | 1 | -27/+27 | |
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-07 | pica: upload shared shader code to both unit | wwylele | 1 | -25/+37 | |
2017-05-20 | pica/swrasterizer: implement procedural texture | wwylele | 1 | -0/+31 | |
2017-05-17 | pica: use correct register value for shader bool_uniforms | wwylele | 1 | -2/+2 | |
variable value is not masked. the masked and combined register value should be used instead | |||||
2017-05-12 | Pica: Write GS registers | Jannik Vogel | 1 | -0/+52 | |
This adds the handlers for the geometry shader register writes which will call the functions from the previous commit to update registers for the GS. | |||||
2017-05-12 | Pica: Write shader registers in functions | Jannik Vogel | 1 | -57/+103 | |
The commit after this one adds GS register writes, so this moves the VS handlers into functions so they can be re-used and extended more easily. | |||||
2017-02-09 | VideoCore: Split regs.h inclusions | Yuri Kunde Schlesner | 1 | -0/+2 | |
2017-02-09 | VideoCore: Use union to index into Regs struct | Yuri Kunde Schlesner | 1 | -4/+8 | |
Also remove some unused members. | |||||
2017-02-04 | VideoCore: Move Regs to its own file | Yuri Kunde Schlesner | 1 | -1/+1 | |
2017-02-04 | VideoCore: Split geometry pipeline regs from Regs struct | Yuri Kunde Schlesner | 1 | -25/+26 | |
2017-02-04 | VideoCore: Split texturing regs from Regs struct | Yuri Kunde Schlesner | 1 | -12/+12 | |
2017-02-04 | VideoCore: Split rasterizer regs from Regs struct | Yuri Kunde Schlesner | 1 | -2/+3 | |
2017-01-30 | VideoCore: Split shader output writing from semantic loading | Yuri Kunde Schlesner | 1 | -6/+8 | |
2017-01-30 | VideoCore: Consistently use shader configuration to load attributes | Yuri Kunde Schlesner | 1 | -2/+2 | |
2017-01-30 | VideoCore: Use correct register for immediate mode attribute count | Yuri Kunde Schlesner | 1 | -6/+7 | |
2017-01-30 | VideoCore: Rename some types to more accurate names | Yuri Kunde Schlesner | 1 | -6/+5 | |
2017-01-30 | VideoCore: Change misleading register names | Yuri Kunde Schlesner | 1 | -2/+3 | |
A few registers had names such as "count" or "number" when they actually contained the maximum (that is, count - 1). This can easily lead to hard to notice off by one errors. | |||||
2017-01-26 | VideoCore/Shader: Move entry_point to SetupBatch | Yuri Kunde Schlesner | 1 | -4/+4 | |
2017-01-26 | VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetup | Yuri Kunde Schlesner | 1 | -4/+4 | |
2017-01-26 | Shader: Remove OutputRegisters struct | Yuri Kunde Schlesner | 1 | -3/+4 | |
2017-01-26 | VideoCore/Shader: Split shader uniform state and shader engine | Yuri Kunde Schlesner | 1 | -5/+8 | |
Currently there's only a single dummy implementation, which will be split in a following commit. | |||||
2017-01-26 | VideoCore/Shader: Use only entry_point as ShaderSetup param | Yuri Kunde Schlesner | 1 | -2/+2 | |
This removes all implicit dependency of ShaderState on global PICA state. | |||||
2017-01-26 | VideoCore/Shader: Extract input vertex loading code into function | Yuri Kunde Schlesner | 1 | -2/+4 | |
2016-12-16 | VideoCore/Shader: Extract DebugData out from UnitState | Yuri Kunde Schlesner | 1 | -2/+2 | |
2016-12-15 | VideoCore: Make profiling scope more representative | Yuri Kunde Schlesner | 1 | -0/+3 | |
2016-12-15 | VideoCore: Inline IsPicaTracing | Yuri Kunde Schlesner | 1 | -1/+4 | |
Speeds up ALBW main menu slightly (~3%) | |||||
2016-12-15 | VideoCore: Eliminate an unnecessary copy in the drawcall loop | Yuri Kunde Schlesner | 1 | -3/+1 | |
2016-12-11 | Add all services to the Service namespace | Lioncash | 1 | -1/+1 | |
Previously there was a split where some of the services were in the Service namespace and others were not. | |||||
2016-11-27 | GPU: Remove the broken frame_skip option. | Emmanuel Gil Peyrot | 1 | -4/+0 | |
Fixes #1960. | |||||
2016-11-24 | Cache Vertices instead of Output registers (#2165) | jphalimi | 1 | -6/+7 | |
This patch brings +3% performance improvement on average. It removes ToVertex() as an important hotspot of the emulator. | |||||
2016-11-22 | Fix format error from #2195 | wwylele | 1 | -1/+1 | |
2016-11-20 | GPU/CiTrace: Avoid calling GetTextures() when not necessary. | Subv | 1 | -6/+5 | |
2016-10-20 | Fix typos | Ricardo de Almeida Gonzaga | 1 | -1/+1 | |
2016-09-21 | Use negative priorities to avoid special-casing the self-include | Yuri Kunde Schlesner | 1 | -1/+1 | |
2016-09-21 | Remove empty newlines in #include blocks. | Emmanuel Gil Peyrot | 1 | -4/+1 | |
This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation. | |||||
2016-09-19 | Manually tweak source formatting and then re-run clang-format | Yuri Kunde Schlesner | 1 | -1/+2 | |
2016-09-18 | Sources: Run clang-format on everything. | Emmanuel Gil Peyrot | 1 | -321/+328 | |
2016-06-07 | Pica: Add fog state | Jannik Vogel | 1 | -0/+14 | |
2016-05-16 | Retrieve shader result from new OutputRegisters-type | Jannik Vogel | 1 | -8/+13 | |
2016-05-12 | Move default_attributes into Pica state | Jannik Vogel | 1 | -1/+1 | |
2016-05-11 | Turn ShaderSetup into struct | Jannik Vogel | 1 | -4/+4 | |
2016-05-09 | vertex_loader: Add constructors to facilitate immediate and two-step initialization | Lioncash | 1 | -2/+1 | |
2016-05-04 | Pica: Rename VertexLoaded breakpoint to VertexShaderInvocation | Jannik Vogel | 1 | -6/+4 | |
2016-04-30 | VideoCore: Run include-what-you-use and fix most includes. | Emmanuel Gil Peyrot | 1 | -8/+14 | |
2016-04-29 | Common: Remove section measurement from profiler (#1731) | Yuri Kunde Schlesner | 1 | -4/+0 | |
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 | Move and rename the MemoryAccesses class to MemoryAccessTracker. | Henrik Rydgard | 1 | -1/+1 | |
2016-04-28 | Don't keep base_address in the loader, it doesn't belong there (with it, the loader can't be cached). | Henrik Rydgard | 1 | -3/+4 | |
2016-04-28 | Refactor: Extract VertexLoader from command_processor.cpp. | Henrik Rydgard | 1 | -124/+10 | |
Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached. | |||||
2016-04-28 | Remove late accesses to attribute_config | Henrik Rydgard | 1 | -5/+7 | |
2016-04-14 | shader: Remove unused 'state' argument from 'Setup' function. | bunnei | 1 | -2/+2 | |
2016-04-10 | Pica: Remove geometry dumper (PICA_DUMP_GEOMETRY) | Jannik Vogel | 1 | -19/+0 | |
2016-03-24 | Pica: Improve accuracy of immediate-mode support | Yuri Kunde Schlesner | 1 | -20/+26 | |
This partially fixes Etrian Odyssey IV. | |||||
2016-03-17 | video_core: Don't cast away const | Lioncash | 1 | -5/+6 | |
2016-03-17 | PICA: Alignment happens locally in vertex | Jannik Vogel | 1 | -6/+6 | |
2016-03-13 | PICA: Align vertex attributes | Jannik Vogel | 1 | -1/+5 | |
2016-03-09 | renderer_base: Don't directly expose the rasterizer unique_ptr | Lioncash | 1 | -5/+5 | |
There's no reason to allow direct access to the unique_ptr instance. Only its contained pointer. | |||||
2016-03-03 | Add immediate mode vertex submission | Dwayne Slater | 1 | -1/+47 | |
2016-02-21 | Fix out of bounds array access when loading a component >= 12 | Dwayne Slater | 1 | -1/+4 | |
2016-02-21 | Add support for padding vertex attributes | Dwayne Slater | 1 | -6/+13 | |
2016-02-12 | BitField: Make trivially copyable and remove assignment operator | MerryMage | 1 | -2/+2 | |
2016-02-05 | pica_types: Replace float24/20/16 with a template class. | bunnei | 1 | -8/+8 | |
2016-02-05 | command_processor: Add an assertion to ensure LUTs are not written past their boundaries. | bunnei | 1 | -0/+3 | |
2016-02-05 | pica: Implement fragment lighting LUTs. | bunnei | 1 | -0/+15 | |
2016-01-17 | command_processor: Get rid of variable shadowing | Lioncash | 1 | -2/+1 | |
2015-12-08 | VideoCore: Unify interface to OpenGL and SW rasterizers | Yuri Kunde Schlesner | 1 | -17/+10 | |
This removes explicit checks sprinkled all over the codebase to instead just have the SW rasterizer expose an implementation with no-ops for most operations. | |||||
2015-11-10 | GPU/Loaders: Log an error when a loader tries to load from a component beyond the available ones (12). | Subv | 1 | -0/+2 | |
Related to #1170 | |||||
2015-09-11 | video_core: Reorganize headers | Lioncash | 1 | -11/+10 | |
2015-09-02 | video_core: Fix format specifiers warnings | aroulin | 1 | -1/+1 | |
2015-08-30 | GPU: Implemented register 0x22A. | Subv | 1 | -1/+2 | |
This is the equivalent of the "first" parameter in glDrawArrays, it tells the GPU the vertex index at which to start rendering. Register 0x22A doesn't affect indexed rendering. | |||||
2015-08-25 | Integrate the MicroProfile profiling library | Yuri Kunde Schlesner | 1 | -0/+4 | |
This brings goodies such as a configurable user interface and multi-threaded timeline view. | |||||
2015-08-16 | Introduce a shader tracer to allow inspection of input/output values for each processed instruction. | Tony Wasserka | 1 | -1/+1 | |
2015-08-15 | Shader: Define a common interface for running vertex shader programs. | bunnei | 1 | -1/+4 | |
2015-08-15 | Shader: Move shader code to its own subdirectory, "shader". | bunnei | 1 | -1/+1 | |
2015-08-15 | GPU: Refactor "VertexShader" namespace to "Shader". | bunnei | 1 | -10/+9 | |
- Also renames "vertex_shader.*" to "shader_interpreter.*" | |||||
2015-08-05 | Videocore: Implement simple vertex caching | Yuri Kunde Schlesner | 1 | -62/+89 | |
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-07-26 | citra-qt/command list: Add mask column | Lectem | 1 | -14/+17 | |
2015-07-26 | VideoCore: #ifdef out some debugging routines | Yuri Kunde Schlesner | 1 | -1/+9 | |
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-23 | VideoCore: Fix values of unset components in input attribute arrays | Yuri Kunde Schlesner | 1 | -42/+38 | |
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 | Qt/GPU Breakpoints: Added three more breakpoint types: | Subv | 1 | -2/+2 | |
* IncomingDisplayTransfer: Triggered just before a display transfer is performed. * GSPCommandProcessed: Triggered right after a GSP command is processed. * BufferSwapped: Triggered when the frames flip | |||||
2015-07-19 | Video_Core : Type fixes | zawata | 1 | -1/+1 | |
2015-07-19 | Video_Core : Fix Conversion Warnings | zawata | 1 | -1/+1 | |
2015-07-15 | Pica/Shader: Add geometry shader definitions. | Tony Wasserka | 1 | -39/+39 | |
2015-07-15 | Pica/CommandProcessor: Move default attribute setup to the proper position. | Tony Wasserka | 1 | -40/+40 | |
2015-07-13 | Clean up command_processor.cpp. | Tony Wasserka | 1 | -22/+27 | |
2015-07-13 | Add CiTrace recording support. | Tony Wasserka | 1 | -2/+53 | |
This is exposed in the GUI as a new "CiTrace Recording" widget. Playback is implemented by a standalone 3DS homebrew application (which only runs reliably within Citra currently; on an actual 3DS it will often crash still). | |||||
2015-06-28 | CitraQt: Cleanup includes. | Emmanuel Gil Peyrot | 1 | -5/+7 | |
2015-05-31 | Pica: Implement command buffer execution registers. | bunnei | 1 | -32/+38 | |
2015-05-29 | Remove every trailing whitespace from the project (but externals). | Emmanuel Gil Peyrot | 1 | -4/+4 | |
2015-05-23 | Pica: Create 'State' structure and move state memory there. | bunnei | 1 | -24/+23 | |
2015-05-23 | OpenGL renderer | tfarley | 1 | -3/+23 | |
2015-05-17 | GPU/DefaultAttributes: Clear up a comment in command_processor | Subv | 1 | -2/+2 | |
2015-05-17 | GPU/DefaultAttributes: Let the attribute data from the loaders overwrite the default attributes, if set. | Subv | 1 | -21/+23 | |
closes #735 | |||||
2015-05-09 | Memory: Add GetPhysicalPointer helper function | Yuri Kunde Schlesner | 1 | -2/+2 | |
2015-05-09 | Memory: Support more regions in the VAddr-PAddr translation functions | Yuri Kunde Schlesner | 1 | -2/+2 | |
Also adds better documentation and removes the one-off reimplementation of the function in pica.h. | |||||
2015-05-07 | GPU: Implemented default vertex shader attributes. | Subv | 1 | -27/+71 | |
Fixes some games crashing. | |||||
2015-03-02 | Add profiling infrastructure and widget | Yuri Kunde Schlesner | 1 | -0/+6 | |
2015-02-18 | Pica/CommandProcessor: Properly implement shader load destination offset registers. | Tony Wasserka | 1 | -18/+4 | |
2015-02-18 | Pica/CommandProcessor: Work around initialized vertex attributes some more. | Tony Wasserka | 1 | -2/+8 | |
2014-12-31 | Pica/CommandProcessor: Cleanups. | Tony Wasserka | 1 | -3/+4 | |
2014-12-31 | Pica/CommandProcessor: Workaround games not setting the input position's w component. | Tony Wasserka | 1 | -0/+14 | |
2014-12-31 | Pica/CommandProcessor: Add support for integer uniforms. | Tony Wasserka | 1 | -0/+13 | |
2014-12-29 | GPU: Implement frameskip and remove forced framebuffer swap hack. | bunnei | 1 | -0/+5 | |
2014-12-21 | More warning cleanups | Chin | 1 | -2/+2 | |
2014-12-21 | License change | purpasmart96 | 1 | -1/+1 | |
2014-12-20 | Pica: Add support for boolean uniforms. | Tony Wasserka | 1 | -0/+6 | |
2014-12-20 | Pica/DebugUtils: Add an event triggered after loading a vertex. | Tony Wasserka | 1 | -0/+3 | |
2014-12-20 | Pica/CommandProcessor: Add a safety check for invalid (?) GPU configurations. | Tony Wasserka | 1 | -0/+7 | |
2014-12-20 | Pica/CommandProcessor: Fix vertex decoding if multiple memory areas are accessed for different attributes. | Tony Wasserka | 1 | -7/+8 | |
2014-12-20 | Pica: Unify ugly address translation hacks. | Tony Wasserka | 1 | -2/+2 | |
2014-12-13 | Convert old logging calls to new logging macros | Yuri Kunde Schlesner | 1 | -3/+3 | |
2014-12-10 | GSP: Trigger GPU interrupts at more accurate locations. | bunnei | 1 | -0/+6 | |
2014-12-10 | GPU: Fixed bug in command list size decoding. | bunnei | 1 | -1/+2 | |
2014-12-09 | Pica/DebugUtils: Add breakpoint functionality. | Tony Wasserka | 1 | -0/+13 | |
2014-12-01 | Silence a few -Wsign-compare warnings. | Rohit Nirmal | 1 | -1/+1 | |
2014-10-30 | Fix some warnings | Sean | 1 | -1/+1 | |
2014-10-08 | Fix warnings in video_core | Lioncash | 1 | -6/+6 | |
2014-08-25 | Pica: Consolidate the primitive assembly code in PrimitiveAssembly and GeometryDumper. | Tony Wasserka | 1 | -4/+16 | |
2014-08-25 | Pica/DebugUtils: Add convenient tev setup printer. | Tony Wasserka | 1 | -0/+2 | |
2014-08-25 | Pica/citra-qt: Replace command list view and command list debugging code with something more sophisticated. | Tony Wasserka | 1 | -0/+2 | |
2014-08-25 | Pica/CommandProcessor: Implement parameter masking. | Tony Wasserka | 1 | -5/+13 | |
2014-08-25 | Pica: Add debug utility functions for dumping geometry data. | Tony Wasserka | 1 | -0/+8 | |
2014-08-12 | Pica: Add primitive assembly stage. | Tony Wasserka | 1 | -1/+2 | |
2014-08-12 | Pica: Add vertex shader implementation. | Tony Wasserka | 1 | -5/+103 | |
2014-08-12 | Pica: Implement vertex loading. | Tony Wasserka | 1 | -1/+80 | |
2014-08-12 | Pica: Add command processor. | Tony Wasserka | 1 | -0/+60 | |