Seite 1 von 1

[DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 06:29
von Zudomon
Huhu!

Ich habe Probleme mit dem NVidia PerfHUD. Wenn ich alles in meiner Engine deaktiviere, also ALLES, nur das Device initialisiere, dann funktioniert es noch.

Sobald ich aber folgendes mache:

Code: Alles auswählen

  hr:=D3DXCreateTexture(D3D, _Width, _Height, _mips, _Usage, _Format, Pool,  IDirect3DTexture9(Data));
Bekomme ich eine Exception, wenn ich versuche, dass ganze mit dem PerfHUD zu öffnen
perfhud.png
Ich bekomme es nicht zum laufen... habe momentan Win7 32-Bit drauf. Die Anwendung, sowie das PerfHUD sind auch für 32 Bit... also ich bin da ziemlich ratlos. :(

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 10:01
von Matthias Gubisch
Ich arbeite relativ viel mit PerfHUD und ja das Ding wirft ab und an gerne Exceptions

Um der Sache auf den Grund zu kommen müsstest du aber noch ein paar Informationen angeben:

Genaue PerfHUD Version, genaue Bezeichung deiner Grafikkarte und die Treiberversion

Ausserdem wäre etwas Code von der Deviceinitialisierung und die Werte die D3DXCreateTexture übergeben werden ganz nett

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 10:38
von Zudomon
NVIDIA PerfHUD 6.62.120.1800

NVIDIA GeForce GTX 460

Treiberversion 285.62

Device Creation:

Code: Alles auswählen

procedure Direct3D_Start(g_HWND: DWord);
var
  i: Integer;
  AdapterToUse: Cardinal;
  DeviceType: D3DDEVTYPE;
  Identifier: D3DADAPTER_IDENTIFIER9;
  VPF: Cardinal;
  hr: HRESULT;
  D3DAPI: IDirect3D9;
  Caps: TD3DCaps9;
  DPP: TD3DPresentParameters;        
  deskh, deskw: Integer;
  swap: IDirect3DSwapChain9;
begin

  D3DAPI:=Direct3DCreate9(D3D_SDK_VERSION);

  {$REGION ' Presentparameters '}

  GetScreenSize(deskw, deskh);

  ZeroMemory( @DPP, sizeof(DPP) );
  with DPP do begin
    Windowed := true;
    SwapEffect :=  D3DSWAPEFFECT_DISCARD;
    BackBufferFormat:= D3DFMT_X8R8G8B8;
    PresentationInterval:=D3DPRESENT_INTERVAL_IMMEDIATE;
//    PresentationInterval:=D3DPRESENT_INTERVAL_DEFAULT;

    BackBufferWidth:=deskw;
    BackBufferHeight:=deskh;

    BackBufferCount:=1;
    hDeviceWindow:=g_HWND;

    AutoDepthStencilFormat:=D3DFMT_D24S8;
//    AutoDepthStencilFormat:=D3DFMT_D32F_LOCKABLE;
    EnableAutoDepthStencil:=true;
  end;

  {$ENDREGION}

  AdapterToUse:=D3DADAPTER_DEFAULT;
  DeviceType:=D3DDEVTYPE_HAL;

  D3DAPI.GetDeviceCaps(AdapterToUse, DeviceType, Caps);

  {$REGION ' Vertex Processing '}

  if Caps.VertexProcessingCaps=0 then VPF:=D3DCREATE_SOFTWARE_VERTEXPROCESSING
                                 else VPF:=D3DCREATE_HARDWARE_VERTEXPROCESSING;

  {$ENDREGION}

  {$REGION ' Nvidia PerfHUD '}

  if USE_PERFHUD then begin
    for i := 0 to D3DAPI.GetAdapterCount-1 do begin
      D3DAPI.GetAdapterIdentifier(i, 0, Identifier);
      if pos('PerfHUD', StrPas(Identifier.Description))<>0 then begin
        AdapterToUse:=i;
        DeviceType:=D3DDEVTYPE_REF;
        VPF:=D3DCREATE_HARDWARE_VERTEXPROCESSING;
        PerfHUDStarted:=true;
      end;
    end;
  end;

  {$ENDREGION}

  {$REGION ' Create Device '}

  hr:=D3DAPI.CreateDevice( AdapterToUse, DeviceType, g_HWND, VPF or D3DCREATE_FPU_PRESERVE, @DPP, D3D );
  if Failed(hr) then begin ShowMsg('Fehler beim erstellen des 3D Device: '+inttostr(hr)); exit; end;

  {$ENDREGION}

  D3D.GetSwapChain(0, swap);
  swap.GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, MainSurface);
  D3D.GetDepthStencilSurface(MainDepth);

  D3D.SetRenderState(D3DRS_SRGBWRITEENABLE, cardinal(false));

end;
Die Werte, die übergeben werden:

Code: Alles auswählen

D3DXCreateTexture(D3D, 256, 256, 0, D3DUSAGE_AUTOGENMIPMAP, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED,  IDirect3DTexture9(Data));
Probleme macht aber auch D3DXCreateTextureFromFile...

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 12:06
von dot
Ist PerfHUD denn nicht veraltet? Schau dir mal Parallel Nsight an ;)

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 12:17
von Zudomon
dot hat geschrieben:Ist PerfHUD denn nicht veraltet? Schau dir mal Parallel Nsight an ;)
Werde ich nachher mal machen...


Übrigens wollte ich die 6.7 Version von PerfHUD installieren, aber irgendwie installiert er das nicht... also er tut so als ob, und sagt auch, es ist alles supi, aber auf dem Rechner ist PerfHUD nirgends... nur das PerfKit, in dem ich aber nichts machen kann. Irgendwie check ich das nicht... also entweder läuft da doch was schief, oder die haben das super versteckt. :D

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 12:46
von Matthias Gubisch
Also im Code sehe ich auf anhieb nichts was Probleme machen würde.

Daher Tippe ich auf ein Problem mit der Treiberversion, da Trieber die neuer als 256.XX sind offiziell erst ab PerfHUD 6.7 unterstützt werden. Bei der Grafikkarte bin ich mir da nicht ganz sicher.

Hast du vor der Installation der Version 6.7 mal versucht die alte Version zu deinstallieren? Bei mir ging das nämlich einwandfrei.

@DOT: PerfHUD ist zwar veraltet, für DX9 Apps allerdings IMHO mehr als ausreichend.
Für DX10 und DX11 sollte man allerdings auf den PerfHUD verzichten und Parallel Nsight benutzen da hast du recht.

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 03.11.2011, 13:47
von Zudomon
Ich weiß gar nicht mehr, ob ich die alte Version deinstalliert habe. Das Problem war schon, als ich den Rechner hier vor ein paar Monaten neu aufgesetzt hatte...

Naja, ich benutze ja eh nur DX9, da reicht das dann vielleicht mit Nsight... schau ich mal hinterher. Danke für den Tipp!

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 04.11.2011, 18:28
von Zudomon
Soweit ich das versteh ist Parallel Nsight ein Plugin für Visual Studio... oder kann man das auch als alleinstehendes Programm nutzen?

Re: [DX9] Probleme mit Nvidia PerfHUD

Verfasst: 29.11.2011, 17:25
von Zudomon
Hach wie geil!!!
Habe gerade Win 7 64 Bit installiert ( hatte ja die 32er drauf ) und nun läuft es tadellos! :D
Dann kanns bald ans optimieren gehen!!!!