MipMaps werden beim Zugriff/Initialisierung in OpenGL/DirectX eingerichtet. Ein CUDA-Kernel kann dasselbe tun, wenn Sie eine Textur zuweisen, die 50% breiter (oder höher) als die ursprüngliche Textur ist, und den Kernel verwenden, um die Textur herunterzurechnen und das Ergebnis neben die ursprüngliche Textur zu schreiben. Der Kernel wird wahrscheinlich am besten funktionieren, wenn jeder Thread ein Pixel im nächsten downgesampelten Bild auswertet. Es liegt an Ihnen, das Sampling-Schema zu bestimmen und geeignete Gewichte für die Kombination der Pixel zu wählen. Versuchen Sie es zunächst mit bilinear, und sobald es funktioniert, können Sie trilinear (kubisch) oder andere Sampling-Schemata wie anisotrop usw. einrichten. Einfaches Sampling (linear und kubisch) ist wahrscheinlich effizienter, da der Speicherzugriff zusammengelegt wird (siehe CUDA SDK Programmierhandbuch). Wahrscheinlich müssen Sie die Kernel-Ausführung kacheln, da die Anzahl der Threads für den parallelen Aufruf begrenzt ist (zu viele Pixel, zu wenige Threads = Verwendung von Kacheln, um die parallele Ausführung aufzuteilen).Sie könnten Mesa3D als Referenz nützlich finden (es ist eine Open-Source-Implementierung von OpenGL).