aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/intel/intel_screen.c
Commit message (Collapse)AuthorAgeFilesLines
* Change default of driconf "allow_large_textures" to announce hardware limits.Michel Dänzer2008-04-291-1/+1
| | | | | | The previous default these days served mostly to cause artifical problems with GLX compositing managers like compiz (see e.g. http://bugs.freedesktop.org/show_bug.cgi?id=10501).
* DRI interface changes and DRI2 direct rendering support.Kristian Høgsberg2008-03-311-65/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add DRI2 direct rendering support to libGL and add DRI2 client side protocol code. Extend the GLX 1.3 create drawable functions in glx_pbuffer.c to call into the DRI driver when possible. Introduce __DRIconfig, opaque struct that represents a DRI driver configuration. Get's rid of the open coded __GLcontextModes in the DRI driver interface and the context modes create and destroy functions that the loader was requires to provide. glcore.h is no longer part of the DRI driver interface. The DRI config is GL binding agnostic, that is, not specific to GLX, EGL or other bindings. The core API is now also an extension, and the driver exports a list of extensions as the symbol __driDriverExtensions, which the loader must dlsym() for. The list of extension will always include the DRI core extension, which allows creating and manipulating DRI screens, drawables and contexts. The DRI legacy extension, when available, provides alternative entry points for creating the DRI objects that work with the XF86DRI infrastructure. Change DRI2 client code to not use drm drawables or contexts. We never used drm_drawable_t's and the only use for drm_context_t was as a unique identifier when taking the lock. We now just allocate a unique lock ID out of the DRILock sarea block. Once we get rid of the lock entirely, we can drop this hack. Change the interface between dri_util.c and the drivers, so that the drivers now export the DriverAPI struct as driDriverAPI instead of the InitScreen entry point. This lets us avoid dlsym()'ing for the DRI2 init screen function to see if DRI2 is supported by the driver.
* DRI2: Drop DriverAPI.UpdateBuffer.Kristian Høgsberg2008-03-091-21/+11
| | | | | | | __dri2ParseEvents() would determine the kind of event, but then call UpdateBuffer() in either case, and UpdateBuffer() would then have to figure that out again to dispatch to HandleBufferAttach() or HandleDrawableConfig(). Pretty pointless.
* [intel] Add a driconf option to cache freed buffer objects for reuse.Eric Anholt2008-03-051-1/+10
| | | | | | | | | This is defaulted off as it has potentially large memory costs for a modest performance gain. Ideally we will improve DRM performance to the point where this optimization is not worth the memory cost in any case, or find some middle ground in caching only limited numbers of certain buffers. For now, this provides a modest 4% improvement in openarena on GM965 and 10% in openarena on GM945.
* Use __DRIextension mechanism providing loader functionality to the driver.Kristian Høgsberg2008-02-291-6/+7
| | | | | | | Instead of passing in a fixed struct, the loader now passes in a list of __DRIextension structs, to advertise the functionality it can provide to the driver. Each extension is individually versioned and can be extended or phased out as the interface develops.
* Reduce the versioning madness required to create a DRI2 screen.Kristian Høgsberg2008-02-291-11/+0
| | | | | | | | | | | | | | | | | | Right now the DRI2 screen constructor takes 3 different versions: DRI, DDX and DRM. This is mostly useless, though: DRI: The DRI driver doesn't actually care about the DRI protocol, it only talks to the loader, which in turn speaks DRI protocol. Thus, the DRI protocol version is of not interest to the DRI driver, but it needs to know what functionality the loader provides. At this point that's reflected in the __DRIinterfaceMethods struct and the internal_version integer. DDX: The DDX version number is essentially used to track extensions to the SAREA. With DRI2 the SAREA consists of a number of versioned, self-describing blocks, so the DDX version is no longer interesting. DRM: We have the fd, lets just ask the kernel ourselves.
* intel: Always use intelInitExtensions() for initializing extensions.Kristian Høgsberg2008-02-271-14/+3
|
* Remove GetMSC DriverAPI function.Kristian Høgsberg2008-02-251-1/+0
| | | | | | | | | | | The DriverAPI is internal to the DRI drivers and GetDrawableMSC obsoletes GetMSC. Also, since the DRI driver interface has not yet been released, just drop the getMSC function from the DRI interface instead using the ABI preserving version mechanism. Finally, using void pointer privates in the DRI interface is not allowed, always pass the actual types around (__DRIdrawable in this case) to enhance type safety and readability of the code.
* Remove now unused setTexOffset from __DriverAPIRec.Kristian Høgsberg2008-02-251-3/+0
|
* Use drm_i915_sarea instead of drmI830Sarea and remove i830_common.hAlan Hourihane2008-02-221-12/+12
|
* [915] Revert broken context creation change from IS_915 commit.Eric Anholt2008-02-151-2/+4
| | | | | The IS_945 case was left to fall through to the 830 case, along with the not-recognized-at-all case, making that dead code.
* Add IS_915(), simplify IS_9XX() a bit.Adam Jackson2008-02-151-4/+2
|
* Add TTM buffer object based texture from pixmap implementation.Kristian Høgsberg2008-02-141-0/+6
| | | | Currently only implemented for intel hw.
* Hook up i915 driver to new DRI2 infrastructure.Kristian Høgsberg2008-02-141-0/+187
|
* [965] Fix ARB_occlusion_query from intel_screen.c merge.Eric Anholt2008-02-131-3/+9
| | | | | It wasn't being initialized at screen setup, so we were getting stub entrypoints even though it was exposed as enabled. Fixes arbocclude mesa demo.
* [intel] Clean up references to screen buffer metrics.Kristian Høgsberg2008-01-221-22/+4
| | | | | | The screen wide info such as pitch and cpp are obsoleted by the FBO changes, so clean up the last few references to those, except for setting up the legacy screen regions.
* [intel] Make the no_rast option be standard driconf instead of INTEL_NO_RAST.Eric Anholt2008-01-171-8/+15
|
* [intel] Simplify intelCreateBuffer() a bit.Kristian Høgsberg2008-01-091-45/+6
| | | | | | Drop a bunch of unused arguments from intel_create_renderbuffer() and introduce intel_renderbuffer_set_region() to set the region for a renderbuffer.
* Factor out code to do the DRM_I830_GETPARAM ioctl.Kristian Høgsberg2008-01-091-28/+23
|
* [965] Enable EXT_framebuffer_object.Eric Anholt2007-12-201-24/+24
| | | | | To do so, merge the remainnig necessary code from the buffers, blit, span, and screen code to shared, and replace it with those.
* [i915] Move meta_draw_quad into the vtbl with other meta operations.Eric Anholt2007-12-201-1/+0
|
* [intel] Move bufmgr back to context instead of screen, fixing glthreads.Eric Anholt2007-12-121-142/+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.
* [intel] Add 965 support to shared intel_blit.cEric Anholt2007-11-161-2/+7
| | | | | This requires that regions grow a marker of whether they are tiled or not, because fence (surface) registers are ignored by the 965 2D engine.
* [i915] Pass static region names in so debugging says more than "static region".Eric Anholt2007-11-161-6/+7
|
* [i915] Remove old frontbuffer rotation hack.Eric Anholt2007-11-091-48/+1
| | | | | | This was replaced in previous releases of xserver/dri/libGL by reporting the damage to the frontbuffer so that the server and driver could handle it appropriately.
* [intel] Initialize a depth buffer if the visual has depth 24 but no stencil.Eric Anholt2007-11-091-15/+28
|
* [intel] Move over files that will be shared with 965-fbo work.Eric Anholt2007-11-091-0/+945