Vertex Array Range Issues

I use VAR, and I want to use vertex programs too.
In “GDC01_Performance.pdf” doc from nVidia, it’s written (page 18) that you shouldn’t use VAR with vertex program on NV1X
My question is : how can I know if the 3D card is a NV1X ?
If there’s no way to do it, what are the glGetString(GL_RENDERER) for NV1X cards ?

NV1x cards are Geforce cards… except GF3.

So, Geforce, Geforce2, Geforce Go, Geforce2 MX(and it’s variations).

Maybe some of Nvidia guys can provide with the real GL_RENDERER strings.

I know that NV20 is Geforce3, and NV1X are older cards.
But can I get the ID of the card ? (like with DX) or does I have to do with the GL_RENDERER string ?

Maybe some of Nvidia guys can provide with the real GL_RENDERER strings.[/b]

Unfortunately, the renderer string usually only says “GeForce” for people who are running reference drivers. For those who use the drivers that came with their card, it will usually say something like, e.g., “Elsa Gladiac 920”.

I don’t know if DX lets you find out the real ID of the chip, but if it does, why not use it?

  • Tom

I think DX only displays what kind of driver you have installed/configured.

To get the info try typing “dxdiag”, in: start/run . Works on win2k and dx8 at least.

Ugh. Our vendors are changing our renderer string? I don’t think they should be doing that…

  • Matt

Using DX, I can get the card ID with :

enum
{
DT_NOT_NVIDIA,
DT_RIVA_128,
DT_TNT,
DT_TNT2,
DT_GEFORCE
};

#define DT_NVIDIA_VENDOR_ID 0x10DE

int Direct3DToolkit::isNVIDIA()
{

DDDEVICEIDENTIFIER_TYPE did;

dtData().pDD->GetDeviceIdentifier(&did, 0);

WORD  wProduct, wVersion, wSubVersion,wBuild;

wProduct = HIWORD(did.liDriverVersion.HighPart);
wVersion = LOWORD(did.liDriverVersion.HighPart);
wSubVersion = HIWORD(did.liDriverVersion.LowPart);
wBuild = LOWORD(did.liDriverVersion.LowPart);


if(did.dwVendorId == 0x12D2)
{
    switch(did.dwDeviceId)
    {
    case 0x18:
    case 0x19:
        return DT_RIVA_128;
    }
}
else if(did.dwVendorId == DT_NVIDIA_VENDOR_ID)
{
    
    if (did.dwDeviceId == 0x20)
        return DT_TNT;
    
    if (did.dwDeviceId >= 0x28 && did.dwDeviceId < 0x2F)
        return DT_TNT2;
    
    if ((did.dwDeviceId >= 0x100 && did.dwDeviceId <= 0x103) | |
        (did.dwDeviceId >= 0x110 && did.dwDeviceId <= 0x113) | |
        (did.dwDeviceId >= 0x150 && did.dwDeviceId <= 0x153) )
        return DT_GEFORCE;
}  
return DT_NOT_NVIDIA;

}

but I don’t want to mix DX and OpenGL.