NVidia vendor hack "makefourcc NVCS"

Started by
3 comments, last by HiAlgoBoost 9 years, 7 months ago
Hello
Can't find any information about NVCS texture format, but from Pix i see it's used in games and guess for getting depth buffer. How to use the same and how it works? Here is the log after most of scene rendering, but before drawing transparent objects which require depth texture (it's nvcs, but proper screen size, no textures or render targets were created of that format at startup):

<0x0A483ED8> IDirect3DDevice9::CreateTexture(16, 1, 1, 0x00000200, Unknown format, D3DPOOL_DEFAULT, 0x0012F768 --> 0x348FD540, NULL)
CreateObject(D3D9 Texture, 0x348FD540)
CreateObject(D3D9 Surface, 0x348A1818)
<0x0A483ED8> IDirect3DDevice9::GetRenderState(D3DRS_POINTSIZE, 0x0012F754)
<0x0A483ED8> IDirect3DDevice9::SetRenderState(D3DRS_POINTSIZE, 13108852736.000f)
<0x0A483ED8> IDirect3DDevice9::SetPixelShaderConstantI(0, 0x0012F6EC, 6)
<0x0A483ED8> IDirect3DDevice9::SetRenderState(D3DRS_POINTSIZE, 0.000f)
<0x348FD540> IDirect3DTexture9::Release()
DestroyObject(D3D9 Texture, 0x348FD540)
DestroyObject(D3D9 Surface, 0x348A1818)

Thanks!
Advertisement
I have not heard of this NVCS format, but the various Nvidia driver hacks are documented here.
Guess it's some kind of new and unknown to public, as it used in TES Skyrim.
It's not that new - Google found a two year old mention of it at http://aras-p.info/blog/2009/11/20/direct3d-gpu-hacks/ but I couldn't find any documentation for it.
I understand that this is an old topic, but while searching for "NVCS" I always ended up here, and other than one other thread (also by dummynull, in Russian) there is almost no information available. Eventually I figured things out, and it became clear that so did many others - but I just wanted to put some useful links here, for other wonderers who (like me) have trouble figuring it out...
So, "NVCS" is an internal NVida format, but it is not precisely a "vendor hack", on the contrary - it is a pretty civil API - and this is why there isn't really a lot of information about the "NVCS" format (btw, it can easily change to some other identifier in future versions of NVidia drivers). This API is available through nvapi.dll (obviously for NVidia GPUs only), and the culprit function is called NvAPI_D3D9_StretchRectEx().
You can get (almost) everything you need to know about this here: https://developer.nvidia.com/nvapi
In case you DO NOT want to "hard link" with nvapi.dll (i.e. if you DO NOT want your game to only work on NVidia-equipped systems), then here are some additional useful links:
_________________________________________________________________________________________
http://www.hialgo.com - HiAlgo optimizes your PC gaming experience, improves fps and smoothness of control, reduces lag and prevents system overheating.

This topic is closed to new replies.

Advertisement