Direct3D blitting code doesn't do anything if updated area is 0 - fixes crash on Intel HD graphics.

This commit is contained in:
TomW 2016-03-02 19:16:51 +00:00
commit e7de1a6742
2 changed files with 12 additions and 0 deletions

View file

@ -306,6 +306,9 @@ static void d3d_fs_blit_memtoscreen(int x, int y, int y1, int y2, int w, int h)
int yy;
double l, t, r, b;
if (y1 == y2)
return; /*Nothing to do*/
d3d_verts[0].tu = d3d_verts[2].tu = d3d_verts[3].tu = 0;
d3d_verts[0].tv = d3d_verts[3].tv = d3d_verts[4].tv = 0;
d3d_verts[1].tu = d3d_verts[4].tu = d3d_verts[5].tu = (float)w / 2048.0;
@ -396,6 +399,9 @@ static void d3d_fs_blit_memtoscreen_8(int x, int y, int w, int h)
int xx, yy;
double l, t, r, b;
if (!h)
return; /*Nothing to do*/
d3d_verts[0].tu = d3d_verts[2].tu = d3d_verts[3].tu = 0;
d3d_verts[0].tv = d3d_verts[3].tv = d3d_verts[4].tv = 0;
d3d_verts[1].tu = d3d_verts[4].tu = d3d_verts[5].tu = (float)w / 2048.0;

View file

@ -232,6 +232,9 @@ void d3d_blit_memtoscreen(int x, int y, int y1, int y2, int w, int h)
uint32_t *p, *src;
int yy;
if (y1 == y2)
return; /*Nothing to do*/
d3d_verts[0].tu = d3d_verts[2].tu = d3d_verts[3].tu = 0;//0.5 / 2048.0;
d3d_verts[0].tv = d3d_verts[3].tv = d3d_verts[4].tv = 0;//0.5 / 2048.0;
d3d_verts[1].tu = d3d_verts[4].tu = d3d_verts[5].tu = (float)w / 2048.0;
@ -306,6 +309,9 @@ void d3d_blit_memtoscreen_8(int x, int y, int w, int h)
int yy, xx;
HRESULT hr = D3D_OK;
if (h == 0)
return; /*Nothing to do*/
d3d_verts[0].tu = d3d_verts[2].tu = d3d_verts[3].tu = 0;//0.5 / 2048.0;
d3d_verts[0].tv = d3d_verts[3].tv = d3d_verts[4].tv = 0;//0.5 / 2048.0;
d3d_verts[1].tu = d3d_verts[4].tu = d3d_verts[5].tu = (float)w / 2048.0;