[Mesa-dev] [PATCH v2.1] i965/gen7: expose OpenGL 4.0 on Haswell

Iago Toral itoral at igalia.com
Fri Oct 21 06:34:32 UTC 2016


On Thu, 2016-10-20 at 16:25 -0700, Ian Romanick wrote:
> On 10/20/2016 12:09 AM, Iago Toral Quiroga wrote:
> > 
> > ARB_gpu_shader_fp64 was the last piece missing. Notice that some
> > hardware and kernel combinations do not support pipelined register
> > writes, which are required for some OpenGL 4.0 features, in which
> > case the driver won't expose 4.0.
> > 
> > v2 (Ian, Ken):
> >   - We should not set max_gl_core_version to 40 if we don't support
> >     pipelined register writes. If we did that, then we would allow
> >     the creation of GL4 contexts but the actual context we create
> >     might only be 3.3. Check that we support this by looking at the
> >     Kernel's supported command parser version. This requires
> >     that we get the supported command parser version before we call
> >     set_max_gl_versions() too.
> > ---
> >  src/mesa/drivers/dri/i965/intel_extensions.c |  2 ++
> >  src/mesa/drivers/dri/i965/intel_screen.c     | 13 +++++++------
> >  2 files changed, 9 insertions(+), 6 deletions(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c
> > b/src/mesa/drivers/dri/i965/intel_extensions.c
> > index 9cc22cc..8370dc4 100644
> > --- a/src/mesa/drivers/dri/i965/intel_extensions.c
> > +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
> > @@ -272,6 +272,8 @@ intelInitExtensions(struct gl_context *ctx)
> >  
> >     if (brw->gen >= 8)
> >        ctx->Const.GLSLVersion = 450;
> > +   else if (brw->is_haswell && brw->screen->cmd_parser_version >=
> > 2)
> > +      ctx->Const.GLSLVersion = 400;
> The GLSL version is (eventually) clamped by the GL version, so this
> doesn't matter as much.  I'm fine with it either way.

In that case I'll remove the check for simplicity.

> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

Thanks!

> > 
> >     else if (brw->gen >= 6)
> >        ctx->Const.GLSLVersion = 330;
> >     else
> > diff --git a/src/mesa/drivers/dri/i965/intel_screen.c
> > b/src/mesa/drivers/dri/i965/intel_screen.c
> > index e1c3c19..20d75a2 100644
> > --- a/src/mesa/drivers/dri/i965/intel_screen.c
> > +++ b/src/mesa/drivers/dri/i965/intel_screen.c
> > @@ -1445,7 +1445,8 @@ set_max_gl_versions(struct intel_screen
> > *screen)
> >        dri_screen->max_gl_es2_version = has_astc ? 32 : 31;
> >        break;
> >     case 7:
> > -      dri_screen->max_gl_core_version = 33;
> > +      dri_screen->max_gl_core_version =
> > +         screen->devinfo.is_haswell && screen->cmd_parser_version
> > >= 2 ? 40 : 33;
> >        dri_screen->max_gl_compat_version = 30;
> >        dri_screen->max_gl_es1_version = 11;
> >        dri_screen->max_gl_es2_version = screen->devinfo.is_haswell
> > ? 31 : 30;
> > @@ -1650,6 +1651,11 @@ __DRIconfig **intelInitScreen2(__DRIscreen
> > *dri_screen)
> >        screen->winsys_msaa_samples_override = -1;
> >     }
> >  
> > +   if (intel_get_param(screen, I915_PARAM_CMD_PARSER_VERSION,
> > +                       &screen->cmd_parser_version) < 0) {
> > +      screen->cmd_parser_version = 0;
> > +   }
> > +
> >     set_max_gl_versions(screen);
> >  
> >     /* Notification of GPU resets requires hardware contexts and a
> > kernel new
> > @@ -1671,11 +1677,6 @@ __DRIconfig **intelInitScreen2(__DRIscreen
> > *dri_screen)
> >           (ret != -1 || errno != EINVAL);
> >     }
> >  
> > -   if (intel_get_param(screen, I915_PARAM_CMD_PARSER_VERSION,
> > -                       &screen->cmd_parser_version) < 0) {
> > -      screen->cmd_parser_version = 0;
> > -   }
> > -
> >     /* Haswell requires command parser version 6 in order to write
> > to the
> >      * MI_MATH GPR registers, and version 7 in order to use
> >      * MI_LOAD_REGISTER_REG (which all users of MI_MATH use).
> > 
> 


More information about the mesa-dev mailing list