Under de senaste många veckorna har några av våra läsare stött på praktiskt taget alla kända buggar i Directx 9 Profiler. Det finns ett antal faktorer som kan leda till detta problem. Låt oss diskutera det nu.
Godkänd: Fortect
- 50 minuter att läsa.
- Noggrann profilering är svår för Direct3D
- Hur Direct3D-renderingssekvensen skapar en korrekt profil
- Profilering av Direct3D-tillståndsändringar
- Sammanfattning
- Applikation
(API) -anrop. Om du har gjort detta har du bara fått resultat som skiljer sig från renderingsarrangemang till renderingssekvens, eller om du misstänker att experimentet för närvarande inte kommer att matcha faktiska experimentella lösningar, kan någon form av följande information hjälpa dig att förstå varför.
Information som tillhandahålls här baseras helt på antagandet att du har kunskap och erfarenhet inom observationsområdena:
- C / C ++ programmering
- Direct3D API -programmering
- Tidsmätnings -API
- Grafikkort, sedan drivrutinsprogramvara.
- Möjliga förvirrande resultat utanför profilering.
Noggrann Direct3D -profilering är svår
Profilen registrerar den tid det tar för varje API -samtal. I slutändan bör detta förbättra prestanda genom att upptäcka och ta bort hotspots. Det finns flera möjliga typer inom profilering och profileringsmetoder.
- Den selektiva profilen är utan tvekan ledig för det mesta och körs med jämna mellanrum för att prova (eller logga positivt) det som den gör. Den visar procentandelen energi som spenderas på ungefär varje samtal. I allmänhet är provsmakning från en profiler verkligen mycket invasiv som kan en applikation och har minimal inverkan på en persons hela applikation.
- Verktygsprofilen mäter vanligtvis den faktiska händelse som krävs för att slutföra ett samtal. Detta kräver normalt att start-stop-avgränsare i applikationen sammanställs. Toolkit är bokstavligen en profiler, vilket är jämförelsevis mycket mer invasivt för applikationen än en exempelprofil.
- Du kan också använda en skräddarsydd profileringsteknik med en betydande högpresterande timer. Detta resultat är mycket likt det för min instrumentalprofiler.
Typen utanför profilen eller profileringsmetoden som används ofta är inget annat än en uppgiftsfunktion som genererar vissa mätvärden.
Profilering ger dig svar som hjälper dig överkomligt för dina kunders arbete. Anta till exempel att alla vet att det i genomsnitt tar hundra väggklockcykler att få ett API att ansluta till. Du kan kräva en viss prestandaeffekt, till exempel:
- Det finns en begränsning kring en 2 GHz -processor (som spenderar 50 pc av sin renderingstid) som kan anropa just detta API 1 miljon gånger per sekund.
- För att få 30 bilder per sekund kan du inte anropa detta API flera gånger för att få 33 000 gånger varje bildruta.
- Du kan behålla maximalt 3,3000 objekt per (förutsatt att ram 10 av nu denna API -typ åberopar visningssekvensen för varje objekt).
Med andra ord, om du har många minuter på dig att ringa API: et kan du ställa en fråga om budgeten för parametertyper som antalet primitiv som du kan ska visas interaktivt. Men de råa siffrorna som returneras på den fantastiska verktygsprofilern kan inte exakt svara på examensfrågor om kostnadshantering. Detta beror på att den grafiska riktningen har komplexa designfrågor, till exempel ett antal komponenter som måste köras, för närvarande antalet processorer som dominerar arbetsflödet i de mellersta komponenterna, och förutom optimeringsstrategier som ingår i piloten vid körning och därför kommer de flesta troligen göra rörledningen mer effektiv vid designpunkten.
Varje API -samtal ringer igenom flera komponenter
Varje samtal måste komma från flera ingående delar på grund av grafikkortsprogrammet. För demonstration, racerLåt oss titta på följande renderingssekvens, som vanligtvis innehåller två samtal för att rita en triangel:
definiera textur (...);DrawPrimitive (D3DPT_TRIANGLELIST, 0, 1);
Följande konceptdiagram visar de olika specifika komponenterna som samtal alltid måste gå igenom.
Programmet kallar What Direct3d, manipulerar personalscenen, hanterar användarinteraktion och lär sig hur renderingen utförs. Allt detta arbete nämns i renderingssekvensen, som experter säger ofta skickas vid körning med Direct3D API -anrop. Renderingssekvensen är bara maskinvaruoberoende (dvs. telefonens API -samtal är maskinvaruoberoende, men har grepp om de funktioner som stöds av huvudfilmkortet).
Körtiden konverterar dessa samtal till ett funktionellt enhetsoberoende format. Körtiden hanterar all denna ovanliga kommunikation mellan applikationen och den här drivrutinen, vilket innebär att programmet körs på flera identifierade hemförbättringar (beroende på vilka funktioner som kräverXia). När ett enda funktionssamtal mäts, håller den specifika instrumentationsprofilen koll på hur mycket tid det också spenderade på jobbet och hur länge din nuvarande funktion återvände. En begränsning av den proprietära gizmo -profilen är att den inte tar hänsyn till den tid det tar för en klubb att skicka utmatningen till designkortet, liksom den tid det brukar ta för att se grafikkortet. I andra uttryck, en standardinstrumentprofil för att hjälpa dig delegera allt korrelerat arbete till varje funktionssamtal.
Med drivrutinsprogrammet kan du använda viss hårdvarukunskap på Video Tarot-kortet som kan konvertera en enhetsoberoende kommandosekvens till en vackert ny grafikkorts kommandosekvens. Drivrutiner kan lika väl som optimera ordningen i vilken kommandon bearbetas och skickas till grafikkortet, så återgivning till allt grafikkort är verkligen effektivt. Dessa justeringar har förmågan att skapa profilfrågor eftersom mängden inlärda projekt inte är som det ser ut (du kan också behöva ta reda på eventuella justeringar som ett sätt att tillgodose detta). Föraren tar vanligtvis över driften av körningen innan dess grafikkort utför några viktiga kommandon.
Grafikkortet gör det mesta av resten av återgivningen, sammanfogar data från baspunkten och postbuffertar, texturer, återgivningsinformation och grafikkontroller.
Varje Direct3D API -samtal måste göras av en annan hanterad komponent (körtid, drivrutin och det mesta av grafikkort) för att återge något.
Komponenter styrs av flera processorer
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
Förhållandet mellan dessa komponenter är ännu mer sofistikerat eftersom en applikation, körtid och drivrutiner nästan alltid styrs av en enda processor och ett fantastiskt grafikkort styrs av en enda. Följande diagram visar två typer av cpus: central processor (CPU) och grafikprocessor (GPU).
PC -prylar innehåller minst en processor och en GPU, men kan också innehålla flera eller båda. Processorer finns vanligtvis på moderkortet, medan grafikkort är antingen moderkort eller möjligen ett grafikkort. CPU -överföringen bestäms av väggklockchipet med moderkortet, medan GPU -boosten bekräftas av den individuella riktiga klockan.
Snabba upp din dators prestanda nu med denna enkla nedladdning.