Moin, moin, ...
PackMemory() funktioniert nicht, wenn als QuellAdresse ein Speicherbereich auf der Grafikkarte angegeben wird (Rechner bzw. Programm hängt).
Entpacken mit UnpackMemory() in den Grafikkartenspeicher funktioniert hingegen einwandfrei.
Aufgefallen ist mir das, als ich Sprite-Daten packen wollte.
Sprites mit #PB_Sprite_Memory-Flag lassen sich packen, normale Sprites ohne das Flag (die ja meines Wissens nach im GraKa-Speicher liegen) hingegen nicht.
Wenn zur Veranschaulichung und Fehlersuche ein kleines Demoprog gewünscht wird, liefere ich das noch gerne nach.
Gruß, PL.
Bug in PackMemory() ...
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Bug in PackMemory() ...
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Da hast Du im Grunde natürlich recht, aber auch der GraKa-Speicher ist Speicher, den Du ja z.B. über Peek & Poke ganz normal ansprechen kannst - er liegt halt nur in einem anderen Speicherbereich.
Und da ja auch UnpackMemory() in den GraKa-Speicher problemlos entpackt, nehme ich also mal doch an, dass es sich um einen Bug in PackMemory() handelt.
Und da ja auch UnpackMemory() in den GraKa-Speicher problemlos entpackt, nehme ich also mal doch an, dass es sich um einen Bug in PackMemory() handelt.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Man kann doch eigentlich nur auf Speicherbereiche zugreifen die man zuvor
allociert hat. Wie kommt man denn da in den Grfikkarten-Speicher? Mit
AllocateMemmory kannn man doch nur die Größe festlegen, jedoch den
Bereich nicht.
allociert hat. Wie kommt man denn da in den Grfikkarten-Speicher? Mit
AllocateMemmory kannn man doch nur die Größe festlegen, jedoch den
Bereich nicht.
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... 

- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Durch erstellen (oder auch laden) eines Sprites wird der Speicherbereich des Sprites ja für Dich "allociert" - Du hast also von da an Zugriff auf das Sprite und auch auf dessen Speicherbereich.
Dieser Speicherbereich wird dann später bei Verwendung von FreeSprite() wieder freigeben.
Dieser Speicherbereich wird dann später bei Verwendung von FreeSprite() wieder freigeben.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Ah, kapiert. Aber das ist ja ein ziemliches rumgetrickse. Verständlich, dass so
etws nicht vom PB-Team getestet wird.
Aber noch etwas: Führt das nicht zu Problemen wenn man so auf den
Grafikkarten Speicher zugreift? Oder ist das genauso geschützt wie der
"normale" Speicherzugriff?
etws nicht vom PB-Team getestet wird.
Aber noch etwas: Führt das nicht zu Problemen wenn man so auf den
Grafikkarten Speicher zugreift? Oder ist das genauso geschützt wie der
"normale" Speicherzugriff?
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... 

- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Grafikkartenspeicher ist normallerweise nicht direkt ansprechbar, macht ja
bei einem System das nur virtuelle Speicheradressen vergibt auch keinen
Sinn. Der Objectspeicher des Sprites läßt sich manipulieren, bzw. mit DirectX
ist auch fast direkter Zugriff möglich.
bei einem System das nur virtuelle Speicheradressen vergibt auch keinen
Sinn. Der Objectspeicher des Sprites läßt sich manipulieren, bzw. mit DirectX
ist auch fast direkter Zugriff möglich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22