Kill height-based HLSL prescaling, only prescale based on frame width. Brings Kangaroo's prescale down from 5 to 2 and thus within a more reasonable GPU budget. Games that have a ridiculously higher vertical resolution than horizontal resolution will still have issues.

This commit is contained in:
Ryan Holtz 2011-06-01 22:08:28 +00:00
parent 7fe6818493
commit b6f85b8c26

View File

@ -3978,8 +3978,8 @@ static texture_info *texture_create(d3d_info *d3d, const render_texinfo *texsour
// Find the nearest prescale factor that is over our screen size // Find the nearest prescale factor that is over our screen size
int hlsl_prescale = 1; int hlsl_prescale = 1;
while(texture->rawwidth * hlsl_prescale < d3d->width) hlsl_prescale++; while(texture->rawwidth * hlsl_prescale < d3d->width) hlsl_prescale++;
while(texture->rawheight * hlsl_prescale < d3d->height) hlsl_prescale++;
d3d->hlsl_prescale_size = hlsl_prescale; d3d->hlsl_prescale_size = hlsl_prescale;
printf("%d, %d, %d\n", texture->rawwidth, texture->rawheight, hlsl_prescale);
result = (*d3dintf->device.create_texture)(d3d->device, texture->rawwidth * hlsl_prescale, texture->rawheight * hlsl_prescale, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &d3d->hlsltexture0[idx]); result = (*d3dintf->device.create_texture)(d3d->device, texture->rawwidth * hlsl_prescale, texture->rawheight * hlsl_prescale, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &d3d->hlsltexture0[idx]);
if (result != D3D_OK) if (result != D3D_OK)
@ -4073,8 +4073,8 @@ static texture_info *texture_create(d3d_info *d3d, const render_texinfo *texsour
// Find the nearest prescale factor that is over our screen size // Find the nearest prescale factor that is over our screen size
int hlsl_prescale = 1; int hlsl_prescale = 1;
while(scwidth * hlsl_prescale < d3d->width) hlsl_prescale++; while(scwidth * hlsl_prescale < d3d->width) hlsl_prescale++;
while(scheight * hlsl_prescale < d3d->height) hlsl_prescale++;
d3d->hlsl_prescale_size = hlsl_prescale; d3d->hlsl_prescale_size = hlsl_prescale;
printf("%d, (%d, %d)\n", texture->rawwidth, scwidth, scheight);
result = (*d3dintf->device.create_texture)(d3d->device, scwidth * hlsl_prescale, scheight * hlsl_prescale, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &d3d->hlsltexture0[idx]); result = (*d3dintf->device.create_texture)(d3d->device, scwidth * hlsl_prescale, scheight * hlsl_prescale, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &d3d->hlsltexture0[idx]);
if (result != D3D_OK) if (result != D3D_OK)