d3d->mask2textureled_power_dim->Release();
d3d->mask2textureled_power_dim = NULL;
- if (filename[0] == 0 || WIN32GFX_IsPicassoScreen(mon))
+ if (filename[0] == 0)
return 0;
zf = NULL;
return 0;
}
-static bool xD3D_getscalerect(int monid, float *mx, float *my, float *sx, float *sy)
+static bool xD3D_getscalerect(int monid, float *mx, float *my, float *sx, float *sy, int width, int height)
{
struct d3dstruct *d3d = &d3ddata[monid];
struct vidbuf_description *vidinfo = &adisplays[monid].gfxvidinfo;
float mw = d3d->mask2rect.right - d3d->mask2rect.left;
float mh = d3d->mask2rect.bottom - d3d->mask2rect.top;
- float mxt = (float)mw / vidinfo->outbuffer->inwidth2;
- float myt = (float)mh / vidinfo->outbuffer->inheight2;
+ float mxt = (float)mw / width;
+ float myt = (float)mh / height;
*mx = d3d->mask2texture_minusx / mxt;
*my = d3d->mask2texture_minusy / myt;
extern void(*D3D_restore)(int, bool);
extern void(*D3D_resize)(int, int);
extern void(*D3D_change)(int, int);
-extern bool(*D3D_getscalerect)(int, float *mx, float *my, float *sx, float *sy);
+extern bool(*D3D_getscalerect)(int, float *mx, float *my, float *sx, float *sy, int width, int height);
extern bool(*D3D_run)(int);
extern int(*D3D_debug)(int, int);
extern void(*D3D_led)(int, int, int);
void(*D3D_restore)(int, bool);
void(*D3D_resize)(int, int);
void (*D3D_change)(int, int);
-bool(*D3D_getscalerect)(int, float *mx, float *my, float *sx, float *sy);
+bool(*D3D_getscalerect)(int, float *mx, float *my, float *sx, float *sy, int width, int height);
bool(*D3D_run)(int);
int(*D3D_debug)(int, int);
void(*D3D_led)(int, int, int);
freesprite(&d3d->mask2textureled_power_dim);
freesprite(&d3d->blanksprite);
- if (filename[0] == 0 || WIN32GFX_IsPicassoScreen(mon))
+ if (filename[0] == 0)
return 0;
zf = NULL;
}
}
-static bool xD3D11_getscalerect(int monid, float *mx, float *my, float *sx, float *sy)
+static bool xD3D11_getscalerect(int monid, float *mx, float *my, float *sx, float *sy, int width, int height)
{
struct d3d11struct *d3d = &d3d11data[monid];
struct vidbuf_description *vidinfo = &adisplays[monid].gfxvidinfo;
float mw = d3d->mask2rect.right - d3d->mask2rect.left;
float mh = d3d->mask2rect.bottom - d3d->mask2rect.top;
- float mxt = (float)mw / vidinfo->outbuffer->inwidth2;
- float myt = (float)mh / vidinfo->outbuffer->inheight2;
+ float mxt = (float)mw / width;
+ float myt = (float)mh / height;
*mx = d3d->mask2texture_minusx / mxt;
*my = d3d->mask2texture_minusy / myt;
if (mon->screen_is_picasso) {
getrtgfilterrect2(monid, sr, dr, zr, dst_width, dst_height);
+ if (D3D_getscalerect && D3D_getscalerect(monid, &mrmx, &mrmy, &mrsx, &mrsy, dst_width, dst_height)) {
+ sizeoffset(dr, zr, mrmx, mrmy);
+ OffsetRect(dr, mrsx, mrsy);
+ }
return;
}
extrah = -ahs * (filter_vert_zoom - currprefs.gf[ad->picasso_on].gfx_filteroverlay_overscan * 10) / 2.0f;
extraw2 = 0;
- if (D3D_getscalerect && D3D_getscalerect(0, &mrmx, &mrmy, &mrsx, &mrsy)) {
+ if (D3D_getscalerect && D3D_getscalerect(monid, &mrmx, &mrmy, &mrsx, &mrsy, avidinfo->outbuffer->inwidth2, avidinfo->outbuffer->inheight2)) {
extraw2 = mrmx;
//extrah -= mrmy;
}
end:
- if (D3D_getscalerect && D3D_getscalerect(0, &mrmx, &mrmy, &mrsx, &mrsy)) {
+ if (D3D_getscalerect && D3D_getscalerect(monid, &mrmx, &mrmy, &mrsx, &mrsy, avidinfo->outbuffer->inwidth2, avidinfo->outbuffer->inheight2)) {
sizeoffset (dr, zr, mrmx, mrmy);
OffsetRect (dr, mrsx, mrsy);
}