History log of /external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0fcc518964223d9baaa2b45e80afeb800beb872f 01-Feb-2012 Ville Syrjala <syrjala@sci.fi> gallium/dri: Handle xserver that doesn't send needless DRI2 invalidate events

Ever since xserver commit 531869448d07e00ae241120b59f3aaaa5709d59c,
the server no longer sends invalidate events to clients, unless they
have performed a GetBuffers request since the drawable was last
invalidated.

If the drawable gets invalidated immediately after the GetBuffers
request was processed by the X server, it's possible that Xlib
will process the invalidate event while waiting for the GetBuffers
reply. So the server, thinking the client knows that the buffers
are invalid, is waiting for another GetBuffers request before
sending any more invalidate events. The client, on the other hand,
believes the buffers to be valid, and thus is expecting to receive
another invalidate event before it has to send another GetBuffers
request. The end result is that the client never again sends
a GetBuffers request.

To avoid this problem, take a snapshot of the lastStamp before
doing GetBuffers, and retry if the snapshot and the current
lastStamp no longer match after the GetBuffers reply has been
processed.

Signed-off-by: Ville Syrjälä <syrjala@sci.fi>
Signed-off-by: Dave Airlie <airlied@redhat.com>
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
875a757ddd103722cfe9a2b21035024aa5a23d32 03-Nov-2011 George Sapountzis <gsapountzis@gmail.com> dri: unify __DRIscreenRec

Also drop DriverAPI field, this is a static symbol and I don't see why it
should be accessed through __DRIscreenRec
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
e9beaf65fdaf82a7845cbe176f353ddb6b8466c7 28-Oct-2011 Kristian Høgsberg <krh@bitplanet.net> dri: Remove unnecessary timestamp pointer indirection
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
98aa2a8f725e44aec8bd998fe436a134e94f13bb 09-Sep-2011 Benjamin Franzke <benjaminfranzke@googlemail.com> st/dri/sw: Implement texture_from_pixmap

This is a cleanup of commit 02f1b50987c0d24da3dcc36dbb44821c20d0660c.

Update tex buffer using a dri_drawable hook from implemented in sw/drisw.c.
This saves us the duplication of dri_drawable.c.

CC: Stuart Abercrombie <sabercrombie@chromium.org>
CC: Stéphane Marchesin <marcheu@chromium.org>
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
bde2fc5a7123829dc87d3761934627555be4446f 12-Oct-2011 Thomas Hellstrom <thellstrom@vmware.com> st/dri: Hook up throttling based on the drm driver_descriptor configuration

Hooks up throttling if there is a configuration function present and
it indicates that throttling is desired.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
23c41233ce9ac13ba60242f9e839d5b13d1ea803 11-Oct-2011 Thomas Hellstrom <thellstrom@vmware.com> st/dri: Implement the new dri2 throttling extension

But don't hook it up just yet until we figure out a good way to do that.
Also, we should, in the future, add driconf options to control what
throttling reasons should be honored, and the number of outstanding
swaps allowed.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
ac8fdbc1c723afb19eeaba5457ba78d0bf33b8d4 29-Jun-2011 Thomas Hellstrom <thellstrom@vmware.com> st-api: Rework how drawables are invalidated v3.

The api and the state tracker manager code as well as the state tracker code
assumed that only a single context could be bound to a drawable. That is not
a valid assumption, since multiple contexts can bind to the same drawable.

Fix this by making it the state tracker's responsibility to update all
contexts binding to a drawable

Note that the state trackers themselves don't use atomic stamps on
frame-buffers. Multiple context rendering to the same drawable should
be protected by the application.

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
94ccc31ba4f64ac480137fd90f1ded44d2072f6e 01-Dec-2010 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Track drawable context bindings

Needs to track this ourself since because we get into a race condition with
the dri_util.c code on make current when rendering to the front buffer.

This is what happens:
Old context is rendering to the front buffer.

App calls MakeCurrent with a new context. dri_util.c sets
drawable->driContextPriv to the new context and then calls the driver make
current. st/dri make current flushes the old context, which calls back into
st/dri via the flush frontbuffer hook. st/dri calls dri loader flush
frontbuffer, which calls invalidate buffer on the drawable into st/dri.

