wined3d: Use the requested sRGB mode in texture3d_preload().
This commit is contained in:
parent
6d6402afef
commit
0143fa7382
@ -664,6 +664,21 @@ static HRESULT texture2d_bind(struct wined3d_texture *texture,
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL texture_srgb_mode(struct wined3d_texture *texture, enum WINED3DSRGB srgb)
|
||||||
|
{
|
||||||
|
switch (srgb)
|
||||||
|
{
|
||||||
|
case SRGB_RGB:
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
case SRGB_SRGB:
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return texture->flags & WINED3D_TEXTURE_IS_SRGB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Do not call while under the GL lock. */
|
/* Do not call while under the GL lock. */
|
||||||
static void texture2d_preload(struct wined3d_texture *texture, enum WINED3DSRGB srgb)
|
static void texture2d_preload(struct wined3d_texture *texture, enum WINED3DSRGB srgb)
|
||||||
{
|
{
|
||||||
@ -677,21 +692,7 @@ static void texture2d_preload(struct wined3d_texture *texture, enum WINED3DSRGB
|
|||||||
|
|
||||||
TRACE("texture %p, srgb %#x.\n", texture, srgb);
|
TRACE("texture %p, srgb %#x.\n", texture, srgb);
|
||||||
|
|
||||||
switch (srgb)
|
srgb_mode = texture_srgb_mode(texture, srgb);
|
||||||
{
|
|
||||||
case SRGB_RGB:
|
|
||||||
srgb_mode = FALSE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SRGB_SRGB:
|
|
||||||
srgb_mode = TRUE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
srgb_mode = texture->flags & WINED3D_TEXTURE_IS_SRGB;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl_tex = wined3d_texture_get_gl_texture(texture, gl_info, srgb_mode);
|
gl_tex = wined3d_texture_get_gl_texture(texture, gl_info, srgb_mode);
|
||||||
|
|
||||||
if (!device->isInDraw)
|
if (!device->isInDraw)
|
||||||
@ -1095,7 +1096,7 @@ static void texture3d_preload(struct wined3d_texture *texture, enum WINED3DSRGB
|
|||||||
else if (texture->bind_count > 0)
|
else if (texture->bind_count > 0)
|
||||||
{
|
{
|
||||||
BOOL texture_srgb = texture->flags & WINED3D_TEXTURE_IS_SRGB;
|
BOOL texture_srgb = texture->flags & WINED3D_TEXTURE_IS_SRGB;
|
||||||
BOOL sampler_srgb = device->stateBlock->state.sampler_states[texture->sampler][WINED3DSAMP_SRGBTEXTURE];
|
BOOL sampler_srgb = texture_srgb_mode(texture, srgb);
|
||||||
srgb_was_toggled = !texture_srgb != !sampler_srgb;
|
srgb_was_toggled = !texture_srgb != !sampler_srgb;
|
||||||
|
|
||||||
if (srgb_was_toggled)
|
if (srgb_was_toggled)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user