[PATCH 4/6] d3d9: Keep track of D3DUSAGE_AUTOGENMIPMAP textures in the d3d9 device.
Józef Kucia
joseph.kucia at gmail.com
Fri Feb 1 16:00:27 CST 2019
On Fri, Feb 1, 2019 at 1:00 PM Matteo Bruni <mbruni at codeweavers.com> wrote:
> + unsigned int i = stage >= D3DVERTEXTEXTURESAMPLER0 ? stage - D3DVERTEXTEXTURESAMPLER0 + 16 : stage;
> +
> + if (i < D3D9_MAX_TEXTURE_UNITS)
> + {
> + if (texture_impl && texture_impl->usage & D3DUSAGE_AUTOGENMIPMAP)
> + device->auto_mipmaps |= 1u << i;
> + else
> + device->auto_mipmaps &= ~(1u << i);
> + }
> + }
We probably need to validate the "stage" parameter, otherwise
SetTexture() with stage = 16 updates the "auto_mipmaps" for vertex
texture sampler 0.
> + while (map)
> {
> + i = ffs(map) - 1;
> + map ^= 1u << i;
wined3d_bit_scan() is preferred.
> + if ((wined3d_texture = wined3d_device_get_texture(device->wined3d_device, stage))
> + && (texture = wined3d_texture_get_parent(wined3d_texture))
> + && texture->usage & D3DUSAGE_AUTOGENMIPMAP)
> + device->auto_mipmaps |= 1u << i;
> + else
> + device->auto_mipmaps &= ~(1u << i);
Formatting.
More information about the wine-devel
mailing list