On 01/22/2015 11:59 PM, Tapani Pälli wrote:
> Implementation for nacl is somewhat different as for other platforms,
> platform needs to ensure that the previous swap has finished before
> issuing another one. This is done by introducing a worker thread that
> does buffer swaps from a work queue.
> 
> Signed-off-by: Tapani Pälli <tapani.pa...@intel.com>


> +// Thread takes care that we do not issue another buffer
> +// swap before previous swap has completed.
> +class NaclSwapThread : public pp::SimpleThread

> +
> +    void swap_buffers(int32_t result)
> +    {
> +        ctx.SwapBuffers(pp::BlockUntilComplete());
> +    }

I think I discovered why you were seeing rendering artifacts despite using 
BlockUntilComplete
as the callback. Quoting the NaCl API reference:

    int32_t(* PPB_Graphics3D::SwapBuffers)(PP_Resource context, struct 
PP_CompletionCallback callback)

    [...]

    SwapBuffers runs in asynchronous mode. Specify a callback function and the 
argument for that
    callback function. The callback function will be executed on the calling 
thread ***after*** the color
    buffer has been composited with rest of the html page.

The keyword is "after". If I understand this correctly, ctx.SwapBuffers() 
returned immediately.
Later, after webpage composition completed, the NaCl runtime called the 
BlockUntilComplete
callback, which is a no-op at that time. This is all new to me, though, so 
maybe I'm completely
wrong.

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
waffle mailing list
waffle@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/waffle

Reply via email to