dolphin/Source/Core/VideoCommon
mimimi085181 2f8e0c9bb9 Allow multiple texture cache entries for textures at the same address
This is the same trick which is used for Metroid's fonts/texts, but for all textures. If 2 different textures at the same address are loaded during the same frame, create a 2nd entry instead of overwriting the existing one. If the entry was overwritten in this case, there wouldn't be any caching, which results in a big performance drop.

The restriction to textures, which are loaded during the same frame, prevents creating lots of textures when textures are used in the regular way. This restriction is new. Overwriting textures, instead of creating new ones is faster, if the old ones are unlikely to be used again.

Since this would break efb copies, don't do it for efb copies.

Castlevania 3 goes from 80 fps to 115 fps for me.

There might be games that need a higher texture cache accuracy with this, but those games should also see a performance boost from this PR.

Some games, which use paletted textures, which are not efb copies, might be faster now. And also not require a higher texture cache accuracy anymore. (similar sitation as PR https://github.com/dolphin-emu/dolphin/pull/1916)
2015-02-18 23:54:40 +01:00
..
AVIDump.cpp Windows AVIDump: support "silent" frame dumping 2015-02-14 23:38:14 +01:00
AVIDump.h Proper Audio/Video Dumping 2014-10-09 00:06:04 -04:00
BPFunctions.cpp VideoCommon: Merge LineGeometryShader into GeometryShaderGen. 2014-12-15 22:47:42 +01:00
BPFunctions.h VideoCommon: Merge LineGeometryShader into GeometryShaderGen. 2014-12-15 22:47:42 +01:00
BPMemory.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
BPMemory.h Silence some -Wswitch-default warnings. 2014-12-11 22:23:05 -06:00
BPStructs.cpp VideoCommon: split VertexLoaderBase from VertexLoader 2014-12-21 14:12:43 +01:00
BPStructs.h Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
BoundingBox.cpp VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
BoundingBox.h VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
CMakeLists.txt [AArch64] Implement vertex loader recompiler. 2015-02-16 16:51:32 -06:00
CPMemory.cpp Fix indentation 2015-01-07 21:51:47 +01:00
CPMemory.h VertexLoaderX64: support VAT.ByteDequant=0 2015-01-20 09:23:15 +01:00
CommandProcessor.cpp Remove AtBreakpoint() from ReadIdle. Fixes Rogue Squadron 2 without 2014-12-27 19:16:50 -05:00
CommandProcessor.h Add the 'desynced GPU thread' mode. 2014-09-28 21:34:29 -04:00
ConstantManager.h Make zfreeze use screenspace coordinates independant of IR. 2015-01-23 03:32:31 +13:00
DataReader.h DataReader: turn WritePointer into GetPointer 2015-01-18 12:59:33 +01:00
Debugger.cpp Core: Remove UpdateFPSDisplay 2014-08-19 10:05:58 -04:00
Debugger.h Remove some unnecessary semicolons 2014-09-11 13:05:31 -04:00
DriverDetails.cpp DriverDetails: Remove Intel Structs bug since it doesn't affect us anymore. 2014-12-28 23:28:00 +01:00
DriverDetails.h Minor consistency changes 2015-01-12 15:18:18 -05:00
FPSCounter.cpp FPSCounter: Initialize members. 2014-07-26 14:37:18 +02:00
FPSCounter.h FPSCounter: Remove redundant destructor. 2014-07-18 12:49:40 +02:00
Fifo.cpp FIFO: allocate slightly more for SIMD vertex loader overreads 2014-12-10 05:52:55 -08:00
Fifo.h VideoCommon: fifo cleanups 2014-12-09 18:56:27 +01:00
FramebufferManagerBase.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
FramebufferManagerBase.h Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
GeometryShaderGen.cpp GeometryShaderGen: Perspective divide the line coordinates before comparing the angle. 2015-01-31 23:32:23 +01:00
GeometryShaderGen.h VideoCommon: Make IsPassthrough() a function of the ShaderUid. 2014-12-19 14:10:53 +01:00
GeometryShaderManager.cpp Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
GeometryShaderManager.h GeometryShaderManager: Set stereo parameters in a SetConstants() call. 2014-12-20 13:16:26 +01:00
HiresTextures.cpp CustomTexture: fix texture format 2015-01-21 23:33:42 +01:00
HiresTextures.h CustomTexture: also support the legacy format 2015-01-21 21:22:55 +01:00
ImageWrite.cpp Various formatting and consistency fixes 2014-11-13 22:42:18 -05:00
ImageWrite.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
IndexGenerator.cpp Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
IndexGenerator.h Video backends: warn on usage of GL_DRAW_QUADS_2. 2014-05-17 11:55:32 -07:00
LightingShaderGen.h Cleaned up whitespace 2015-01-21 22:30:41 -07:00
LookUpTables.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
MainBase.cpp Made the CPU thread wait for the GPU thread to swap, when XFB is enabled. May fix some of the "FIFO is overflowed by GatherPipe ! CPU thread is too fast!" errors. 2015-01-12 19:40:43 +11:00
MainBase.h Unify three types of non-FIFO requests to the GPU thread around Common::Event and Common::Flag. 2014-08-26 12:43:39 -04:00
NativeVertexFormat.h Stop doing nastly shit to OpenGL stream buffers. 2015-01-24 14:41:51 +13:00
OnScreenDisplay.cpp OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OnScreenDisplay.h OnScreenDisplay: Allow for different colored messages 2015-02-07 17:35:21 -05:00
OpcodeDecoding.cpp VertexLoaderManager: assimilate GetVertexSize() 2015-01-31 09:23:50 +01:00
OpcodeDecoding.h VideoCommon: cleanup OpcodeDecoder 2014-12-09 18:56:27 +01:00
PerfQueryBase.cpp clang-modernize -use-nullptr 2014-03-09 21:14:26 +01:00
PerfQueryBase.h Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
PixelEngine.cpp Clean up usage of ScheduleEvent_Threadsafe. 2015-01-30 14:48:23 -08:00
PixelEngine.h Reimplement Bounding Box calculation using the software renderer. 2014-10-10 12:27:06 +01:00
PixelShaderGen.cpp A few small cleanups based on code review. 2015-01-23 04:38:36 +13:00
PixelShaderGen.h A few small cleanups based on code review. 2015-01-23 04:38:36 +13:00
PixelShaderManager.cpp Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
PixelShaderManager.h Ensure that ZSlopes save/restore state correctly. 2015-01-23 03:32:31 +13:00
PostProcessing.cpp Use emplace_* functions where in-place construction is preferable 2015-02-04 11:39:08 -05:00
PostProcessing.h PostProcessing: Add layered stereoscopy support. 2014-11-23 14:23:41 +01:00
RenderBase.cpp Minor consistency changes 2015-01-12 15:18:18 -05:00
RenderBase.h Minor consistency changes 2015-01-12 15:18:18 -05:00
ShaderGenCommon.h Make zfreeze use screenspace coordinates independant of IR. 2015-01-23 03:32:31 +13:00
Statistics.cpp TexCache: also incude textures within the render target pool 2015-01-18 19:47:48 +01:00
Statistics.h TexCache: also incude textures within the render target pool 2015-01-18 19:47:48 +01:00
TextureCacheBase.cpp Allow multiple texture cache entries for textures at the same address 2015-02-18 23:54:40 +01:00
TextureCacheBase.h Allow multiple texture cache entries for textures at the same address 2015-02-18 23:54:40 +01:00
TextureConversionShader.cpp Fix regression for D3D EFB depth copies. 2015-02-03 11:27:27 -08:00
TextureConversionShader.h Include CommonTypes.h instead of Common.h. 2014-09-08 15:39:58 -04:00
TextureDecoder.h TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder_Common.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder_Generic.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
TextureDecoder_x64.cpp TexCache: remove PC_TexFormat 2015-01-18 19:47:48 +01:00
VertexLoader.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoader.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderARM64.cpp [AArch64] Change the vertex loader over to using unscaled loadstores. 2015-02-16 22:03:09 -06:00
VertexLoaderARM64.h [AArch64] Change the vertex loader over to using unscaled loadstores. 2015-02-16 22:03:09 -06:00
VertexLoaderBase.cpp [AArch64] Implement vertex loader recompiler. 2015-02-16 16:51:32 -06:00
VertexLoaderBase.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderManager.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderManager.h VertexLoaderManager: assimilate GetVertexSize() 2015-01-31 09:23:50 +01:00
VertexLoaderUtils.h VideoSW: rewrite VertexLoader to use the VideoCommon one 2014-12-13 10:29:08 +01:00
VertexLoaderX64.cpp Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoaderX64.h Change RunVertices' function arguments. 2015-02-13 12:16:06 -06:00
VertexLoader_Color.cpp VertexLoader: small clean up 2015-01-26 22:24:06 +01:00
VertexLoader_Color.h VertexLoader: Add a VertexLoader pointer to each function call 2014-12-21 14:13:04 +01:00
VertexLoader_Normal.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_Normal.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexLoader_Position.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_Position.h Add missing includes where headers depend on other headers having been included first. 2014-10-21 21:22:16 -04:00
VertexLoader_TextCoord.cpp VertexLoader: remove non-JIT SSE code 2015-01-20 01:51:07 +01:00
VertexLoader_TextCoord.h VertexLoader: Change VtxDesc to use u64 instead of u32 2014-09-01 11:18:02 +02:00
VertexManagerBase.cpp Fix a buffer underrun in CalculateZSlope. 2015-01-25 20:31:20 +13:00
VertexManagerBase.h Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VertexShaderGen.cpp ShaderGen: Fix pixel offset correction 2015-02-11 20:54:15 +01:00
VertexShaderGen.h VideoCommon: Assume we always use a geometry shader, not just for stereoscopy. 2014-12-15 22:47:41 +01:00
VertexShaderManager.cpp Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VertexShaderManager.h Coding style cleanup from the zfreeze merge 2015-01-24 15:16:48 -05:00
VideoBackendBase.cpp Remove an old GLES define that I missed. 2015-01-23 14:30:23 -06:00
VideoBackendBase.h OGL: implement bounding box support with ssbo 2014-11-17 21:20:32 +01:00
VideoCommon.h VideoCommon: Rename s_pCurBufferPointer 2014-12-09 18:56:27 +01:00
VideoCommon.vcxproj xxhash: Add cmake + VS files 2015-01-21 07:35:34 +01:00
VideoCommon.vcxproj.filters VertexLoader: add new JIT 2015-01-18 13:29:34 +01:00
VideoConfig.cpp Merge pull request #1948 from magumagu/remove-efb-cache 2015-01-27 09:42:15 +01:00
VideoConfig.h Merge pull request #1948 from magumagu/remove-efb-cache 2015-01-27 09:42:15 +01:00
VideoState.cpp VideoCommon: Add a separate constants buffer for the geometry shader. 2014-12-14 21:23:13 +01:00
VideoState.h Convert some more header inclusions into forward declarations 2014-07-29 20:55:07 -04:00
XFMemory.cpp Video backends: mass-replace "xfregs" with "xfmem". 2014-05-16 18:58:07 -07:00
XFMemory.h Lighting Attenuation Fixes 2015-01-21 15:55:32 -07:00
XFStructs.cpp VideoCommon: Add a separate constants buffer for the geometry shader. 2014-12-14 21:23:13 +01:00
XFStructs.h Convert all includes to relative paths. 2014-02-18 02:19:10 -05:00
sfont.inc VideoCommon: Start putting common texture decoding code in TextureDecoder_Common 2014-09-04 18:36:53 -07:00