On 6 February 2018 at 22:06, Matteo Bruni mbruni@codeweavers.com wrote:
@@ -2159,6 +2159,12 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3 return WINED3DERR_INVALIDCALL; } }
if (flags & WINED3D_TEXTURE_GENERATE_MIPMAPS && !gl_info->supported[ARB_FRAMEBUFFER_OBJECT]
&& !gl_info->supported[EXT_FRAMEBUFFER_OBJECT])
{
WARN("No mipmap generation support, returning WINED3DERR_INVALIDCALL.\n");
return WINED3DERR_INVALIDCALL;
}
if (FAILED(hr = wined3d_texture_init(texture, &texture2d_ops, layer_count, level_count, desc, flags, device, parent, parent_ops, &texture_resource_ops)))
Should that check be in wined3d_texture_init() instead? Also, note that wined3d_check_device_format() uses a somewhat different check for WINED3DUSAGE_AUTOGENMIPMAP and later WINED3DUSAGE_QUERY_GENMIPMAP. I'm tempted to say we should introduce WINED3DFMT_FLAG_GEN_MIPMAP and use that both here and in wined3d_check_device_format(). And perhaps "!gl_info->fbo_ops.glGenerateMipmap" works just as well as checking individual extensions.