summaryrefslogtreecommitdiffstats
path: root/src/video_core/command_processor.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* GPU: Store uploaded GPU macros and keep track of the number of method parameters.Subv2018-03-181-15/+41
|
* GPU: Macros are specific to the Maxwell3D engine, so handle them internally.Subv2018-03-181-29/+0
|
* GPU: Process command mode 5 (IncreaseOnce) differently from other commands.Subv2018-03-171-5/+38
| | | | | | Accumulate all arguments before calling the desired method. Note: Maybe we should do the same for the NonIncreasing mode?
* Make a GPU class in VideoCore to contain the GPU state.Subv2018-02-121-22/+11
| | | | Also moved the GPU MemoryManager class to video_core since it makes more sense for it to be there.
* GPU: Added a command processor to decode the GPU pushbuffers and forward the commands to their respective engines.Subv2018-02-121-0/+130
|
* Remove references to PICA and rasterizers in video_coreJames Rowe2018-01-131-647/+0
|
* hle: Initial implementation of NX service framework and IPC.bunnei2017-10-151-1/+1
|
* Extracted the attribute setup and draw commands into their own functionsHuw Pascoe2017-10-041-217/+222
|
* Remove pipeline.gpu_mode and fix minor issuesJames Rowe2017-09-231-12/+2
|
* GPU: Add draw for immediate and batch modesJames Rowe2017-09-111-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.
* pica/command_processor: build geometry pipeline and run geometry shaderwwylele2017-08-191-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.
* pica: upload shared shader code to both unitwwylele2017-08-071-25/+37
|
* Merge pull request #2697 from wwylele/proctexYuri Kunde Schlesner2017-05-251-0/+31
|\ | | | | Implemented Procedural Texture (Texture Unit 3)
| * pica/swrasterizer: implement procedural texturewwylele2017-05-201-0/+31
| |
* | pica: use correct register value for shader bool_uniformswwylele2017-05-171-2/+2
| | | | | | | | variable value is not masked. the masked and combined register value should be used instead
* | Pica: Write GS registersJannik Vogel2017-05-121-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.
* | Pica: Write shader registers in functionsJannik Vogel2017-05-121-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.
* VideoCore: Split regs.h inclusionsYuri Kunde Schlesner2017-02-091-0/+2
|
* VideoCore: Use union to index into Regs structYuri Kunde Schlesner2017-02-091-4/+8
| | | | Also remove some unused members.
* VideoCore: Move Regs to its own fileYuri Kunde Schlesner2017-02-041-1/+1
|
* VideoCore: Split geometry pipeline regs from Regs structYuri Kunde Schlesner2017-02-041-25/+26
|
* VideoCore: Split texturing regs from Regs structYuri Kunde Schlesner2017-02-041-12/+12
|
* VideoCore: Split rasterizer regs from Regs structYuri Kunde Schlesner2017-02-041-2/+3
|
* VideoCore: Split shader output writing from semantic loadingYuri Kunde Schlesner2017-01-301-6/+8
|
* VideoCore: Consistently use shader configuration to load attributesYuri Kunde Schlesner2017-01-301-2/+2
|
* VideoCore: Use correct register for immediate mode attribute countYuri Kunde Schlesner2017-01-301-6/+7
|
* VideoCore: Rename some types to more accurate namesYuri Kunde Schlesner2017-01-301-6/+5
|
* VideoCore: Change misleading register namesYuri Kunde Schlesner2017-01-301-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.
* VideoCore/Shader: Move entry_point to SetupBatchYuri Kunde Schlesner2017-01-261-4/+4
|
* VideoCore/Shader: Move per-batch ShaderEngine state into ShaderSetupYuri Kunde Schlesner2017-01-261-4/+4
|
* Shader: Remove OutputRegisters structYuri Kunde Schlesner2017-01-261-3/+4
|
* VideoCore/Shader: Split shader uniform state and shader engineYuri Kunde Schlesner2017-01-261-5/+8
| | | | | Currently there's only a single dummy implementation, which will be split in a following commit.
* VideoCore/Shader: Use only entry_point as ShaderSetup paramYuri Kunde Schlesner2017-01-261-2/+2
| | | | | This removes all implicit dependency of ShaderState on global PICA state.
* VideoCore/Shader: Extract input vertex loading code into functionYuri Kunde Schlesner2017-01-261-2/+4
|
* Merge pull request #2319 from yuriks/profile-scopesbunnei2016-12-211-0/+3
|\ | | | | VideoCore: Make profiling scope more representative
| * VideoCore: Make profiling scope more representativeYuri Kunde Schlesner2016-12-151-0/+3
| |
* | Merge pull request #2318 from yuriks/trace-optbunnei2016-12-191-1/+4
|\ \ | | | | | | VideoCore: Inline IsPicaTracing
| * | VideoCore: Inline IsPicaTracingYuri Kunde Schlesner2016-12-151-1/+4
| |/ | | | | | | Speeds up ALBW main menu slightly (~3%)
* / VideoCore/Shader: Extract DebugData out from UnitStateYuri Kunde Schlesner2016-12-161-2/+2
|/
* VideoCore: Eliminate an unnecessary copy in the drawcall loopYuri Kunde Schlesner2016-12-151-3/+1
|
* Add all services to the Service namespaceLioncash2016-12-111-1/+1
| | | | | Previously there was a split where some of the services were in the Service namespace and others were not.
* GPU: Remove the broken frame_skip option.Emmanuel Gil Peyrot2016-11-271-4/+0
| | | | Fixes #1960.
* Cache Vertices instead of Output registers (#2165)jphalimi2016-11-241-6/+7
| | | | This patch brings +3% performance improvement on average. It removes ToVertex() as an important hotspot of the emulator.
* Fix format error from #2195wwylele2016-11-221-1/+1
|
* GPU/CiTrace: Avoid calling GetTextures() when not necessary.Subv2016-11-201-6/+5
|
* Fix typosRicardo de Almeida Gonzaga2016-10-201-1/+1
|
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-4/+1
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-191-1/+2
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-321/+328
|
* Pica: Add fog stateJannik Vogel2016-06-071-0/+14
|
* Merge pull request #1812 from JayFoxRox/refactor-shaderbunnei2016-06-011-8/+13
|\ | | | | Retrieve shader result from new OutputRegisters-type
| * Retrieve shader result from new OutputRegisters-typeJannik Vogel2016-05-161-8/+13
| |
* | Merge pull request #1733 from lioncash/vert_loaderbunnei2016-05-241-2/+1
|\ \ | |/ |/| VertexLoader: Minor changes
| * vertex_loader: Add constructors to facilitate immediate and two-step initializationLioncash2016-05-091-2/+1
| |
* | Move default_attributes into Pica stateJannik Vogel2016-05-121-1/+1
| |
* | Turn ShaderSetup into structJannik Vogel2016-05-111-4/+4
|/
* Pica: Rename VertexLoaded breakpoint to VertexShaderInvocationJannik Vogel2016-05-041-6/+4
|
* VideoCore: Run include-what-you-use and fix most includes.Emmanuel Gil Peyrot2016-04-301-8/+14
|
* Merge pull request #1730 from hrydgard/vertex-loaderbunnei2016-04-291-120/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove late accesses to attribute_config * Refactor: Extract VertexLoader from command_processor.cpp. Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached. * Move "&" to their proper place, add missing includes and make some properly relative. * Don't keep base_address in the loader, it doesn't belong there (with it, the loader can't be cached). * Optimize the vertex loader, nearly doubling its speed. * Debugger fix * Move and rename the MemoryAccesses class to MemoryAccessTracker.
| * Move and rename the MemoryAccesses class to MemoryAccessTracker.Henrik Rydgard2016-04-291-1/+1
| |
| * Don't keep base_address in the loader, it doesn't belong there (with it, the loader can't be cached).Henrik Rydgard2016-04-281-3/+4
| |
| * Refactor: Extract VertexLoader from command_processor.cpp.Henrik Rydgard2016-04-281-124/+10
| | | | | | | | Preparation for a similar concept to Dolphin or PPSSPP. These can be JIT-ed and cached.
| * Remove late accesses to attribute_configHenrik Rydgard2016-04-281-5/+7
| |
* | Common: Remove section measurement from profiler (#1731)Yuri Kunde Schlesner2016-04-291-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.
* shader: Remove unused 'state' argument from 'Setup' function.bunnei2016-04-141-2/+2
|
* Pica: Remove geometry dumper (PICA_DUMP_GEOMETRY)Jannik Vogel2016-04-101-19/+0
|
* Pica: Improve accuracy of immediate-mode supportYuri Kunde Schlesner2016-03-241-20/+26
| | | | This partially fixes Etrian Odyssey IV.
* Merge pull request #1535 from JayFoxRox/fix-alignbunnei2016-03-181-6/+6
|\ | | | | PICA: Alignment happens locally in vertex
| * PICA: Alignment happens locally in vertexJannik Vogel2016-03-171-6/+6
| |
* | video_core: Don't cast away constLioncash2016-03-171-5/+6
|/
* PICA: Align vertex attributesJannik Vogel2016-03-131-1/+5
|
* renderer_base: Don't directly expose the rasterizer unique_ptrLioncash2016-03-091-5/+5
| | | | | There's no reason to allow direct access to the unique_ptr instance. Only its contained pointer.
* Add immediate mode vertex submissionDwayne Slater2016-03-031-1/+47
|
* Merge pull request #1395 from ds84182/padding-attributesbunnei2016-02-251-7/+17
|\ | | | | Add support for padding vertex attributes
| * Fix out of bounds array access when loading a component >= 12Dwayne Slater2016-02-211-1/+4
| |
| * Add support for padding vertex attributesDwayne Slater2016-02-211-6/+13
| |
* | BitField: Make trivially copyable and remove assignment operatorMerryMage2016-02-121-2/+2
| |
* | pica_types: Replace float24/20/16 with a template class.bunnei2016-02-051-8/+8
| |
* | command_processor: Add an assertion to ensure LUTs are not written past their boundaries.bunnei2016-02-051-0/+3
| |
* | pica: Implement fragment lighting LUTs.bunnei2016-02-051-0/+15
|/
* command_processor: Get rid of variable shadowingLioncash2016-01-171-2/+1
|
* VideoCore: Unify interface to OpenGL and SW rasterizersYuri Kunde Schlesner2015-12-081-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.
* GPU/Loaders: Log an error when a loader tries to load from a component beyond the available ones (12).Subv2015-11-101-0/+2
| | | | Related to #1170
* video_core: Reorganize headersLioncash2015-09-111-11/+10
|
* video_core: Fix format specifiers warningsaroulin2015-09-021-1/+1
|
* Merge pull request #1059 from Subv/vertex_offsetbunnei2015-08-301-1/+2
|\ | | | | GPU: Implemented register 0x22A PICA_REG_DRAW_VERTEX_OFFSET
| * GPU: Implemented register 0x22A.Subv2015-08-301-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.
* | Integrate the MicroProfile profiling libraryYuri Kunde Schlesner2015-08-251-0/+4
|/ | | | | This brings goodies such as a configurable user interface and multi-threaded timeline view.
* Merge pull request #997 from Lectem/cmdlist_full_debugTony Wasserka2015-08-161-14/+17
|\ | | | | citra-qt: Improve pica command list widget (add mask, fix some issues)
| * citra-qt/command list: Add mask columnLectem2015-07-261-14/+17
| |
* | Introduce a shader tracer to allow inspection of input/output values for each processed instruction.Tony Wasserka2015-08-161-1/+1
| |
* | Shader: Define a common interface for running vertex shader programs.bunnei2015-08-151-1/+4
| |
* | Shader: Move shader code to its own subdirectory, "shader".bunnei2015-08-151-1/+1
| |
* | GPU: Refactor "VertexShader" namespace to "Shader".bunnei2015-08-151-10/+9
| | | | | | | | - Also renames "vertex_shader.*" to "shader_interpreter.*"
* | Videocore: Implement simple vertex cachingYuri Kunde Schlesner2015-08-051-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.
* | Merge pull request #963 from yuriks/gpu-fixesbunnei2015-07-291-42/+38
|\ \ | | | | | | Misc. GPU vertex loading fixes
| * | VideoCore: Fix values of unset components in input attribute arraysYuri Kunde Schlesner2015-07-231-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.
* | | VideoCore: #ifdef out some debugging routinesYuri Kunde Schlesner2015-07-261-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.
* | Merge pull request #892 from zawata/another-warning-fixesYuri Kunde Schlesner2015-07-251-1/+1
|\ \ | | | | | | Yet More Warning Fixes
| * | Video_Core : Type fixeszawata2015-07-191-1/+1
| | |
| * | Video_Core : Fix Conversion Warningszawata2015-07-191-1/+1
| | |
* | | Qt/GPU Breakpoints: Added three more breakpoint types:Subv2015-07-231-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
* | Merge pull request #929 from neobrain/geoshader_definitionsTony Wasserka2015-07-211-39/+39
|\ \ | |/ |/| Pica/Shader: Add geometry shader definitions.
| * Pica/Shader: Add geometry shader definitions.Tony Wasserka2015-07-151-39/+39
| |
* | Pica/CommandProcessor: Move default attribute setup to the proper position.Tony Wasserka2015-07-151-40/+40
|/
* Clean up command_processor.cpp.Tony Wasserka2015-07-131-22/+27
|
* Add CiTrace recording support.Tony Wasserka2015-07-131-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).
* CitraQt: Cleanup includes.Emmanuel Gil Peyrot2015-06-281-5/+7
|
* Pica: Implement command buffer execution registers.bunnei2015-05-311-32/+38
|
* Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-4/+4
|
* Pica: Create 'State' structure and move state memory there.bunnei2015-05-231-24/+23
|
* OpenGL renderertfarley2015-05-231-3/+23
|
* GPU/DefaultAttributes: Clear up a comment in command_processorSubv2015-05-171-2/+2
|
* GPU/DefaultAttributes: Let the attribute data from the loaders overwrite the default attributes, if set.Subv2015-05-171-21/+23
| | | | closes #735
* Memory: Add GetPhysicalPointer helper functionYuri Kunde Schlesner2015-05-091-2/+2
|
* Memory: Support more regions in the VAddr-PAddr translation functionsYuri Kunde Schlesner2015-05-091-2/+2
| | | | | Also adds better documentation and removes the one-off reimplementation of the function in pica.h.
* GPU: Implemented default vertex shader attributes.Subv2015-05-071-27/+71
| | | | Fixes some games crashing.
* Add profiling infrastructure and widgetYuri Kunde Schlesner2015-03-021-0/+6
|
* Pica/CommandProcessor: Properly implement shader load destination offset registers.Tony Wasserka2015-02-181-18/+4
|
* Pica/CommandProcessor: Work around initialized vertex attributes some more.Tony Wasserka2015-02-181-2/+8
|
* Pica/CommandProcessor: Cleanups.Tony Wasserka2014-12-311-3/+4
|
* Pica/CommandProcessor: Workaround games not setting the input position's w component.Tony Wasserka2014-12-311-0/+14
|
* Pica/CommandProcessor: Add support for integer uniforms.Tony Wasserka2014-12-311-0/+13
|
* GPU: Implement frameskip and remove forced framebuffer swap hack.bunnei2014-12-291-0/+5
|
* Merge pull request #322 from chinhodado/masterbunnei2014-12-221-2/+2
|\ | | | | More warning cleanups
| * More warning cleanupsChin2014-12-211-2/+2
| |
* | Merge pull request #291 from purpasmart96/licensebunnei2014-12-211-1/+1
|\ \ | |/ |/| License change
| * License changepurpasmart962014-12-211-1/+1
| |
* | Pica: Add support for boolean uniforms.Tony Wasserka2014-12-201-0/+6
| |
* | Pica/DebugUtils: Add an event triggered after loading a vertex.Tony Wasserka2014-12-201-0/+3
| |
* | Pica/CommandProcessor: Add a safety check for invalid (?) GPU configurations.Tony Wasserka2014-12-201-0/+7
| |
* | Pica/CommandProcessor: Fix vertex decoding if multiple memory areas are accessed for different attributes.Tony Wasserka2014-12-201-7/+8
| |
* | Pica: Unify ugly address translation hacks.Tony Wasserka2014-12-201-2/+2
|/
* Convert old logging calls to new logging macrosYuri Kunde Schlesner2014-12-131-3/+3
|
* GSP: Trigger GPU interrupts at more accurate locations.bunnei2014-12-101-0/+6
|
* GPU: Fixed bug in command list size decoding.bunnei2014-12-101-1/+2
|
* Pica/DebugUtils: Add breakpoint functionality.Tony Wasserka2014-12-091-0/+13
|
* Silence a few -Wsign-compare warnings.Rohit Nirmal2014-12-011-1/+1
|
* Fix some warningsSean2014-10-301-1/+1
|
* Fix warnings in video_coreLioncash2014-10-081-6/+6
|
* Pica: Consolidate the primitive assembly code in PrimitiveAssembly and GeometryDumper.Tony Wasserka2014-08-251-4/+16
|
* Pica/DebugUtils: Add convenient tev setup printer.Tony Wasserka2014-08-251-0/+2
|
* Pica/citra-qt: Replace command list view and command list debugging code with something more sophisticated.Tony Wasserka2014-08-251-0/+2
|
* Pica/CommandProcessor: Implement parameter masking.Tony Wasserka2014-08-251-5/+13
|
* Pica: Add debug utility functions for dumping geometry data.Tony Wasserka2014-08-251-0/+8
|
* Pica: Add primitive assembly stage.Tony Wasserka2014-08-121-1/+2
|
* Pica: Add vertex shader implementation.Tony Wasserka2014-08-121-5/+103
|
* Pica: Implement vertex loading.Tony Wasserka2014-08-121-1/+80
|
* Pica: Add command processor.Tony Wasserka2014-08-121-0/+60