+ renderer_notify_scanout_x_change(gpu.screen.src_x, gpu.screen.hres);
+}
+
+void renderer_notify_scanout_x_change(int x, int w)
+{
+ int hres = (w + 15) & ~15;
+ int max_bufs = ARRAY_SIZE(egpu.enhancement_scanout_x);
+ int need_update = 0;
+ int i;
+
+ if (!gpu.state.enhancement_active)
+ return;
+
+ assert(!(max_bufs & (max_bufs - 1)));
+ if (egpu.saved_hres != hres) {
+ for (i = 0; i < max_bufs; i++)
+ egpu.enhancement_scanout_x[i] = x;
+ need_update = 1;
+ }
+
+ if (egpu.enhancement_scanout_x[egpu.enhancement_scanout_select] != x)
+ {
+ // maybe triple buffering?
+ for (i = 0; i < max_bufs; i++)
+ if (egpu.enhancement_scanout_x[i] == x)
+ break;
+ if (i == max_bufs)
+ need_update = 1;
+
+ egpu.enhancement_scanout_x[egpu.enhancement_scanout_select] = x;
+ }
+ egpu.enhancement_scanout_select++;
+ egpu.enhancement_scanout_select &= max_bufs - 1;
+ if (need_update)