> There is a fundamental logical problem with this patch though, because
> glamor_upload_picture_to_texture() does:
> 
>   assert(glamor_pixmap_is_memory(pixmap));
> 
> which is basically priv->type == GLAMOR_MEMORY;
> 
> So glamor_upload_picture_to_texture() clearly expects a pixmap of type
> GLAMOR_MEMORY which my patch avoids, so the patch is clearly not right... I
> mean, it avoids the assert() failure but it disables the entire logic.

Oh, I reckon this it pretty obvious though... Sorry I did not spot this before, 
took me a while to figure that, but this is because of CA_TWO_PASS (that's even 
obious from the backtrace frame #5 in bug 99346 [0])

In glamor_composite_with_shader() [1] we call glamor_composite_choose_shader() 
twice in a row when CA_TWO_PASS is set [2], the first call works, but the 
second reaches the assertion failure set by commit ee7ca67 [3].

This is because glamor_composite_choose_shader() calls 
glamor_upload_picture_to_texture() which in turn calls 
glamor_pixmap_ensure_fbo() which sets the fbo on the first call, which cause 
the assert to be reached on the second.

So I suspect commit ee7ca67 [3] and commit 1bed5ef [4] can't work with 
CA_TWO_PASS

Cheers,
Olivier

[0] https://bugs.freedesktop.org/show_bug.cgi?id=99346#c0
[1] https://cgit.freedesktop.org/xorg/xserver/tree/glamor/glamor_render.c#n1112
[2] https://cgit.freedesktop.org/xorg/xserver/tree/glamor/glamor_render.c#n1142
[3] https://cgit.freedesktop.org/xorg/xserver/commit/?id=ee7ca67
[4] https://cgit.freedesktop.org/xorg/xserver/commit/?id=1bed5ef
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to