Was passiert beim Locken ?



  • ^^ ?



  • Hi,

    die Ressource wird als "busy" markiert, so dass die API keine Operationen auf oder mit ihr ausführen darf. Gegebenenfalls werden die enthaltenen Daten vom VRAM in den RAM kopiert.

    Ciao,
    Stefan


  • Mod

    vielleicht sollte man in diesem zusammenhang auch sagen, dass, sofern die resource noch nicht für alles verwendet wurde, wofür befehle im cache liegen, man dort vielleicht so lange wartet, bis alle befehle abgearbeitet wurden. früher hat NVidia deswegen immer vorgeschlagen z.B. von vertexbuffern immer 2 anzulegen und sie abwechselnd zu benutzen. seit irgendeiner detonatorversion die mal wieder 40% mehr leistung bringen sollte 😉 haben die das im treiber übernommen, weil soviele leute zu faul für diese optimierung waren. da die grakas heute aber durchaus 5 bilder im voraus cachen, kann so ein lock auch extreme warterei hervorrufen.

    naja, nur so als info, ich weiß ja nicht wie genau man die frage beantwortet bekommen möchte 🙂

    rapso->greets()



  • Da will ich mich doch mal mit einer Frage anschließen:

    ich hab für ein paar Effekte den BackBuffer eines Direct3D8Device gelockt und das ging dann auch und sah gut aus -> solange ich nur auf den Backbuffer geschreiben hab. Wenn ich Werte gelesen habe, dann war das extrem langsamer als schreiben, wobei das schreiben auch schon nicht besonders schnell war.

    Hat jemand eine Erklärung dafür? Stattdessen hab ich dann auf eine Textur gerendert und diese dann gelockt und manipuliert, war aber seltsamerweise schneller als direct auf dem Backbuffer!?!


  • Mod

    der backbuffer liegt oft in einem bereich der graka an den man nicht direkt dran kommt, wenn man diesen nun benutzen will muss die graka den bereich eventuell bei sich irgendwoanders in den graka-ram kopieren, von dort dann (falls man lesen möchte) in den AGP-ram und da kommst du erst dran, während du nun auf dem buffer rumschnippelst, steht eventuell die graka und macht garnichts bis du fertig bist, dann wird alles genauso wieder zurückkopiert.

    es kann sein dass dabei auch noch umrechnungen der farben durchgeführt werden, das dauert natürlich extra (z.B. muss bei AA) und manche karten wie die kyro müssen das bild dann erst einmal errechnen, sich dafür dann den zbuffer in den speicher schreiben (den sie normalerweise nicht benötigen) und dann beim weiteren rendering weiterhin nutzen...

    da kann man schön viele horrorscenarien erstellen.

    locken ist heutzutage mit das peformance raubendeste! 🙂

    rapso->greetS();


Anmelden zum Antworten