[PATCH v2 1/6] wined3d: Fix querying texture-related limits on core profile.

Henri Verbeet hverbeet at gmail.com
Wed Feb 8 09:05:18 CST 2017


On 7 February 2017 at 22:08, Matteo Bruni <mbruni at codeweavers.com> wrote:
> diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
> index c47052c..bfb018e 100644
> --- a/dlls/wined3d/directx.c
> +++ b/dlls/wined3d/directx.c
> @@ -3405,24 +3405,35 @@ static void wined3d_adapter_init_limits(struct wined3d_gl_info *gl_info)
>      }
>      if (gl_info->supported[ARB_MULTITEXTURE])
>      {
> -        gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max);
> -        gl_info->limits.textures = min(MAX_TEXTURES, gl_max);
> -        TRACE("Max textures: %d.\n", gl_info->limits.textures);
> +        if (gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
> +        {
> +            gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &gl_max);
> +            gl_info->limits.textures = min(MAX_TEXTURES, gl_max);
> +            TRACE("Max textures: %d.\n", gl_info->limits.textures);
>
> -        if (gl_info->supported[ARB_FRAGMENT_PROGRAM])
> +            if (gl_info->supported[ARB_FRAGMENT_PROGRAM])
> +            {
> +                gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &gl_max);
> +                gl_info->limits.texture_coords = min(MAX_TEXTURES, gl_max);
> +            }
> +            else
> +            {
> +                gl_info->limits.texture_coords = max(gl_info->limits.texture_coords, gl_max);
> +            }
> +            TRACE("Max texture coords: %d.\n", gl_info->limits.texture_coords);
> +        }
> +
> +        if (gl_info->supported[ARB_FRAGMENT_PROGRAM] || gl_info->supported[ARB_FRAGMENT_SHADER])
>          {
>              GLint tmp;
> -            gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_COORDS_ARB, &gl_max);
> -            gl_info->limits.texture_coords = min(MAX_TEXTURES, gl_max);
> +
>              gl_info->gl_ops.gl.p_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &tmp);
>              gl_info->limits.fragment_samplers = min(MAX_FRAGMENT_SAMPLERS, tmp);
>          }
>          else
>          {
> -            gl_info->limits.texture_coords = max(gl_info->limits.texture_coords, gl_max);
>              gl_info->limits.fragment_samplers = max(gl_info->limits.fragment_samplers, gl_max);
>          }
> -        TRACE("Max texture coords: %d.\n", gl_info->limits.texture_coords);
>          TRACE("Max fragment samplers: %d.\n", gl_info->limits.fragment_samplers);
>
>          if (gl_info->supported[ARB_VERTEX_SHADER])
This still doesn't really look logical to me.



More information about the wine-devel mailing list