big progress

This commit is contained in:
2025-07-04 18:22:17 +02:00
parent d4d84881ef
commit 9447da090b
6 changed files with 222 additions and 86 deletions

View File

@@ -620,6 +620,14 @@ int nn_getPaletteCount(nn_screen *screen);
int nn_maxDepth(nn_screen *screen);
int nn_getDepth(nn_screen *screen);
void nn_setDepth(nn_screen *screen, int depth);
const char *nn_depthName(int depth);
double nn_colorDistance(int colorA, int colorB);
int nn_mapColor(int color, int *palette, int paletteSize);
int nn_mapDepth(int color, int depth);
void nn_getStd4BitPalette(int color[16]);
void nn_getStd8BitPalette(int color[256]);
void nn_setPixel(nn_screen *screen, int x, int y, nn_scrchr_t pixel);
nn_scrchr_t nn_getPixel(nn_screen *screen, int x, int y);
@@ -636,41 +644,25 @@ void nn_setOn(nn_screen *buffer, bool on);
nn_component *nn_addScreen(nn_computer *computer, nn_address address, int slot, nn_screen *screen);
typedef struct nn_gpuControl {
// resolution and colors
int maxWidth;
int maxHeight;
int maxDepth;
// VRAM Buffers
int totalVRAM;
// Energy costs
double bindEnergy;
double pixelChangeEnergy;
double pixelResetEnergy;
double colorChangeEnergy;
double vramByteChangeEnergy;
// Calls per tick, only applicable to screens
double screenCopyPerTick;
double screenFillPerTick;
double screenSetsPerTick;
double screenColorChangesPerTick;
double bitbltPerTick; // for bitblit
// Heat
double bindHeat;
double pixelChangeHeat;
double pixelResetHeat;
double colorChangeHeat;
double vramByteChangeHeat;
double heatPerPixelChange;
double heatPerPixelReset;
double heatPerVRAMChange;
// Call budgets
size_t bindCost;
size_t pixelChangeCost;
size_t pixelResetCost;
size_t colorChangeCost;
size_t vramByteChangeCost;
// Latencies
double bindLatency;
double pixelChangeLatency;
double pixelResetLatency;
double colorChangeLatency;
double vramByteChangeLatency;
// Energy
double energyPerPixelChange;
double energyPerPixelReset;
double energyPerVRAMChange;
} nn_gpuControl;
// the control is COPIED.