ID3D11ShaderResourceView *sltexturerv;
ID3D11Texture2D *texture2d, *texture2dstaging;
ID3D11Texture2D *sltexture;
+ int sltexture_w, sltexture_h;
ID3D11Texture2D *screenshottexturert, *screenshottexturetx;
ID3D11VertexShader *m_vertexShader;
ID3D11PixelShader *m_pixelShader, *m_pixelShaderSL, *m_pixelShaderMask;
write_log(_T("CreateTexture2D (main) failed: %08x\n"), hr);
return false;
}
+ d3d->sltexture_w = d3d->m_screenWidth;
+ d3d->sltexture_h = d3d->m_screenHeight;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MostDetailedMip = 0;
if (l1 + l2 <= 0)
return;
- if (!d3d->sltexture) {
+ if (!d3d->sltexture || d3d->sltexture_w != d3d->m_screenWidth || d3d->sltexture_h != d3d->m_screenHeight) {
if (d3d->scanline_osl1 == 0 && d3d->scanline_osl3 == 0)
return;
if (!createsltexture(d3d))
return;
}
sld = (uae_u8*)map.pData;
- for (y = 0; y < d3d->m_screenHeight; y++) {
- memset(sld + y * map.RowPitch, 0, d3d->m_screenWidth * bpp);
+ for (y = 0; y < d3d->sltexture_h; y++) {
+ memset(sld + y * map.RowPitch, 0, d3d->sltexture_w * bpp);
}
- for (y = 0; y < d3d->m_screenHeight; y += l1 + l2) {
+ for (y = 0; y < d3d->sltexture_h; y += l1 + l2) {
int y2 = y + (d3d->filterd3d->gfx_filter_scanlineoffset % (l1 + 1));
- for (yy = 0; yy < l2 && y2 + yy < d3d->m_screenHeight; yy++) {
- for (x = 0; x < d3d->m_screenWidth; x++) {
+ for (yy = 0; yy < l2 && y2 + yy < d3d->sltexture_h; yy++) {
+ for (x = 0; x < d3d->sltexture_w; x++) {
uae_u8 sll = sl42;
p = &sld[(y2 + yy) * map.RowPitch + (x * bpp)];
/* 32-bit, A8R8G8B8 */