gallium/swrast: fix front buffer blitting. (v2)
authorDave Airlie <airlied@redhat.com>
Fri, 9 Oct 2015 00:38:08 +0000 (01:38 +0100)
committerDave Airlie <airlied@gmail.com>
Sat, 31 Oct 2015 06:04:36 +0000 (16:04 +1000)
commit2b676570960277d47477822ffeccc672613f9142
tree84194de9b3e72ac548512b07c57e6a938d5efa19
parent103de0225b1e22aabc3e132ff30393765061ff03
gallium/swrast: fix front buffer blitting. (v2)

So I've known this was broken before, cogl has a workaround
for it from what I know, but with the gallium based swrast
drivers BlitFramebuffer from back to front or vice-versa
was pretty broken.

The legacy swrast driver tracks when a front buffer is used
and does the get/put images when it is mapped/unmapped,
so this patch attempts to add the same functionality to the
gallium drivers.

It creates a new context interface to denote when a front
buffer is being created, and passes a private pointer to it,
this pointer is then used to decide on map/unmap if the
contents should be updated from the real frontbuffer using
get/put image.

This is primarily to make gtk's gl code work, the only
thing I've tested so far is the glarea test from
https://github.com/ebassi/glarea-example.git

v2: bump extension version,
check extension version before calling get image. (Ian)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91930

Cc: <mesa-stable@lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
include/GL/internal/dri_interface.h
src/gallium/drivers/llvmpipe/lp_texture.c
src/gallium/drivers/softpipe/sp_texture.c
src/gallium/include/pipe/p_screen.h
src/gallium/include/state_tracker/drisw_api.h
src/gallium/include/state_tracker/sw_winsys.h
src/gallium/state_trackers/dri/drisw.c
src/gallium/winsys/sw/dri/dri_sw_winsys.c
src/glx/drisw_glx.c