Commit Graph

480 Commits

Author SHA1 Message Date
Michel Dänzer db2ec4502e Fix GLX build of xserver master branch.
The internal CreatePixmap API has been extended.
2007-11-05 10:03:26 +01:00
Jesse Barnes 38fdb47d26 Refactor and fix core vblank support
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.
2007-10-29 12:06:00 -07:00
George Sapountzis fe20ac2a6b Add GL_CORE_WINDOWS define to glcore.h
This is for consistency with glproto. The GL_CORE defines should probably be
dropped.

----

Author: Alexander Gottwald <alexander.gottwald@s1999.tu-chemnitz.de>
Date:   Mon Jun 21 13:35:05 2004 +0000

    Bug 782: Merge native OpenGL for Windows from CYGWIN branch
2007-10-14 20:11:00 +03:00
Kristian Høgsberg ccff0cb263 Add a version field to __DRIextension. 2007-10-11 11:30:39 -04:00
Kristian Høgsberg f29f0ae838 Move new texOffset extension to the new extension mechanism. 2007-10-11 11:28:38 -04:00
Kristian Høgsberg ecdb45cb29 Convert a left-over private void * to __DRIcontext *. 2007-10-11 11:27:51 -04:00
Kristian Høgsberg 594006d8b2 Remove now unused getProcAddress from DRIinterfaceMethods. 2007-10-11 11:25:37 -04:00
Kristian Høgsberg f968f67e62 Add a DRI_ReadDrawable marker extension to signal read drawable capability. 2007-10-11 11:22:55 -04:00
Kristian Høgsberg 106a6f29bb Move media stream counter entry points to new extension. 2007-10-11 11:21:29 -04:00
Kristian Høgsberg a7a0a2beb5 Move GLX_MESA_swap_frame_usage DRI entry points to the new mechanism. 2007-10-11 11:11:12 -04:00
Kristian Høgsberg 78a6aa57a0 Move GLX_MESA_allocate_memory related functions to new extension mechanism. 2007-10-11 11:09:57 -04:00
Kristian Høgsberg efaf90b03e Move swap_interval to new extension mechanism. 2007-10-10 19:14:10 -04:00
Kristian Høgsberg ac3e838fa7 Move the copySubBuffer extension over to the new mechanism. 2007-10-10 18:57:57 -04:00
Kristian Høgsberg f616a263a2 Implement new screen extension API.
This new API lets the loader examine DRI level extensions provided by the
driver in a forward compatible manner.

Much of the churn in the DRI interface is adding support for new
extensions or removing old, unused extensions.  This new extension
mechanism lets the loader query the extensions provided by the driver
and implement the extensions it knows about.  Deprecating extensions
is done by not exporting that extension in the list, which doesn't
require keeping old function pointers around to preserve ABI.
2007-10-10 18:47:22 -04:00
Kristian Høgsberg 295dc2d225 Stop passing in unused fbconfigs to createNewScreen. 2007-10-10 18:46:51 -04:00
Kristian Høgsberg 5987a03f99 Convert all DRI entrypoints to take pointers to __DRI* types.
The entrypoints take a mix of __DRIscreen * and void * (screen private)
arguments (similarly for contexts and drawables).  This patch does away
with passing the private void pointer and always only passes the fully
typed __DRIscreen pointer and always as the first argument.

This makes the interface more consistent and increases type safety, and
catches a bug where we would pass a screen private to DRIdrawable::getSBC.
2007-10-10 18:00:18 -04:00
Kristian Høgsberg aac367f48a Remove screenConfigs from __DRIscreen.
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.
2007-10-10 18:00:13 -04:00
Kristian Høgsberg fa72013ada Drop mostly unused __DRIid typedef. 2007-10-10 17:09:48 -04:00
Kristian Høgsberg 8ed5c7ca05 Drop createContext and destroyContext from DRIinterfaceMethods.
As for createDrawable and destroyDrawable, these functions immediately
upon entry to driCreateNewContext and immediately before exit from
driDestroyContext.  Instead of passing function pointers back and forth
just obtain the drm_context_t prior to calling DRIscreen::createNewContext
and pass it as a parameter.

This change also lets us keep the DRI context XID in the libGL loader only.
2007-10-10 17:09:16 -04:00
Kristian Høgsberg 4ff95e78e1 Drop createDrawable and destroyDrawable fron DRIinterfaceMethods.
All the DRI driver did was call the createDrawable callback immediately
upon entry to DRIscreen::createNewDrawable to get the drm_drawable_t.
We can just call that before calling into the DRI driver and pass the
returned drm_drawable_t as an argument to the DRI entry point.

Likewise for destroyDrawable.

