aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/intel_screen.c
Commit message (Collapse)AuthorAgeFilesLines
* [965] Enable EXT_framebuffer_object.Eric Anholt2007-12-201-693/+1
| | | | | To do so, merge the remainnig necessary code from the buffers, blit, span, and screen code to shared, and replace it with those.
* [intel] Move bufmgr back to context instead of screen, fixing glthreads.Eric Anholt2007-12-121-136/+0
| | | | | | | | Putting the bufmgr in the screen is not thread-safe since the emit_reloc changes. It also led to a significant performance hit from pthread usage for the attempted thread-safety (up to 12% of a cpu spent on refcounting protection in single-threaded 965). The motivation had been to allow multi-context bufmgr sharing in classic mode, but it wasn't worth the cost.
* [965] Convert the driver to dri_bufmgr interface and enable TTM.Eric Anholt2007-12-071-1/+149
| | | | | | | | | | | | | This is currently believed to work but be a significant performance loss. Performance recovery should be soon to follow. The dri_bo_fake_disable_backing_store() call was added to allow backing store disable like bufmgr_fake.c did, which is a significant performance win (though it's missing the no-fence-subdata part). This commit is a squash merge of the 965-ttm branch, which had some history I wanted to avoid pulling due to noisiness and brokenness at many points for git-bisecting.
* Refactor and fix core vblank supportJesse Barnes2007-10-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Consolidate support for synchronizing to and retrieving vblank counters. Also fix the core vblank code to return monotonic MSC counters, which are required by some GLX extensions. Adding support for multiple pipes to a low level driver is fairly easy, the Intel 965 driver provides simple example code (see intel_buffers.c:intelWindowMoved()). The new code bumps the media stream counter extension version to 2 and adds a new getDrawableMSC callback. This callback takes a drawablePrivate pointer, which is used to calculate the MSC value seen by clients based on the actual vblank counter(s) returned from the kernel. The new drawable private fields are as follows: - vblSeq - used for tracking vblank counts for buffer swapping - vblFlags - flags (e.g. current pipe), updated by low level driver - msc_base - MSC counter from the last time the current pipe changed - vblank_base - kernel DRM vblank counter from the last time the pipe changed Using the above variables, the core vblank code (in vblank.c) can calculate a monotonic MSC value. The low level DRI drivers are responsible for updating the current pipe (by setting VBLANK_FLAG_SECONDARY for example in vblFlags) along with msc_base and vblank_base whenever the pipe associated with a given drawable changes (again, see intelWindowMoved for an example of this). Drivers should fill in the GetDrawableMSC DriverAPIRec field to point to driDrawableGetMSC32 and add code for pipe switching as outlined above to fully support the new scheme.
* Add a DRI_ReadDrawable marker extension to signal read drawable capability.Kristian Høgsberg2007-10-111-5/+1
|
* Move media stream counter entry points to new extension.Kristian Høgsberg2007-10-111-3/+2
|
* Move GLX_MESA_swap_frame_usage DRI entry points to the new mechanism.Kristian Høgsberg2007-10-111-1/+1
|
* Move swap_interval to new extension mechanism.Kristian Høgsberg2007-10-101-2/+1
|
* Move the copySubBuffer extension over to the new mechanism.Kristian Høgsberg2007-10-101-1/+6
|
* Pull createNewScreen entry point into dri_util.c.Kristian Høgsberg2007-10-101-48/+29
| | | | | | | | This pulls the top level createNewScreen entry point out of the drivers and rewrites __driUtilCreateNewScreen in dri_util.c to be the new entry point. The change moves more logic into the common/ layer and changes the createNewScreen entry point to only be defined in one place.
* Replace open-coded major, minor, and patch version fields with __DRIversionRec.Kristian Høgsberg2007-10-101-1/+1
|
* Remove screenConfigs from __DRIscreen.Kristian Høgsberg2007-10-101-7/+6
| | | | | | | | | | | | The screenConfigs field of __DRIscreen points back to the containing __GLXscreenConfigs struct. This is a serious abstraction violation; it assumes that the loader is libGL and that there *is* a __GLXscreenConfigs type in the loader. Using the containerOf macro, we can get from the __DRIscreen pointer to the containing __GLXscreenConfigs struct, at a place in the stack where the above is a valid assumption. Besides, the __DRI* structs shouldn't hold state other than the private pointer.
* Drop __DRInativeDisplay and pass in __DRIscreen pointers instead.Kristian Høgsberg2007-10-101-11/+11
| | | | | | | | | | | | | Many DRI entry points took a __DRInativeDisplay pointer and a screen index as arguments. The only use for the native display pointer was to pass it back to the loader when looking up the __DRIscreen for the given screen index. Instead, let's just pass in the __DRIscreen pointer directly, which let's drop the __DRInativeDisplay type and the getScreen function. The assumption is now that the loader will be able to retrieve context from the __DRIscreen pointer when necessary.
* Revert "WIP 965 conversion to dri_bufmgr."Eric Anholt2007-09-271-52/+7
| | | | | | | This reverts commit b2f1aa2389473ed09170713301b042661d70a48e. Somehow I ended up with my branch's save-this-while-I-work-on-master commit actually on master.
* WIP 965 conversion to dri_bufmgr.Eric Anholt2007-09-271-7/+52
|
* Fix/improve framebuffer object reference counting.Brian2007-03-061-2/+1
| | | | | | | Use _mesa_reference_framebuffer() and _mesa_unreference_framebuffer() functions to be sure reference counting is done correctly. Additional assertions are done too. Note _mesa_dereference_framebuffer() renamed to "unreference" as that's more accurate.
* fix for bug#10182Xiang, Haihao2007-03-061-1/+2
| | | | | call _mesa_dereference_framebuffer instead of _mesa_dereference_framebuffer in i810, i915, i915tex, i965 drivers.
* 965 ARB_Occlusion_query fixZou Nan hai2007-01-241-4/+2
|
* Use the tiled flag in the sarea to determine region tiling.Haihao Xiang2006-12-301-1/+5
| | | | | | This fixes mis-rendering if back/depth fail to get set up as tiled. While it probably won't ever be the case now that the pitch limits are loosened, this is still the right thing to do.
* Emit cliprects in the userspace driver as required, rather thanKeith Whitwell2006-10-231-1/+1
| | | | | | | | passing them to the kernel. This works because all drawing commands in the 965 driver are emitted with the lock held and the batchbuffer is always flushed prior to releasing the lock. This allows multiple cliprects to be dealt with, without replaying entire batchbuffers and redundantly re-emitting state.
* Fix printf warning.Keith Whitwell2006-10-131-1/+1
|
* Quieten debug message.Keith Whitwell2006-10-051-1/+1
|
* When using the old technique to set up the front buffer mapping, thereKeith Whitwell2006-08-311-1/+1
| | | | | is no need to add front.offset to sPriv->pFB, it seems. Fixes several glean issues and frontbuffer rendering generally.
* Add Intel i965G/Q DRI driver.Eric Anholt2006-08-091-0/+699
This driver comes from Tungsten Graphics, with a few further modifications by Intel.