summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/intel/intel_context.c
AgeCommit message (Collapse)Author
2010-02-17intel: Implement the DRI2 invalidate function properlyKristian Høgsberg
This uses a stamp mechanisms to mark the DRI drawable as invalid. Instead of immediately updating the buffers we just bump the drawable stamp and call out to DRI2GetBuffers "later". "Later" used to be at LOCK_HARDWARE time, and this patch brings back callouts at the points where we used to call LOCK_HARDWARE. A new function, intel_prepare_render(), is called where we used to call LOCK_HARDWARE, and if the buffers are invalid, we call out to DRI2GetBuffers there. This lets us invalidate buffers only when notified instead of on every glViewport() call. If the loader calls the DRI invalidate entrypoint, we disable viewport triggered buffer invalidation. Additionally, we can clean up the old viewport mechanism a bit, since we can just invalidate the buffers and not worry about reentrancy and whatnot.
2010-02-16dri2: Event driven buffer validation.Francisco Jerez
When a buffer invalidation event is received from the X server, the "invalidate" hook of the DRI2 flush extension is executed: A generic implementation (dri2InvalidateDrawable) is provided that just bumps the "pStamp" sequence number in __DRIdrawableRec. For old servers not supporting buffer invalidation events, the invalidate hook will be called before flushing the fake front/back buffer (that's typically once per frame -- not a lot worse than the situation we were in before). No effort has been made on preserving backwards compatibility with version 2 of the flush extension, but I think it's acceptable because AFAIK no released stack is making use of it. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
2010-02-12intel: Remove unused variable.Vinson Lee
2010-02-12intel: Avoid dri_bo_flink() in intel_update_renderbuffers()Kristian Høgsberg
Now that we track the global name in struct intel_region, we can just look it up there.
2010-02-11i915: Remove always-true irq_active struct intel_screen fieldKristian Høgsberg
2010-02-11i915: Drop intelScreenPrivate typedef and just call it struct intel_screenKristian Høgsberg
2010-01-30intel: Remove unnecessary headers.Vinson Lee
2010-01-25intel: Don't do client-side frame throttling with DRI2 SwapBuffers.Eric Anholt
The server side does the throttling on our behalf now by putting the client to sleep, so we don't need our previous hacks for limiting the number of outstanding frames. Same effect as 7d4e674b212c9dc6408c13913a399bd4a2b9a1e3.
2010-01-25Revert "intel: Use the new DRI2 flush invalidate entrypoint to signal frame ↵Eric Anholt
done." This reverts commit 7d4e674b212c9dc6408c13913a399bd4a2b9a1e3. It broke throttling in the non-new-DRI2 case.
2010-01-25Merge branch 'mesa_7_7_branch'Brian Paul
Conflicts: src/mesa/drivers/dri/intel/intel_screen.c src/mesa/drivers/dri/intel/intel_swapbuffers.c src/mesa/drivers/dri/r300/r300_emit.c src/mesa/drivers/dri/r300/r300_ioctl.c src/mesa/drivers/dri/r300/r300_tex.c src/mesa/drivers/dri/r300/r300_texstate.c
2010-01-23intel: Remove unnecessary headers.Vinson Lee
2010-01-19intel: Use the new DRI2 flush invalidate entrypoint to signal frame done.Eric Anholt
Previously for frame throttling we would wait on the first batch after a swap before emitting another swap, because we had no hook after a swap was emitted. This meant that if an app managed to squeeze everything it for a frame had into one batch, it would lock-step with the GPU. With the swapbuffers changes, we now have the entrypoint we want. This takes the WoW intro screen from 25% GPU idle and visibly jerky to 4-5% GPU idle and rather smooth. Other apps such as OpenArena have run into this problem as well.
2010-01-11Merge branch 'master' of ssh://people.freedesktop.org/~jbarnes/mesaJesse Barnes
Conflicts due to DRI1 removal: src/mesa/drivers/dri/intel/intel_context.c src/mesa/drivers/dri/intel/intel_screen.c
2010-01-08intel/DRI2: add DRI2flushExtension support with invalidate hookKristian Høgsberg
Needed to support the SwapBuffers code properly. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
2010-01-04intel: Remove remaining dri2.enabled testsKristian Høgsberg
2010-01-04intel: Remove struct intel_framebufferKristian Høgsberg
With the vsync fields no longer relevant and by refactoring the code to no longer use color_rb[0-1] we can just use struct gl_framebuffer directly.
2010-01-04intel: Remove client-side vblank codeKristian Høgsberg
2010-01-04intel: Drop intelWindowMoved()Kristian Høgsberg
Everything this functions does under DRI2 is also taken care of by intel_draw_buffer(), which is always called where intelWindowMoved() is called.
2010-01-04intel: Drop DRI1 static regionsKristian Høgsberg
2010-01-04intel: Drop LOCK/UNLOCK_HARDWARE()Kristian Høgsberg
2010-01-04Remove leftover __DRI{screen,drawable,context}Private referencesKristian Høgsberg
As part of the DRI driver interface rewrite I merged __DRIscreenPrivate and __DRIscreen, and likewise for __DRIdrawablePrivate and __DRIcontextPrivate. I left typedefs in place though, to avoid renaming all the *Private use internal to the driver. That was probably a mistake, and it turns out a one-line find+sed combo can do the mass rename. Better late than never.
2009-12-28intel: Remove dead fthrottle_mode option. We only do IRQ waits.Eric Anholt
Noticed by clang.
2009-12-22intel: Replace some gen3 IS_* checks with context structure usage.Eric Anholt
Shaves 400 bytes or so from i915_dri.so.
2009-12-22intel: Replace IS_G4X() across the driver with context structure usage.Eric Anholt
Saves ~2KB of code.
2009-12-22intel: Replace IS_IGDNG checks with intel->is_ironlake or needs_ff_sync.Eric Anholt
Saves ~480 bytes of code.
2009-12-21intel: Replace release info in DRIVER_DATE with "DEVELOPMENT"Ian Romanick
2009-12-21Merge branch 'mesa_7_7_branch'Ian Romanick
Conflicts: src/mesa/main/version.h
2009-12-21intel: Bump driver date to reflect status as final Q4 driver RCIan Romanick
2009-11-19intel: Remove non-GEM support.Eric Anholt
This really isn't supported at this point. GEM's been in the kernel for a year, and the fake bufmgr never really worked.
2009-11-19intel: Remove dead intel_context members and move some packing around.Eric Anholt
2009-11-12intel: Remove unused enable_imaging parameter to intelInitExtensionsIan Romanick
2009-11-06Make a convenient int for what chipset generation we're on.Eric Anholt
gen2/3/4 are easier to say than "8xx, 915-945/g33/pineview, 965/g45/misc", and compares on generation are often easier than stringing together a bunch of chipset checks.
2009-10-29intel: Don't bother MI_FLUSHing on glFlush in the DRI2 case.Eric Anholt
We only need it when drawing to the front buffer, which we never do for DRI2. No significant performance difference, but the flush is definitely gone from the end of every batchbuffer.
2009-10-28Merge branch 'texformat-rework'Brian Paul
Conflicts: src/mesa/drivers/dri/radeon/radeon_fbo.c src/mesa/drivers/dri/s3v/s3v_tex.c src/mesa/drivers/dri/s3v/s3v_xmesa.c src/mesa/drivers/dri/trident/trident_context.c src/mesa/main/debug.c src/mesa/main/mipmap.c src/mesa/main/texformat.c src/mesa/main/texgetimage.c
2009-10-22Merge branch 'mesa_7_6_branch'Brian Paul
2009-10-22intel: flush old context before binding new contextBrian Paul
Per the GLX spec, when changing rendering contexts, the old context should first be flushed.
2009-10-22intel: Fallback field is a bitmask, use GLbitfieldBrian Paul
2009-10-08mesa: remove a bunch of gl_renderbuffer fieldsBrian Paul
_ActualFormat is replaced by Format (MESA_FORMAT_x). ColorEncoding, ComponentType, RedBits, GreenBits, BlueBits, etc. are all replaced by MESA_FORMAT_x queries.
2009-10-05Merge branch 'mesa_7_6_branch'Brian Paul
Conflicts: src/gallium/auxiliary/util/u_cpu_detect.c
2009-10-05intel: remove a buffer equality test in _mesa_make_current()Brian Paul
Before, if we called glXMakeCurrent() to change a context's window binding while an FBO was bound, we weren't updating the intel->driDrawable and intel->driReadDrawable fields. This could cause us to dereference a null pointer elsewhere.
2009-09-21Merge branch 'mesa_7_6_branch'Michel Dänzer
2009-09-21Merge branch 'mesa_7_5_branch' into mesa_7_6_branchMichel Dänzer
2009-09-21intel: Fix crash in intel_flush().Michel Dänzer
Since commit 2921a2555d0a76fa649b23c31e3264bbc78b2ff5 ('intel: Deassociated drawables from private context struct in intelUnbindContext'), intel->driDrawable may be NULL in intel_flush().
2009-09-20Revert "mesa: move _mesa_meta_init/free() calls to core Mesa"Brian Paul
This reverts commit 651cffd626a82d9bf539437ca4bdf8ea4b396fab. The commit inadvertantly introduced a new gallium dependency on the meta code.
2009-09-19mesa: move _mesa_meta_init/free() calls to core MesaBrian Paul
2009-09-16Merge branch 'mesa_7_6_branch'Ian Romanick
2009-09-16Merge branch 'mesa_7_5_branch' into mesa_7_6_branchIan Romanick
Conflicts: src/mesa/main/dlist.c
2009-09-16intel: Deassociated drawables from private context struct in intelUnbindContextIan Romanick
The generic DRI infrastructure makes sure that __DRIcontextRec::driDrawablePriv and __DRIcontextRec::driReadablePriv are set to NULL after unbinding a context. However, the intel_context structure keeps cached copies of these pointers. If these cached pointers are not NULLed and the drawable is actually destroyed after unbinding the context (typically by way of glXDestroyWindow), freed memory will be dereferenced in intelDestroyContext. This should fix bug #23418.
2009-09-14intel: remove unneeded driver function assignmentsBrian Paul
These default swrast functions are already installed by _mesa_init_driver_functions().
2009-09-10Merge branch 'mesa_7_5_branch' into mesa_7_6_branchIan Romanick
Conflicts: src/mesa/drivers/dri/intel/intel_context.c