This is where things gets wrong. st/dri grabs the context from the dri
drawable (which now points to the new context) and calls invalidate
framebuffer to the new context which has not yet set the new drawable as its
framebuffers since we have not called make current yet, it asserts.
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
484edfc8151ddf63d3e0e7be3b4c8fa3906a0ec9 21-Jan-2011 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Fix warning
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
d3491e775fb07f891463b2185d74bbad62f3ed24 12-Oct-2010 Kristian Høgsberg <krh@bitplanet.net> Rename GLvisual and __GLcontextModes to struct gl_config
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
5c0a0f219843fa283a0fd98dbe0544e8ea820c60 11-Aug-2010 George Sapountzis <gsapountzis@gmail.com> st/dri: make dri_drawable_validate_att static
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
c14b4371ed58859d264b7b2581cfedc9cfd8401f 11-Aug-2010 George Sapountzis <gsapountzis@gmail.com> st/dri: move TFP code to dri_drawable.c

This is based on a patch by nobled <nobled@dreamwidth.org> and allows the TFP
extension to be enabled for DRISW also. This patch does not enable TFP for DRISW
though, because testing on xephyr segfaults here (for both classic and gallium):

Program received signal SIGSEGV, Segmentation fault.
0x00786a4a in _mesa_GenTextures (n=1, textures=0xbfffee4c) at main/texobj.c:788
788 ASSERT_OUTSIDE_BEGIN_END(ctx);
(gdb)
(gdb) where
\#0 0x00786a4a in _mesa_GenTextures (n=1, textures=0xbfffee4c) at main/texobj.c:788
\#1 0x0817a004 in __glXDisp_GenTextures ()
\#2 0x08168498 in __glXDispatch ()
\#3 0x0808b6ce in Dispatch ()
\#4 0x08084435 in main ()

The TFP code is generic except for the teximage call. We need to verify that
DRISW correclty implements whatever hook teximage finally calls.
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
ca0b0899d8cc20f3e918839e044c55f9a19e9ffe 31-Jul-2010 Vinson Lee <vlee@vmware.com> st/dri: Remove unnecessary headers.
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
873ddf547d5aeb68f37a172d73131c6bc51101f6 18-Jul-2010 George Sapountzis <gsapountzis@gmail.com> st/dri: move backend hooks to appropriate object
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
a30b966f8345cb99922a416fce2da6edb70f864c 26-May-2010 George Sapountzis <gsapountzis@gmail.com> st/dri: drop dri1_helper
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
a93f9f343a64ce91587af66761399f9d4c180015 21-May-2010 Jakob Bornecrantz <jakob@vmware.com> gallium: Fix invalidate framebuffer with old libGL libraries
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
1372a8f90dc64350e4ac29dbb8c5feb88bc83cd1 24-Apr-2010 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Refactor dri_st_api into other files
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
27779ddad5c61d2fc46367e1556b5e53403c2a97 24-Apr-2010 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Make st_framebuffer_iface the base for dri_drawable
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
ea6a52a1f8e7fd72b5506218c31e58088131f1f5 24-Apr-2010 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Add hooks for framebuffer functions
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
5123e33863ac37242eb5e867cd0a38fecbd06b48 31-Mar-2010 Vinson Lee <vlee@vmware.com> st/dri: Remove unnecessary header.
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c
80672e84cf79ab12b7a4ff56567184d1c39baef3 25-Mar-2010 Jakob Bornecrantz <wallbraker@gmail.com> st/dri: Move common files to common directory

27 files changed, 15 insertions(+), 15 deletions(-)
rename src/gallium/state_trackers/dri/{ => common}/dri1_helper.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri1_helper.h (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_context.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_context.h (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_drawable.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_drawable.h (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_extensions.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_screen.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_screen.h (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_st_api.c (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_st_api.h (100%)
rename src/gallium/state_trackers/dri/{ => common}/dri_wrapper.h (100%)
/external/mesa3d/src/gallium/state_trackers/dri/common/dri_drawable.c