Xephyr: Make glxinfo work on the ATI R200 free driver.

* hw/kdrive/ephyr/ephyr.c:
	  (EphyrDuplicateVisual): when duplicating the
	  visual, copy the color component masks and the class
	  from the hostX
	  (EphyrMirrorHostVisuals): don't mix blue and green mask.
	* hw/kdrive/ephyr/ephyrdri.c: add more logs.
	  (ephyrDRICreateDrawable): actually implement this.
	  for the moment it creates a DRI drawable for the hostX window,
	  no matter what drawable this call was issued for.
	  (ephyrDRIGetDrawableInfo): actually implemented this.
	  for the moment the drawable info queried for its attrs is the
	  Xephyr main main window.
	* hw/kdrive/ephyr/ephyrdriext.c:
	  (ProcXF86DRIGetDrawableInfo): properly hook this dispatch
	  function to the ephyrDRIGetDrawableInfo() function.
	* hw/kdrive/ephyr/ephyrglxext.c: add a bunch of GLX implementation hooks
	  here. Hijack some of the xserver GLX hooks with them. Still need to
	  properly support byteswapped clients though.
	* hw/kdrive/ephyr/ephyrhostglx.c,h: actually implemented the protocol
	  level forwarding functions used by the GLX entr points in
	  ephyrglxext.c. Here as well, there are a bunch of them, but we are
	  far from having implemented all the GLX calls.
	* hw/kdrive/ephyr/hostx.c,h:
	  (hostx_get_window_attributes): added this new entry point
	  (hostx_allocate_resource_id_peer): added this to keep track of
	   resource IDs peers: one member of the peer is in Xephyr, the other
	   is in host X.
	  (hostx_get_resource_id_peer): ditto.
This commit is contained in:
Dodji Seketeli 2007-08-30 23:54:49 +02:00 • committed by Dodji Seketeli
commit 4dd4be99df
9 changed files with 801 additions and 40 deletions

View file

@ -28,9 +28,16 @@
#ifndef __EPHYRHOSTGLX_H__
#define __EPHYRHOSTGLX_H__
enum EphyrHostGLXGetStringOps {
EPHYR_HOST_GLX_UNDEF,
EPHYR_HOST_GLX_QueryServerString,
EPHYR_HOST_GLX_GetString,
};
Bool ephyrHostGLXQueryVersion (int *a_maj, int *a_min) ;
Bool ephyrHostGLXGetStringFromServer (int a_screen_number,
int a_string_name,
enum EphyrHostGLXGetStringOps a_op,
char **a_string) ;
Bool ephyrHostGLXGetVisualConfigs (int a_screen,
int32_t *a_num_visuals,
@ -46,6 +53,24 @@ ephyrHostGLXVendorPrivGetFBConfigsSGIX (int a_screen,
Bool ephyrHostGLXGetMajorOpcode (int32_t *a_opcode) ;
Bool ephyrHostGLXSendClientInfo (int32_t a_major, int32_t a_minor,
const char* a_extension_list) ;
Bool ephyrHostGLXCreateContext (int a_screen,
int a_visual_id,
int a_context_id,
int a_shared_list_ctx_id,
Bool a_direct) ;
Bool ephyrHostDestroyContext (int a_ctxt_id) ;
Bool ephyrHostGLXMakeCurrent (int a_drawable, int a_glx_ctxt_id,
int a_olg_ctxt_tag, int *a_ctxt_tag) ;
Bool ephyrHostGetIntegerValue (int a_current_context_tag,
int a_int,
int *a_val) ;
Bool ephyrHostIsContextDirect (int a_ctxt_id,
int *a_is_direct) ;
#endif /*__EPHYRHOSTGLX_H__*/