<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Jun 29, 2018 at 5:16 AM, Elie Tournier <span dir="ltr"><<a href="mailto:tournier.elie@gmail.com" target="_blank">tournier.elie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Thu, Jun 28, 2018 at 08:31:26PM -0700, Gurchetan Singh wrote:<br>
> Sampler arrays don't work with shadow textures. Let's have a<br>
> separate emission function that we can use with sampler arrays and<br>
> normal samplers.<br>
> <br>
</span>The v2 looks better but I still have the same issues.<br>
Patches don't apply on top of Dave gl-4.3 branch. And a "double free or corruption".<br>
<br></blockquote><div><br></div><div>I tested on gl-4.3, but back-ported to master.  Here's the branch I used to test: <br></div><div><br></div><div><a href="https://gitlab.freedesktop.org/gurchetansingh/virglrenderer/commits/gl-4.3">https://gitlab.freedesktop.org/gurchetansingh/virglrenderer/commits/gl-4.3</a><br></div><div><br></div><div>I'm running on an Nvidia GL host.  Are you running on a GLES host?  Also, do happen to know which test triggers the error?   For me, dEQP gles31 runs to completion without any host side crashes.</div><div><br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I maybe did something wrong.<br>
So what setup should I use to test this fix?<br>
<div><div class="gmail-h5">> v2: Split out in separate function, initialize shadow variable to<br>
>     zero<br>
> ---<br>
>  src/vrend_shader.c | 34 ++++++++++++++++++++++++++++++<wbr>++++<br>
>  1 file changed, 34 insertions(+)<br>
> <br>
> diff --git a/src/vrend_shader.c b/src/vrend_shader.c<br>
> index f7bf853c46..f0dc49cbbf 100644<br>
> --- a/src/vrend_shader.c<br>
> +++ b/src/vrend_shader.c<br>
> @@ -3409,6 +3409,40 @@ static char get_return_type_prefix(enum tgsi_return_type type)<br>
>     return ' ';<br>
>  }<br>
>  <br>
> +/* i represents the i-th sampler array or i-th sampler. */<br>
> +static void emit_sampler_declaration(<wbr>struct dump_ctx *ctx, char *glsl_hdr, uint32_t i,<br>
> +                                     uint32_t range, uint32_t texture_type, uint32_t return_type)<br>
> +{<br>
> +   int shadow;<br>
> +   char buf[255], ret_type;<br>
> +   const char *sname, *precision, *tex_type;<br>
> +<br>
> +   shadow = 0;<br>
> +   sname = tgsi_proc_to_prefix(ctx->prog_<wbr>type);<br>
> +   precision = (ctx->cfg->use_gles) ? "highp " : " ";<br>
> +<br>
> +   tex_type = vrend_shader_samplertypeconv(<wbr>texture_type, &shadow);<br>
> +   ret_type = vrend_shader_<wbr>samplerreturnconv(return_type)<wbr>;<br>
> +<br>
> +   /* GLES does not support 1D textures -- we use a 2D texture and set the parameter set to 0.5 */<br>
> +   if (ctx->cfg->use_gles && texture_type == TGSI_TEXTURE_1D)<br>
> +      snprintf(buf, 255, "uniform %csampler2D %ssamp%d;\n", ret_type, sname, i);<br>
> +   else if (range)<br>
> +      snprintf(buf, 255, "uniform %s%csampler%s %ssamp%d[%d];\n", precision, ret_type, tex_type, sname, i, range);<br>
> +   else<br>
> +      snprintf(buf, 255, "uniform %s%csampler%s %ssamp%d;\n", precision, ret_type, tex_type, sname, i);<br>
> +<br>
> +   strcat_realloc(glsl_hdr, buf);<br>
> +<br>
> +   if (shadow) {<br>
> +      snprintf(buf, 255, "uniform %svec4 %sshadmask%d;\n", precision, sname, i);<br>
> +      strcat_realloc(glsl_hdr, buf);<br>
> +      snprintf(buf, 255, "uniform %svec4 %sshadadd%d;\n", precision, sname, i);<br>
> +      strcat_realloc(glsl_hdr, buf);<br>
> +      ctx->shadow_samp_mask |= (1 << i);<br>
> +   }<br>
> +}<br>
> +<br>
>  static char *emit_ios(struct dump_ctx *ctx, char *glsl_hdr)<br>
>  {<br>
>     uint32_t i;<br>
> -- <br>
> 2.18.0.rc2.346.g013aa6912e-<wbr>goog<br>
> <br>
</div></div>> ______________________________<wbr>_________________<br>
> virglrenderer-devel mailing list<br>
> <a href="mailto:virglrenderer-devel@lists.freedesktop.org">virglrenderer-devel@lists.<wbr>freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/<wbr>virglrenderer-devel</a><br>
</blockquote></div><br></div></div>