[virglrenderer-devel] [PATCH] vrend: Reset shader_dirty and cs_shader_dirty when emitted

Gert Wollny gert.wollny at collabora.com
Fri Feb 15 08:54:55 UTC 2019


Hi Stéphane,
 
we are now actually using merge requests in virglrenderer

Best, 
Gert


Am Donnerstag, den 14.02.2019, 16:43 -0800 schrieb Stéphane Marchesin:
> This results in reemitting the shaders over and over which causes a
> performance hit.
> 
> Benchmarks using glbench:
> 
> Before:
> @RESULT: fbofill_tex_bilinear_32                       =     942.40
> mpixels_sec
> @RESULT: fbofill_tex_bilinear_64                       =    3736.99
> mpixels_sec
> 
> After:
> @RESULT: fbofill_tex_bilinear_32                       =    1124.72
> mpixels_sec
> @RESULT: fbofill_tex_bilinear_64                       =    4222.07
> mpixels_sec
> 
> Signed-off-by: Stéphane Marchesin <marcheu at chromium.org>
> ---
>  src/vrend_renderer.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
> index a325f9e..689f4b7 100644
> --- a/src/vrend_renderer.c
> +++ b/src/vrend_renderer.c
> @@ -3901,6 +3901,9 @@ int vrend_draw_vbo(struct vrend_context *ctx,
>        bool fs_dirty, vs_dirty, gs_dirty, tcs_dirty, tes_dirty;
>        bool dual_src = util_blend_state_is_dual(&ctx->sub-
> >blend_state, 0);
>        bool same_prog;
> +
> +      ctx->sub->shader_dirty = false;
> +
>        if (!ctx->sub->shaders[PIPE_SHADER_VERTEX] || !ctx->sub-
> >shaders[PIPE_SHADER_FRAGMENT]) {
>           fprintf(stderr,"dropping rendering due to missing shaders:
> %s\n", ctx->debug_name);
>           return 0;
> @@ -4140,6 +4143,9 @@ void vrend_launch_grid(struct vrend_context
> *ctx,
>     if (ctx->sub->cs_shader_dirty) {
>        struct vrend_linked_shader_program *prog;
>        bool same_prog, cs_dirty;
> +
> +      ctx->sub->cs_shader_dirty = false;
> +
>        if (!ctx->sub->shaders[PIPE_SHADER_COMPUTE]) {
>           fprintf(stderr,"dropping rendering due to missing shaders:
> %s\n", ctx->debug_name);
>           return;


More information about the virglrenderer-devel mailing list