Also, DRIdrawablePrivate::draw isn't used anywhere, and since the
driver no longer needs the XID of the drawable we can now drop that.
2007-10-10 17:07:26 -04:00
Kristian Høgsberg aceccda56b Drop __DRInativeDisplay and pass in __DRIscreen pointers instead.
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.
2007-10-10 15:32:15 -04:00
Kristian Høgsberg b42152061c Add macros to generate CreateNewScreen entrypoint. 2007-10-05 00:12:30 -04:00
Kristian Høgsberg 4a22ae8d44 Remove XIDs from DRI interface (see #5714). 2007-10-05 00:09:32 -04:00
Brian ae0dd620fe Add glut_fcb.c to the build and update to fix warnings (see bug 12405) 2007-09-12 13:40:15 -06:00
Adam Jackson 1f8616e622 Unbreak Linux builds with -fvisibility=hidden. 2007-08-23 18:38:02 -04:00
Zhang 35f35294cd more Mingw32 fixes 2007-07-27 11:19:35 -06:00
Zhang 76fb808910 Fix a number of MINGW32 issues 2007-07-21 11:28:06 -06:00
Brian 66d0784f13 regenerated 2007-06-29 07:53:11 -06:00
zhang 37aca21129 a variety of fixes for MingW 2007-06-28 08:12:52 -06:00
Dave Airlie 9f39692e21 add glxtokens.h to xmesa_xf86.h as discussed on mailing list 2007-05-26 15:58:56 +10:00
Michel Dänzer 043d219b6d Add interfaces for overriding texture images with driver specific 'offsets'.
To be used by AIGLX for GLX_EXT_texture_from_pixmap without several
additional data copies.
2007-05-22 14:08:10 +02:00
Michel Dänzer 24d965fab5 Fix xserver build after recent XMesa changes.
Only build tested.
2007-05-22 13:56:30 +02:00
Brian 74519c4231 Disable (at least for now) PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC typedef.
If an app (like progs/samples/blendxor.c) includes both gl.h and glext.h
this typedef will get hit in both headers, causing an error.
Possibly work around by bringing GL_NV_geometry_program4 items into gl.h.
2007-05-19 08:56:15 -06:00
Brian 7ace7cfba4 added texture_from_pixmap functions 2007-05-19 08:30:31 -06:00
Ian Romanick 78bd2912f8 Add enums and functions for GL_{MESA,EXT}_texture_array. 2007-05-16 14:45:52 -07:00
Matthias Hopf 7868ab6617 add missing semicolon 2007-04-24 07:48:35 -06:00
Brian d59e6f233b import glxext.h version 19 2007-04-22 15:32:10 -06:00
Brian 967c1056d5 patch for Digital/Tru64 (bug 10635) - forwarded to OpenGL ARB as well 2007-04-13 09:55:35 -06:00
George Sapountzis 9f8373d5ca xmesa: drop unused XMesaPutImageHelper.
It could only be called from XMesaCopySubBuffer but this function is not used
by XFree86.

It seems that XMesaPutImageHelper would handle sub-images but never got
finished. Proper sub-image helpers should be written if need be.
2007-04-13 18:13:08 +03:00
George Sapountzis 50aaabc248 xmesa: export xmesa functions used by xfree86.
This uses xmesa.h as the GLcore interface and avoids adding an explicit GLcore
inteface which would not be a proper interface anyway.

It puts the declarations of the three functions specific for XMesa/XFree86 in
xmesa.h, we can push them down to xmesa_xf86.h if hiding behind XFree86Server
ifdef's is not enough.
2007-04-13 18:12:37 +03:00
George Sapountzis 487f7a73cb Remove SI imports/exports remnants. 2007-04-05 19:01:51 +03:00
George Sapountzis 7439a36785 Clean and update XMesa/XFree86 interface.
Drop XMesaSetVisualDisplay(), XMesaReset(), no longer used.

Add XMesaCopyContext() and move the GlxSetRenderTables() call for XGL within
XMesaForceCurrent(). This is to make xserver/GL/mesa/X/xf86glx.c unaware of
Mesa internals.

Also, clean some ifdef's to make it clear that USE_XSHM and XFree86Server are
mutually exclusive.

Lastly,
- move gcstruct.h from glxheader.h up to xmesa_xf86.h since it calls *gc->ops
- drop GL/glxtokens.h from xm_api|dd.c, GLX tokens come from glcore.h and are
  used irrelevant of XFree86.
2007-03-30 19:19:00 +03:00
Brian 344c3f7379 updated version with new Khronos license/copyright 2007-02-26 09:19:32 -07:00
Brian 45b1f169b4 updated to version 18 2007-02-20 08:40:55 -07:00
Brian c226e44437 updated to version 39 2007-02-20 08:38:29 -07:00
George Sapountzis c9b33ecd7c Drop old (pre-AIGLX) GLcore interface.
The old GLcore interface was replaced in Xorg 7.1 with the addition of AIGLX,
it is only used by DDX's which are known not to work with the new DIX glx code.

---

Bug 9285: misc glcore, xmesa cleanups

ACKed by Ian Romanick.
2007-01-26 18:31:00 +02:00
Eric Anholt c2b185cff8 Add reporting of damage by DRI drivers when the extension support is available.
With this, tools like ximagesrc in gstreamer correctly see updates from GL
rendering.  Support requires that the Xdamage library be current (but will be
disabled if not present) plus a new X Server with support for the new
XDamagePost request.  libGL now has a new interface version, and also links
against libXdamage and libXfixes to support it, but backwards compatibility
is retained.

Currently, all drivers report damage at SwapBuffers time through common code --
front buffer rendering doesn't result in damage being reported.  Also, the
damage is against the root window, as our drivers don't yet render to backing
store when they should (composited environments).
2007-01-05 18:23:57 -08:00
Brian Paul 744c3a367b get rid of meaningless XFree86LOADER test (bug 9144) 2006-11-27 16:50:10 +00:00
Brian Paul f7436f4c8a regenerate from gl.h 2006-11-16 16:13:55 +00:00
Brian Paul bb69d3af36 remove obsolete GL_MESA_trace stuff 2006-11-16 16:13:43 +00:00