<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Fri, May 25, 2018 at 7:41 AM Elie Tournier <<a href="mailto:tournier.elie@gmail.com">tournier.elie@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wed, May 16, 2018 at 10:34:29PM +0100, Elie Tournier wrote:<br>
> Fixes: 7f615cd "shader: Invert y coordonate if on gles host"<br>
<br>
Oups. s/coordonate/coordinate/g<br>
Ping?<br>
> <br>
> Signed-off-by: Elie Tournier <<a href="mailto:elie.tournier@collabora.com" target="_blank">elie.tournier@collabora.com</a>><br>
> ---<br>
>  src/vrend_renderer.c |  3 +++<br>
>  src/vrend_shader.c   | 10 +++++++---<br>
>  2 files changed, 10 insertions(+), 3 deletions(-)<br>
> <br>
> diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c<br>
> index 55b96db..70ea0c5 100644<br>
> --- a/src/vrend_renderer.c<br>
> +++ b/src/vrend_renderer.c<br>
> @@ -158,6 +158,7 @@ struct vrend_linked_shader_program {<br>
>  <br>
>     GLuint *ubo_locs[PIPE_SHADER_TYPES];<br>
>     GLuint vs_ws_adjust_loc;<br>
> +   GLuint vs_ws_adjust_loc_gles;<br></blockquote><div><br></div><div>nit: should be fs_ws_adjust_loc_gles, since we only emit in the fragment shader.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>  <br>
>     GLuint fs_stipple_loc;<br>
>  <br>
> @@ -975,6 +976,7 @@ static struct vrend_linked_shader_program *add_shader_program(struct vrend_conte<br>
>     else<br>
>        sprog->fs_stipple_loc = -1;<br>
>     sprog->vs_ws_adjust_loc = glGetUniformLocation(prog_id, "winsys_adjust_y");<br>
> +   sprog->vs_ws_adjust_loc_gles = glGetUniformLocation(prog_id, "winsys_adjust_y_gles");<br>
>     for (id = PIPE_SHADER_VERTEX; id <= last_shader; id++) {<br>
>        if (sprog->ss[id]->sel->sinfo.samplers_used_mask) {<br>
>           uint32_t mask = sprog->ss[id]->sel->sinfo.samplers_used_mask;<br>
> @@ -3028,6 +3030,7 @@ void vrend_draw_vbo(struct vrend_context *ctx,<br>
>        return;<br>
>     }<br>
>     glUniform1f(ctx->sub->prog->vs_ws_adjust_loc, ctx->sub->viewport_is_negative ? -1.0 : 1.0);<br>
> +   glUniform1f(ctx->sub->prog->vs_ws_adjust_loc_gles, ctx->sub->viewport_is_negative ? 0.0 : 1.0);<br></blockquote><div><br></div><div>It looks like vs_ws_adjust_loc and vs_ws_adjust_loc_gles seem to cancel each other out on GLES (correct me if I'm wrong).  Is it possible to just modify <span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">v</span><span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">s_ws_adjust_loc depending on some relevant variables?  i.e, </span></div><div><span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><div><span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">bool invert = ctx->sub->viewport_is_negative ? true : false;</span></div><div><span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">invert = invert ^ (use_gles && state->sprite_coord_mode == PIPE_SPRITE_COORD_LOWER_LEFT)</span></div><div><span style="color:rgb(34,34,34);font-family:sans-serif;font-size:13px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>  <br>
>     if (ctx->sub->rs_state.clip_plane_enable) {<br>
>        for (i = 0 ; i < 8; i++) {<br>
> diff --git a/src/vrend_shader.c b/src/vrend_shader.c<br>
> index 1ce18de..05eadd7 100644<br>
> --- a/src/vrend_shader.c<br>
> +++ b/src/vrend_shader.c<br>
> @@ -53,7 +53,7 @@ struct vrend_shader_io {<br>
>     bool glsl_gl_in;<br>
>     bool override_no_wm;<br>
>     bool is_int;<br>
> -   char glsl_name[64];<br>
> +   char glsl_name[128];<br></blockquote><div><br></div><div>This needs a minor rebase, with the arb_gpu_shader5 having landed.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>  };<br>
>  <br>
>  struct vrend_shader_sampler {<br>
> @@ -416,7 +416,7 @@ iter_declaration(struct tgsi_iterate_context *iter,<br>
>           if (iter->processor.Processor == TGSI_PROCESSOR_FRAGMENT) {<br>
>              if (ctx->key->coord_replace & (1 << ctx->inputs[i].sid)) {<br>
>                 if (ctx->cfg->use_gles)<br>
> -                  name_prefix = "vec4(gl_PointCoord.x, 1.0 - gl_PointCoord.y, 0.0, 1.0)";<br>
> +                  name_prefix = "vec4(gl_PointCoord.x, mix(1.0 - gl_PointCoord.y, gl_PointCoord.y, winsys_adjust_y_gles), 0.0, 1.0)";<br>
>                 else<br>
>                    name_prefix = "vec4(gl_PointCoord, 0.0, 1.0)";<br>
>                 ctx->inputs[i].glsl_predefined_no_emit = true;<br>
> @@ -444,7 +444,7 @@ iter_declaration(struct tgsi_iterate_context *iter,<br>
>        }<br>
>  <br>
>        if (ctx->inputs[i].glsl_no_index)<br>
> -         snprintf(ctx->inputs[i].glsl_name, 64, "%s", name_prefix);<br>
> +         snprintf(ctx->inputs[i].glsl_name, 128, "%s", name_prefix);<br>
>        else {<br>
>           if (ctx->inputs[i].name == TGSI_SEMANTIC_FOG)<br>
>              snprintf(ctx->inputs[i].glsl_name, 64, "%s_f%d", name_prefix, ctx->inputs[i].sid);<br>
> @@ -2439,6 +2439,10 @@ static char *emit_ios(struct dump_ctx *ctx, char *glsl_hdr)<br>
>        bcolor_emitted[0] = bcolor_emitted[1] = false;<br>
>     }<br>
>     if (ctx->prog_type == TGSI_PROCESSOR_FRAGMENT) {<br>
> +      if (ctx->cfg->use_gles) {<br>
> +         snprintf(buf, 255, "uniform float winsys_adjust_y_gles;\n");<br>
> +         STRCAT_WITH_RET(glsl_hdr, buf);<br>
> +      }<br>
>        if (fs_emit_layout(ctx)) {<br>
>           bool upper_left = !(ctx->fs_coord_origin ^ ctx->key->invert_fs_origin);<br>
>           char comma = (upper_left && ctx->fs_pixel_center) ? ',' : ' ';<br>
> -- <br>
> 2.17.0<br>
> <br>
_______________________________________________<br>
virglrenderer-devel mailing list<br>
<a href="mailto:virglrenderer-devel@lists.freedesktop.org" target="_blank">virglrenderer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/virglrenderer-devel</a><br>
</blockquote></div></div>