summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexLoader.cpp
AgeCommit message (Collapse)Author
2015-06-07zfreeze: cache vertex positionsTillmann Karras
Suggested by degasus.
2015-05-25Merge pull request #2274 from degasus/disable_bboxRyan Houdek
Disable bbox
2015-05-25Set copyright year to when a file was createdTillmann Karras
2015-05-25Update license headers to GPLv2+Tillmann Karras
2015-05-25BBox: remove now unreachable SW bbox implementationdegasus
2015-05-25VideoCommon: Make BBox emulation optionaldegasus
2015-03-18VertexLoaders: make positions more compactTillmann Karras
2015-02-25Formatting/Whitespace CleanupStevoisiak
Various fixes to formatting and whitespace
2015-02-13Change RunVertices' function arguments.Ryan Houdek
This reduces some dumb state shuffling when calling the emitted vertex loaders.
2015-01-26VertexLoader: small clean upTillmann Karras
2015-01-20VertexLoader: never reset alpha in 8888 colorsTillmann Karras
Fixes the opening menu of Xenoblade Chronicles.
2015-01-20VertexLoader: remove weird lineTillmann Karras
2015-01-20VertexLoader: remove non-JIT SSE codeTillmann Karras
2015-01-19VertexLoader: fix position offset bugTillmann Karras
2015-01-18VertexLoader: add new JITTillmann Karras
2015-01-18VertexLoader: remove old JITTillmann Karras
2015-01-18DataReader: turn WritePointer into GetPointerTillmann Karras
2014-12-21VertexLoader: Skip vertices with position index = -1degasus
2014-12-21VertexLoader: Merge dummy functionsdegasus
2014-12-21VertexLoader: Add a VertexLoader pointer to each function calldegasus
2014-12-21VideoCommon: split VertexLoaderBase from VertexLoaderdegasus
2014-12-21VideoCommon: Move NativeVertexFormat cache to VertexLoaderManagerdegasus
2014-12-21VideoLoader: remove VAT_*_FRACBITSdegasus
They are used to remove the flush amounts, but as we don't flush anymore on vertex loader changes (only on native vertex format right now), this optimization is now unneeded. This will allow us to hard code the frac factors within the vertex loaders.
2014-12-09VideoCommon: clean up VertexLoaderdegasus
2014-12-09VideoCommon: Rename s_pCurBufferPointerdegasus
2014-12-09VideoCommon: cleanup OpcodeDecoderdegasus
2014-12-03Vertex loader: optimize texmtx_write_float4Fiora
Seems to be pretty high in the profile in some geometry-heavy games like The Last Story, and the compiler-generated assembly is terrifyingly bad, so SSE-ize it.
2014-11-28Vertex loader: use ABI_CallFunctionFiora
Should result in faster/shorter code sequences on platforms where generated code is close enough to the code segment (e.g. Windows).
2014-11-20Vertex Loader: SSE implementations of more position/texcoord/normal formatsFiora
~35-45% faster NFS:HP2, possibly other vertex-bound games.
2014-11-17OGL: implement bounding box support with ssbodegasus
This implemention tries to be as accurate as the old SW implemention, but it will remove the dependcy of our vertexloader on videosw.
2014-11-05Host: Kill off Host_SysMessageLioncash
Equivalent facilities already exist.
2014-10-25Convert registersInUse to BitSet.comex
2014-10-15Remove setting to enable or disable Bounding Box calculation.crudelios
2014-10-10Get buildbot to compile.crudelios
2014-10-10Reimplement Bounding Box calculation using the software renderer.crudelios
2014-09-28Mechanical changes to move most CP state to a struct rather than separate ↵comex
globals. The next commit will add a separate copy of the struct and the ability for LoadCPReg to work on it.
2014-09-28Switch to an unordered_map as a micro-optimization.comex
2014-09-28Fix threading issue with vertex loader JIT.comex
VertexLoader::VertexLoader was setting loop_counter, a *static* variable, to 0. This was nonsensical, but harmless until I started to run it on a separate thread, where it had a chance of interfering with a running vertex translator. Switch to just using a register for the loop counter.
2014-09-28Some changes to VertexLoaderManager:comex
- Lazily create the native vertex format (which involves GL calls) from RunVertices rather than RefreshLoader itself, freeing the latter to be run from the CPU thread (hopefully). - In order to avoid useless allocations while doing so, store the native format inside the VertexLoader rather than using a cache entry. - Wrap the s_vertex_loader_map in a lock, for similar reasons.
2014-09-08Include CommonTypes.h instead of Common.h.Rohit Nirmal
2014-09-08Remove the inaccurately named ABI_PushAllCalleeSavedRegsAndAdjustStack (it ↵comex
didn't preserve FPRs!) and replace with ABI_PushRegistersAndAdjustStack. To avoid FPRs being pushed unnecessarily, I checked the uses: DSPEmitter doesn't use FPRs, and VertexLoader doesn't use anything but RAX, so I specified the register list accordingly. The regular JIT, however, does use FPRs, and as far as I can tell, it was incorrect not to save them in the outer routine. Since the dispatcher loop is only exited when pausing or stopping, this should have no noticeable performance impact.
2014-09-08Improve code and clarify parameters to ABI_Push/PopRegistersAndAdjustStack.comex
- Factor common work into a helper function. - Replace confusingly named "noProlog" with "rsp_alignment". Now that x86 is not supported, we can just specify it explicitly as 8 for clarity. - Add the option to include more frame size, which I'll need later. - Revert a change by magumagu in March which replaced MOVAPD with MOVUPD on account of 32-bit Windows, since it's no longer supported. True, apparently recent processors don't execute the former any faster if the pointer is, in fact, aligned, but there's no point using MOVUPD for something that's guaranteed to be aligned... (I discovered that GenFrsqrte and GenFres were incorrectly passing false to noProlog - they were, in fact, functions without prologs, the original meaning of the parameter - which caused the previous change to break. This is now fixed.)
2014-09-06Split some parts of UpdateBoundingBox into multiple lines. Also,Rohit Nirmal
fix issues causing failure on Lint.
2014-09-01VertexLoader: Change VtxDesc to use u64 instead of u32Pierre Bourdon
This is required to make packing consistent between compilers: with u32, MSVC would not allocate a bitfield that spans two u32s (it would leave a "hole").
2014-08-30VideoCommon: Clean up brace placementsLioncash
2014-08-04VertexLoader: do not prepare for vertices if we need to skip themPierre Bourdon
2014-08-03Merge pull request #428 from Sonicadvance1/x86_32-removalPierre Bourdon
Remove x86_32 support from Dolphin.
2014-08-03Remove x86_32 from VertexLoader.Ryan Houdek
2014-08-02VertexLoader: Remove more global state dependencies (this time ↵Pierre Bourdon
IndexGenerator and VertexManager)
2014-07-26VertexLoader: Remove global state dependency on g_nativeVertexFmtPierre Bourdon