summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoDX9/Src/VertexManager.cpp
AgeCommit message (Collapse)Author
2011-02-25D3D9/11: Fix that "Disable Dest. Alpha Pass" option...NeoBrainX
Thanks to NaturalViolence for reporting ;) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7244 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-01-27build fixin'hrydgard
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6939 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-01-27Clean out the long since bit-rotted video profiling code.Soren Jorvang
Profiler.{cpp,h} also happened to be the only dupliated filenames left in Source, the absence of which should make link-time optimization easier to get working. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6935 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-01-27DX9: Only enable dst alpha pass if the EFB format has an alpha channel.NeoBrainX
Guess it would be better if we made bpmem.blendmode.alphaupdate private to prevent improper usage... git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6932 8ced0084-cf51-0410-be5f-012b33b47a6e
2011-01-24DX11 code maintenance, part 4:NeoBrainX
Move blend state management from EmuGfxState to Renderer. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6905 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-12-05Merged the D3D9 debugger into VideoCommon/VideoUICommon:NeoBrainX
Separated UI from debugger functionality. Generally cleaned up that stuff. Most functionality needs to be reimplemented now, but will be available to D3D9, D3D11 as well as OpenGL then. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6523 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-11-18Move some shared gfx plugin code into VideoCommon. Changed "Renderer" class ↵Jordan Woyak
to use virtual functions. (setting stuff up for video plugin merging) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6433 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-21Put infrastructure in place so that other plugins may support dual-source ↵Nolan Check
blending. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6296 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-20Clarify texture cache code. Previously, there were THREE sets of texture ↵Nolan Check
dimensions, and it was hard to tell which set was for what purpose. Now, there are two: Real dimensions: Width and height of the original GameCube texture Virtual dimensions: Width and height of the texture used by dolphin-emu's renderer git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6291 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-19Merged common texture cache code from video plugins into VideoCommon. (DX11 ↵Jordan Woyak
native mipmaps currently broken, disabled) Hopefully everything else should still be working. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6288 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-04Fixed hires textures not scaling. Also increased max size of custom textures ↵baby.lueshi
to 2048x2048. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6254 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-10-03Merged identical VertexManager code from DX9/DX11/OGL plugins into ↵Jordan Woyak
VideoCommon. Still need to merge VertexManager::Flush (will be easier after TextureCache is merged). Purposely using a class/virtualfuncs rather than a namespace so multiple VertexManager can be in one plugin (VideoMergeNew? :p). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6249 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-09-28Minor code formatting:skidau
First step to bring a level of consistency between the video plug-ins - variable names, spacing, function names, function order, comments, file names. This will help us identify common code for VideoMerge. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6235 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-09-23i know still a lot to fix and much work to do but sometimes experiments are ↵Rodolfo Osvaldo Bogado
fun :) for all the plugins implemented per pixel lighting, this will make games that uses lighting a lot nice. (just look at mario sunshine and compare :)) for dx9: implemented temporal anaglyph stereo: just grab your red-cyan glasses and enjoy. stereo calibration: use stereo separation ( distance of the point from you are looking) and Focal Angle: the angle necessary to focus in one particular object. this settings are different in every games as they use different depth ranges. please for any regression and bug introduced by this commit. if you ask why i did not implement stereo in dx11 and opengl the reason is one: they don't work right when i have more time will try to find a way to make them work. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6224 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-30Remove more obsolete codeNolan Check
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6153 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-29fully implemented display list cache with vertex data included and added in ↵Rodolfo Osvaldo Bogado
all the plugins. still experimental, not totally optimized but must bring a nice speed up please test for regressions an error. an please Linux people fix scons :) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6149 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-29Remove a bunch of freshly-obsolete codeNolan Check
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6148 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-08-04Fix saving states on mesa3d and clean up the handling of asynchronous requestspierre
(those originating from a thread other than the gpu thread) glxMakeCurrent is supposed to error out when the context is still current in another thread. NVIDIA handles that, but mesa3d errors. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6054 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-07-18big changes here:Rodolfo Osvaldo Bogado
- Eliminate the useless check for cpu modifications option from efb to ram as it must be enabled always - use constant names in dx11 for buffer length calculation instead to simplify code reading - implemented scaled efb copy in opengl, still bugy in some games, the option is not in the gui but will add it when it works perfect - Change the depth calculation behavior: if the game use z textures is exactly the same as before. if the game do not use z texture calculate z values in the vertex shader. the advantage id this approach is that early z culling is applied, improving fill rate. this mus speed up things, even with ssaa and msaa enabled. please test for regression and enjoy. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5896 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-29this commit is divided in 4 parts:Rodolfo Osvaldo Bogado
1 - Optimize pixelshadergen to avoid redundant register overflow math, with this if a game don't need this will be not applied. this must bring some fill rate back and improve speed a little in fill rate limited systems. 2- some corrections to vertexshadergen to avoid uninitialized texture coordinates, dono if is the correct way to fix it but t least it will make house of the dead overkill playable in dx11. the bad thing: still missing geometri in dx9, in dx11 it works exactly as on opengl. 3 - some optimization made to improve fps a little wih the latests changes made to fifo. * back to the original code in beginfield as now it will work right. * check for efb access more often as a lot of time is lost waiting for efb access 4 - apply a little fix for missing textures in nvidia opengl tanks to Wagnard28 for finding that nvidia does not like invalid shader id :) please test for any regression git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5812 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-20D3D9: Delete some long dead code. Also add one more statistic: number of ↵hrydgard
compiled shaders that actually have unique code (not accurate unless you delete the shader cache before running). This stat clearly shows that in f-zero we create 5x as many pixel shaders as we should, so there's clearly a problem with the shader ID generation. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5754 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-16apply some speedup to dx11 plugin + some minor stuffluisr142004
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5721 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-12revert my last change to vertex manager as the performance difference is ↵Rodolfo Osvaldo Bogado
negligible an causes performance drop in higher definitions git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5658 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-12This commit is separate in two parts:Rodolfo Osvaldo Bogado
Fix: fix for lighting equations , that must improve lighting in a lot of games ( test smg :) ) experimental speedup: implemented alpha pass using stencil buffer instead of a duplicate shader. i recommend to test this well as i dono if will work the same way in all the systems. i my system it gives a nice 2-5 fps improvement. if it brings problems in any system or game will revert asap. enjoy git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5653 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-06git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5629 ↵Rodolfo Osvaldo Bogado
8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-05space changes, merge #defines, language fix, and code reorder/cleanup :Pluisr142004
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5614 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-06-05HUGE commit :)Rodolfo Osvaldo Bogado
in general cleanup and bugfix disable pierre patch for the moment as it causes problem in some games and hopefully fix the remaining missing textures for nvidia users in opengl. make the code in pixelshadergen looks nice and readable. D3D: this is a ultra experimental commit please check for regressions or error. make the efb Scale / super sampling level customizable to improve the output quality and let the user configure quality according to his hardware. is everyone likes this change will translate it to opengl please test git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5612 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-05-22let's keep experimenting:Rodolfo Osvaldo Bogado
almost fixed real xfb in d3d, i say almost because there are some minor scalling problems. hope will fix them soon. implemented a more intelligent index generator to emulate more accurately the behavior of the gc. please give me feedback on this changes. enjoy :) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5465 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-05-04fast commit :Rodolfo Osvaldo Bogado
make native mips loading an option to prevent performance lost in game that not need this functionality.( thanks to dorian.fevrier for point the performance lost.) added a patch from pierre@pirsoft.de to avoid vertex drops when index array is full in opengl implementation that do not support large index arrays git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5432 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-04-14fixed xfb bumping introduced by my last commit.Rodolfo Osvaldo Bogado
implemented loading of native mips, see sms water :). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5366 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-23this was a hard fix to found:Rodolfo Osvaldo Bogado
if a degenerated primitive is passed to the VertexManager treat it as a compatible primitive, for example if a 5 vertex quad is passed treat it as a triangle fan. as crazy at this seems it fix the sun glare in ZWW, please test an d let me know if it make a difference in other games git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4931 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-21some minor bug fixes to my last commit and uncommented one line that was ↵Rodolfo Osvaldo Bogado
commented by error git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4922 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-15ok big changes here:Rodolfo Osvaldo Bogado
in videocommon little fix for the alpha test values, return to the original values as they are more accurate. in D3D: huge change in state management, now all the state management is centralized and redundant state changes are eliminated. Fixed the overlapped viewport error in non ati cards: the error was caused by this: when a viewport is defined larger than the current rendertarget, an error is thrown and the last valid viewport is used, this is the reference behavior, in ati cards if a larger viewport is defined, no eror is returned, the rendering is valid and is rendered using the projection defined by the viewport but limited to the rendertarget are, exactly like opengl or the GC hardware. to solve this in reference drivers defined a large rendertarget (2x the size of the original) and proceed to render in a centered quad insithe the larger rendertarget, in this way larger viewports always falls inside a valid rendertarget size, the drawback of this is the waste of resources. it can be dynamized, depending or games or changed at runtime when a oversized viewport is detected, but i live that to future commits. please test this and let me know the results. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4841 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-12D3D: Fix some texture wrapping issues by setting the texture state for every ↵hrydgard
texture used at draw time. Hopefully there will not be a noticable slowdown, thanks to the state caching. Also some minor cleanup. Should fix issues like repeated shadows. TODO: In theory it should have worked without this, so I should investigate why this change was needed. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4815 8ced0084-cf51-0410-be5f-012b33b47a6e
2010-01-12this is a dev commit, a cleanup in the pixel shader generator to make the ↵Rodolfo Osvaldo Bogado
generate code a lot cleaner and readable, and a little fill rate optimization when using alpha test, i don't thing any game is limited by fill rate but the code looks more cleaner and is ordered in the same way is executed in hardware. please test, if any problem apears let me know git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4812 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-12-07mixed commit:Rodolfo Osvaldo Bogado
in D3D and Opengl: fixed one nasty bug in texture loading where if a dynamic texture keeps his format but the tlut format is changed, the try or reloading the texture in the same texture could cause a hang if the size of the resulting texture is different than the original (size in bytes) Applied a ugly temporal hack to the texture conversor to solve efb to ram misalignments and effect distortions. in D3D: Pseudo implementation of logic ops using basic blending: the first 8 operations are "good approximations", the remaining 8 are bullshit :) if someone have a better approximation to emulate this logic please let me know. please test if i don't break anything in the process and test Mario kart wee you will get a nice surprise.:) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4656 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-11-01when dumping shaders from VertexManager.cpp, don't overwrite old ones.Shawn Hoffman
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4493 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-10-06Sps fixed in all the games tested, code cleanup and reorderingRodolfo Osvaldo Bogado
implemented buffer format fall back to allow hardware that don't support lockable formats to run the games with Z peeking disabled, applied as well the patch suggested in issue 1494 please give heavy test to this commit git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4365 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-10-02I hope you all like this. Changes:Rodolfo Osvaldo Bogado
Opengl: Reorder the rendering path to make it more generic, and a little bit faster i think. Reduce the index Buffer size to make it more Friendly to older video hardware. get rid of the remaining annoying sps (I hope). D3D: Implement the same path as opengl to make the plugins more similar and maintainable. Fixed Peek_Z this means, Pushing stars in SMG Now Works. Please give heavy testing to this changes and compare the performance with the old path. Thanks to hrydgard for let me participate :). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4353 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-20D3D: get rid of flickering in various games by changing way and time to flip ↵rice1964
backbuffer to frontbuffer. Also added some debugging messages. ZTP intro seems to be additionally 10%+ faster now, maybe only for me in windows mode. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4303 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-19D3D various: "Safe texture cache" option, texture replace instead of ↵hrydgard
destroy/create when possible, a commented out "optimization" that didn't speed things up (use DrawPrimitive instead of DrawIndexedPrimitive when possible), reduce code duplication in Flush(), don't periodically clean out the shader caches since it's not really beneficial - shaders are cheap to keep. some code cleanup. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4302 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-19D3D: minor vs constant-setting optimization, remove a stupid memcpy that ↵hrydgard
doesn't do anything, don't see much benefit though :/ At least the PIX logs will be cleaner. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4301 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-18D3D: some changes about debugger, not useful for anyone else, and should not ↵rice1964
affact anything. So not very interesting, just get ready to do some debugging. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4297 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-13more uninteresting cleanup, fixed a minor race condition when toggling efb ↵hrydgard
copy mode git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4261 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-03Some housecleaning around the D3D plugin, start of preparations to share ↵hrydgard
even more code with the GL plugin. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4183 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-02Fix a vertex shader generation bug that crashed Super Monkey Ball. Better ↵hrydgard
shader error handling. Random warning fixes. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4170 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-02D3D: Fix nonpow2 textures (simply turn off the rect texture stuff since it's ↵hrydgard
not necessary under D3D). some cleanup. Add a TODO (tip from Orphis) git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4168 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-02Fix the DEBUG builds that were broken in r4154.rice1964
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4155 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-02Debugger for DX9 plugin.rice1964
Debugger panel is displayed only if Dolphin is started with /d option. Dump features are not implemented. Pause/Resume buttons works, only if the plugin is built in DEBUG or DEBUGFAST configuration, not in RELEASE. These features are really only for devs, not for regular gamers. You will be able to pause frame by frame, or by n frames, or by n primitive flushes. Other pausing options are not implemented yet. When other pausing and dumping features are implemented, debugging will be much easier. I have changed the DX9 project setting to use unicode character set in order to use wxWidge tools. If this causes Dolphin building problems for you, check your project setting.txt git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4154 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-09-02D3D: Fixed dstAlpha, aka "when everything is broken, at least mario have a ↵sl1nk3.s
nice shadow", and removed Cg leftover from it. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4152 8ced0084-cf51-0410-be5f-012b33b47a6e