summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexLoaderManager.cpp
AgeCommit message (Collapse)Author
2021-12-18Eliminate VarType for ComponentFormatPokechu22
2021-12-18VideoCommon: Move VertexLoaderManager logic out of CPStatePokechu22
2021-12-18Refactor OpcodeDecoding and FIFO analyzer to use callbacksPokechu22
2021-12-18Create and use CPArray enum classPokechu22
2021-12-18Convert OpcodeDecoder::Opcode and OpcodeDecoder::Primitive to enum classPokechu22
2021-07-05treewide: convert GPLv2+ license info to SPDX tagsPierre Bourdon
SPDX standardizes how source code conveys its copyright and licensing information. See https://spdx.github.io/spdx-spec/1-rationale/ . SPDX tags are adopted in many large projects, including things like the Linux kernel.
2021-05-07Move vertex size and component calculation to VertexLoaderBasePokechu22
2021-05-07Remove VertexLoader::ToStringPokechu22
2021-04-06Track and log CP commands 0x00/0x10/0x20 differently from other unknown commandsPokechu22
They appear to relate to perf queries, and combining them with truely unknown commands would probably hide useful information. Furthermore, 0x20 is issued by every title, so without this every title would be recorded as using an unknown command, which is very unhelpful.
2021-04-06Log a warning for inexact uses of MATINDEX or VCD commandsPokechu22
2021-04-06Add game quirks for unknown BP/CP/XF commandsPokechu22
2021-03-26Refactor CP array constants slightlyPokechu22
2021-03-06Convert BPMemory to BitField and enum classPokechu22
Additional changes: - For TevStageCombiner's ColorCombiner and AlphaCombiner, op/comparison and scale/compare_mode have been split as there are different meanings and enums if bias is set to compare. (Shift has also been renamed to scale) - In TexMode0, min_filter has been split into min_mip and min_filter. - In TexImage1, image_type is now cache_manually_managed. - The unused bit in GenMode is now exposed. - LPSize's lineaspect is now named adjust_for_aspect_ratio.
2021-03-06Convert CPMemory to BitField and enum classPokechu22
Additionally, VCacheEnhance has been added to UVAT_group1. According to YAGCD, this field is always 1. TVtxDesc also now has separate low and high fields whose hex values correspond with the proper registers, instead of having one 33-bit value. This change was made in a way that should be backwards-compatible.
2021-03-06Create constants for CP registers and masksPokechu22
2019-12-05VideoCommon/IndexGenerator: Eliminate static stateLioncash
Now that we've extracted all of the stateless functions that can be hidden, it's time to make the index generator a regular class with active data members. This can just be a member that sits within the vertex manager base class. By deglobalizing the state of the index generator we also get rid of the wonky dual-initializing that was going on within the OpenGL backend. Since the renderer is always initialized before the vertex manager, we now only call Init() once throughout the execution lifecycle.
2019-07-10VideoCommon/Statistics: Rename stats global to g_statsLioncash
Makes the global variable follow our convention of prefixing g_ on global variables to make it obvious in surrounding code that it's not a local variable.
2019-07-10VideoCommon/Statistics: Normalize statistic variable namesLioncash
Normalizes all variables related to statistics so that they follow our coding style. These are relatively low traffic areas, so this modification isn't too noisy.
2019-06-01Common/CommonFuncs: Remove now-unneccessary ArraySize functionLioncash
Since C++17, non-member std::size() is present in the standard library which also operates on regular C arrays. Given that, we can just replace usages of ArraySize with that where applicable. In many cases, we can just change the actual C array ArraySize() was called on into a std::array and just use its .size() member function instead. In some other cases, we can collapse the loops they were used in, into a ranged-for loop, eliminating the need for en explicit bounds query.
2019-05-31VideoCommon: Constrain the array_base registersbooto
The array_base registers as part of CP state do not seem to incorporate the upper bits in the physical address they try to access.
2019-05-06Reformat repo to clang-format 7.0 rulesTechjar
2019-02-19Move most backend functionality to VideoCommonStenzek
2018-03-14Assert: Uppercase assertion macrosLioncash
Macros should be all upper-cased. This is also kind of a wart that's been sticking out for quite a while now (we avoid prefixing underscores).
2017-07-30Vulkan: Uber shader supportStenzek
2017-07-30ShaderGen: Implement vertex ubershadersStenzek
2017-07-30VertexLoaderManager: Add methods to generate "uber" vertex formatsStenzek
These vertex formats enable all attributes. Inactive attributes are set to offset=0, and the smallest type possible. This "optimization" stops the NV compiler from generating variants of vertex shaders.
2017-05-18Remove D3D12Helios747
2017-03-26VertexLoaderManager: Return debug strings by valueLioncash
This also renames AppendListToString to VertexLoadersToString.
2017-03-26VertexLoaderBase: Return debug strings by valueLioncash
An out parameter for this sort of thing is a C++03 hold-over. This also renames AppendToString to ToString.
2017-02-18VertexManagerBase: Make CreateNativeVertexFormat return a unique_ptrLioncash
Much safer as opposed to just returning raw allocated memory.
2016-10-08Remove Frameskipanthony
2016-09-17VertexLoaderJit: Fix out-of-bounds access for zfreeze.degasus
This fixes a GCC6.1 warning.
2016-08-21VertexManagerBase: Get rid of static behaviorLioncash
2016-06-26VideoBackends: Merge Initialize and Shutdown functions.degasus
2016-06-24Reformat all the things. Have fun with merge conflicts.Pierre Bourdon
2016-02-15D3D12: Additions to VideoCommon to support D3D12 backend.hdcmeta
2016-01-31VideoCommon: Convert some DataReader includes into forward declarationsLioncash
Gets rid of some indirect inclusions in cpp files. Also this will reduce the amount of rebuilt files if changes occur in the DataReader header.
2016-01-17VideoCommon: Header cleanupLioncash
Also remedies places where the video backends and core rely on things being indirectly included.
2016-01-06VideoSW: Use more VideoCommondegasus
Now we require lots of empty functions, but this removes by far more duplicated code.
2015-12-22VertexLoaderBase: Get rid of explicit delete and newLioncash
2015-11-24NativeVertexFormat: Inline Initialize in contructordegasus
They were only called at once, so no need to seperate them. This also removes the only dereference of the NativeVertexFormat in VideoCommon, so backends may just return nullptr.
2015-11-02VideoCommon: VertexManager -> VertexManagerBaseTillmann Karras
It may be a bit weird to see calls to static functions in VertexManagerBase now, but at least it's easier to see what's going on.
2015-11-01VideoCommon: flush vertex manager if components changeTillmann Karras
2015-10-22VertexLoaderManager: symbolize magic constantTillmann Karras
2015-07-08VertexLoader: avoid empty lines in perf-$pid.mapTillmann Karras
2015-06-07zfreeze: cache vertex positionsTillmann Karras
Suggested by degasus.
2015-05-30Add a dirty flag for arraybases.Scott Mansell
Only loop through and call getPointers when something has actually changed. Worth about 2-4% speedup un SMG over the previous commit.
2015-05-30Clean up cached_arraybases. Update VideoSW to new scheme.Scott Mansell
Move ownership of cached_arraybases from CPMemory to VertexLoaderManager to better match it usage.
2015-05-29Fix invalid pointer errors in Burnout 2.Scott Mansell
Yet another story of games loading weird shit into registers. For some reason, Burnout 2 would (in rare situations) load invalid addresses into cp_state.array_bases. What would the real hardware do in this situation? Who knows, Burnout 2 doesn't actually enable the vertex array with the invalid address so nothing kinky happens. But dolphin tries to optimise things and starts using the address as soon as it is loaded into memory. This causes GetPointer (which is now much more vocal) to throw an error. The Fix: We don't call GetPointer until we are sure the vertex array has been enabled.
2015-05-25Merge pull request #2274 from degasus/disable_bboxRyan Houdek
Disable bbox