[virglrenderer-devel] [PATCH v2] renderer: Protect glSampleMaski and GL_SAMPLE_MASK.

Gert Wollny gert.wollny at collabora.com
Mon Aug 6 08:49:25 UTC 2018


looks reasonable, 
Reviewed-By: Gert Wollny <gert.wollny at collabora.com> 

Am Mittwoch, den 25.07.2018, 17:09 -0700 schrieb David Riley:
> Currently based on feat_multisample, but glSampleMaski isn't
> supported
> with the same versions.
> 
> v2: Update to use new feature code.
> 
> Signed-off-by: David Riley <davidriley at chromium.org>
> ---
>  src/vrend_renderer.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
> index da24f04..efb59ea 100644
> --- a/src/vrend_renderer.c
> +++ b/src/vrend_renderer.c
> @@ -113,6 +113,7 @@ enum features_id
>     feat_nv_conditional_render,
>     feat_nv_prim_restart,
>     feat_polygon_offset_clamp,
> +   feat_sample_mask,
>     feat_sample_shading,
>     feat_samplers,
>     feat_ssbo,
> @@ -164,6 +165,7 @@ static const  struct {
>     [feat_nv_conditional_render] = { UNAVAIL, UNAVAIL, {
> "GL_NV_conditional_render" } },
>     [feat_nv_prim_restart] = { UNAVAIL, UNAVAIL, {
> "GL_NV_primitive_restart" } },
>     [feat_polygon_offset_clamp] = { 46, UNAVAIL, {
> "GL_ARB_polygon_offset_clamp" } },
> +   [feat_sample_mask] = { 32, 31, { "GL_ARB_texture_multisample" }
> },
>     [feat_sample_shading] = { 40, UNAVAIL, { "GL_ARB_sample_shading"
> } },
>     [feat_samplers] = { 33, UNAVAIL, { "GL_ARB_sampler_objects" } },
>     [feat_ssbo] = { 43, 31, { "GL_ARB_shader_storage_buffer_object" }
> },
> @@ -4304,10 +4306,12 @@ static void vrend_hw_emit_rs(struct
> vrend_context *ctx)
>     }
>  
>     if (has_feature(feat_multisample)) {
> -      if (state->multisample)
> -         glEnable(GL_SAMPLE_MASK);
> -      else
> -         glDisable(GL_SAMPLE_MASK);
> +      if (has_feature(feat_sample_mask)) {
> +	 if (state->multisample)
> +	    glEnable(GL_SAMPLE_MASK);
> +	 else
> +	    glDisable(GL_SAMPLE_MASK);
> +      }
>  
>        /* GLES doesn't have GL_MULTISAMPLE */
>        if (!vrend_state.use_gles) {
> @@ -6296,7 +6300,8 @@ void vrend_set_clip_state(struct vrend_context
> *ctx, struct pipe_clip_state *ucp
>  
>  void vrend_set_sample_mask(UNUSED struct vrend_context *ctx,
> unsigned sample_mask)
>  {
> -   glSampleMaski(0, sample_mask);
> +   if (has_feature(feat_sample_mask))
> +      glSampleMaski(0, sample_mask);
>  }
>  
>  void vrend_set_min_samples(struct vrend_context *ctx, unsigned
> min_samples)


More information about the virglrenderer-devel mailing list