> 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
