mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 19:30:11 +01:00
Remove DirectFBGL header from Mesa bacause since 1.0.0 DirectFB installs its own header.
Updated to the current DirectFBGL interface (i.e. added GetProcAddress()).
This commit is contained in:
parent
682393944c
commit
73fdecca9f
7 changed files with 65 additions and 33 deletions
|
|
@ -6,7 +6,7 @@ Requirements
|
|||
============
|
||||
|
||||
To build Mesa with DirectFB (DirectFBGL) support you need:
|
||||
- DirectFB at least 0.9.21 (http://directfb.org)
|
||||
- DirectFB at least 1.0.0 (http://directfb.org)
|
||||
- pkg-config at least 0.9 (http://pkgconfig.sf.net)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@
|
|||
#include <math.h>
|
||||
|
||||
#include <directfb.h>
|
||||
#include <directfbgl.h>
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <GL/directfbgl.h>
|
||||
|
||||
|
||||
/* the super interface */
|
||||
|
|
|
|||
|
|
@ -159,9 +159,9 @@ So the angle is:
|
|||
#include <unistd.h>
|
||||
|
||||
#include <directfb.h>
|
||||
#include <directfbgl.h>
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <GL/directfbgl.h>
|
||||
|
||||
|
||||
/* the super interface */
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@
|
|||
#include <math.h>
|
||||
|
||||
#include <directfb.h>
|
||||
#include <directfbgl.h>
|
||||
|
||||
#include <GL/glu.h>
|
||||
#include <GL/directfbgl.h>
|
||||
|
||||
#include "util/showbuffer.c"
|
||||
#include "util/readtex.c"
|
||||
|
|
|
|||
|
|
@ -156,6 +156,13 @@ glutGetProcAddress( const char *name )
|
|||
return glut_functions[i].address;
|
||||
}
|
||||
|
||||
#if DIRECTFBGL_INTERFACE_VERSION >= 1
|
||||
if (g_current) {
|
||||
void *address = NULL;
|
||||
g_current->gl->GetProcAddress( g_current->gl, name, &address );
|
||||
return address;
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,8 +26,9 @@
|
|||
#include <directfb.h>
|
||||
#include <directfb_version.h>
|
||||
|
||||
#include <directfbgl.h>
|
||||
|
||||
#include "GL/glut.h"
|
||||
#include "GL/directfbgl.h"
|
||||
|
||||
|
||||
#define VERSION_CODE( M, m, r ) (((M) << 16) | ((m) << 8) | ((r)))
|
||||
|
|
|
|||
|
|
@ -25,24 +25,16 @@
|
|||
|
||||
#include <pthread.h>
|
||||
|
||||
#include <direct/messages.h>
|
||||
#include <direct/interface.h>
|
||||
#include <direct/mem.h>
|
||||
|
||||
#include <directfb.h>
|
||||
#include <directfb_version.h>
|
||||
|
||||
#define VERSION_CODE( M, m, r ) (((M) * 1000) + ((m) * 100) + ((r)))
|
||||
#define DIRECTFB_VERSION_CODE VERSION_CODE( DIRECTFB_MAJOR_VERSION, \
|
||||
DIRECTFB_MINOR_VERSION, \
|
||||
DIRECTFB_MICRO_VERSION )
|
||||
#include <directfbgl.h>
|
||||
|
||||
#include <direct/mem.h>
|
||||
#include <direct/messages.h>
|
||||
#include <direct/interface.h>
|
||||
|
||||
#ifdef CLAMP
|
||||
# undef CLAMP
|
||||
#endif
|
||||
|
||||
#include "GL/directfbgl.h"
|
||||
#undef CLAMP
|
||||
#include "glheader.h"
|
||||
#include "buffers.h"
|
||||
#include "context.h"
|
||||
|
|
@ -62,6 +54,12 @@
|
|||
#include "drivers/common/driverfuncs.h"
|
||||
|
||||
|
||||
#define VERSION_CODE( M, m, r ) (((M) * 1000) + ((m) * 100) + ((r)))
|
||||
#define DIRECTFB_VERSION_CODE VERSION_CODE( DIRECTFB_MAJOR_VERSION, \
|
||||
DIRECTFB_MINOR_VERSION, \
|
||||
DIRECTFB_MICRO_VERSION )
|
||||
|
||||
|
||||
static DFBResult
|
||||
Probe( void *data );
|
||||
|
||||
|
|
@ -79,7 +77,7 @@ DIRECT_INTERFACE_IMPLEMENTATION( IDirectFBGL, Mesa )
|
|||
typedef struct {
|
||||
int ref; /* reference counter */
|
||||
|
||||
DFBBoolean locked;
|
||||
int locked;
|
||||
|
||||
IDirectFBSurface *surface;
|
||||
DFBSurfacePixelFormat format;
|
||||
|
|
@ -189,8 +187,10 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
|
|||
|
||||
DIRECT_INTERFACE_GET_DATA( IDirectFBGL );
|
||||
|
||||
if (data->locked)
|
||||
return DFB_LOCKED;
|
||||
if (data->locked) {
|
||||
data->locked++;
|
||||
return DFB_OK;
|
||||
}
|
||||
|
||||
if (directfbgl_lock())
|
||||
return DFB_LOCKED;
|
||||
|
|
@ -202,6 +202,7 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
|
|||
(void*)&data->video.start, &data->video.pitch );
|
||||
if (ret) {
|
||||
D_ERROR( "DirectFBGL/Mesa: couldn't lock surface.\n" );
|
||||
directfbgl_unlock();
|
||||
return ret;
|
||||
}
|
||||
data->video.end = data->video.start + (height-1) * data->video.pitch;
|
||||
|
|
@ -218,7 +219,7 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
|
|||
&data->framebuffer, width, height);
|
||||
}
|
||||
|
||||
data->locked = DFB_TRUE;
|
||||
data->locked++;
|
||||
|
||||
return DFB_OK;
|
||||
}
|
||||
|
|
@ -230,14 +231,14 @@ IDirectFBGL_Mesa_Unlock( IDirectFBGL *thiz )
|
|||
|
||||
if (!data->locked)
|
||||
return DFB_OK;
|
||||
|
||||
_mesa_make_current( NULL, NULL, NULL );
|
||||
|
||||
if (--data->locked == 0) {
|
||||
_mesa_make_current( NULL, NULL, NULL );
|
||||
|
||||
data->surface->Unlock( data->surface );
|
||||
data->surface->Unlock( data->surface );
|
||||
|
||||
directfbgl_unlock();
|
||||
|
||||
data->locked = DFB_FALSE;
|
||||
directfbgl_unlock();
|
||||
}
|
||||
|
||||
return DFB_OK;
|
||||
}
|
||||
|
|
@ -276,6 +277,26 @@ IDirectFBGL_Mesa_GetAttributes( IDirectFBGL *thiz,
|
|||
return DFB_OK;
|
||||
}
|
||||
|
||||
#if DIRECTFBGL_INTERFACE_VERSION >= 1
|
||||
static DFBResult
|
||||
IDirectFBGL_Mesa_GetProcAddress( IDirectFBGL *thiz,
|
||||
const char *name,
|
||||
void **ret_address )
|
||||
{
|
||||
DIRECT_INTERFACE_GET_DATA( IDirectFBGL );
|
||||
|
||||
if (!name)
|
||||
return DFB_INVARG;
|
||||
|
||||
if (!ret_address)
|
||||
return DFB_INVARG;
|
||||
|
||||
*ret_address = _glapi_get_proc_address( name );
|
||||
|
||||
return (*ret_address) ? DFB_OK : DFB_UNSUPPORTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* exported symbols */
|
||||
|
||||
|
|
@ -326,11 +347,14 @@ Construct( IDirectFBGL *thiz, IDirectFBSurface *surface )
|
|||
}
|
||||
|
||||
/* Assign interface pointers. */
|
||||
thiz->AddRef = IDirectFBGL_Mesa_AddRef;
|
||||
thiz->Release = IDirectFBGL_Mesa_Release;
|
||||
thiz->Lock = IDirectFBGL_Mesa_Lock;
|
||||
thiz->Unlock = IDirectFBGL_Mesa_Unlock;
|
||||
thiz->GetAttributes = IDirectFBGL_Mesa_GetAttributes;
|
||||
thiz->AddRef = IDirectFBGL_Mesa_AddRef;
|
||||
thiz->Release = IDirectFBGL_Mesa_Release;
|
||||
thiz->Lock = IDirectFBGL_Mesa_Lock;
|
||||
thiz->Unlock = IDirectFBGL_Mesa_Unlock;
|
||||
thiz->GetAttributes = IDirectFBGL_Mesa_GetAttributes;
|
||||
#if DIRECTFBGL_INTERFACE_VERSION >= 1
|
||||
thiz->GetProcAddress = IDirectFBGL_Mesa_GetProcAddress;
|
||||
#endif
|
||||
|
||||
return DFB_OK;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue