mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 18:58:10 +02:00
mesa/drm/ttm: allow build against non-TTM aware libdrm
I'll release a libdrm 2.3.1 without TTM apis included from a special drm branch that should allow mesa 7.1 to build against it. I've had to turn off DRI2 stuff.
This commit is contained in:
parent
f688827ebd
commit
0b734bd7cf
7 changed files with 102 additions and 1 deletions
18
configure.ac
18
configure.ac
|
|
@ -478,6 +478,19 @@ AC_ARG_ENABLE([driglx-direct],
|
|||
[enable direct rendering in GLX for DRI @<:@default=enabled@:>@])],
|
||||
[driglx_direct="$enableval"],
|
||||
[driglx_direct="yes"])
|
||||
dnl ttm support
|
||||
AC_ARG_ENABLE([ttm-api],
|
||||
[AS_HELP_STRING([--enable-ttm-api],
|
||||
[enable TTM API users])],
|
||||
[ttmapi="$enableval"],
|
||||
[ttmapi="no"])
|
||||
|
||||
if test "x$ttmapi" = "xyes"; then
|
||||
save_CFLAGS=$CFLAGS
|
||||
CFLAGS=$LIBDRM_CFLAGS
|
||||
AC_CHECK_HEADERS([xf86mm.h],[],[AC_MSG_ERROR([xf86mm.h required for TTM.])],[#include "stdint.h"\n#include "drm.h"])
|
||||
CFLAGS=$save_CFLAGS
|
||||
fi
|
||||
|
||||
dnl Which drivers to build - default is chosen by platform
|
||||
AC_ARG_WITH([dri-drivers],
|
||||
|
|
@ -516,6 +529,10 @@ if test "$mesa_driver" = dri; then
|
|||
DEFINES="$DEFINES -DGLX_USE_TLS -DPTHREADS"
|
||||
fi
|
||||
|
||||
if test "x$ttmapi" = xyes; then
|
||||
DEFINES="$DEFINES -DTTM_API"
|
||||
fi
|
||||
|
||||
if test "x$USING_EGL" = x1; then
|
||||
PROGRAM_DIRS="egl"
|
||||
fi
|
||||
|
|
@ -934,6 +951,7 @@ if test "$mesa_driver" = dri; then
|
|||
dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'`
|
||||
echo " DRI drivers: $dri_dirs"
|
||||
echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR"
|
||||
echo " TTM API support: $ttmapi"
|
||||
fi
|
||||
|
||||
dnl Libraries
|
||||
|
|
|
|||
|
|
@ -219,4 +219,42 @@ void dri_post_process_relocs(dri_bo *batch_buf);
|
|||
void dri_post_submit(dri_bo *batch_buf, dri_fence **last_fence);
|
||||
int dri_bufmgr_check_aperture_space(dri_bo *bo);
|
||||
|
||||
#ifndef TTM_API
|
||||
/* reuse some TTM API */
|
||||
|
||||
#define DRM_BO_MEM_LOCAL 0
|
||||
#define DRM_BO_MEM_TT 1
|
||||
#define DRM_BO_MEM_VRAM 2
|
||||
#define DRM_BO_MEM_PRIV0 3
|
||||
#define DRM_BO_MEM_PRIV1 4
|
||||
#define DRM_BO_MEM_PRIV2 5
|
||||
#define DRM_BO_MEM_PRIV3 6
|
||||
#define DRM_BO_MEM_PRIV4 7
|
||||
|
||||
#define DRM_BO_FLAG_READ (1ULL << 0)
|
||||
#define DRM_BO_FLAG_WRITE (1ULL << 1)
|
||||
#define DRM_BO_FLAG_EXE (1ULL << 2)
|
||||
#define DRM_BO_MASK_ACCESS (DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | DRM_BO_FLAG_EXE)
|
||||
#define DRM_BO_FLAG_NO_EVICT (1ULL << 4)
|
||||
|
||||
#define DRM_BO_FLAG_MAPPABLE (1ULL << 5)
|
||||
#define DRM_BO_FLAG_SHAREABLE (1ULL << 6)
|
||||
|
||||
#define DRM_BO_FLAG_CACHED (1ULL << 7)
|
||||
|
||||
#define DRM_BO_FLAG_NO_MOVE (1ULL << 8)
|
||||
#define DRM_BO_FLAG_CACHED_MAPPED (1ULL << 19)
|
||||
#define DRM_BO_FLAG_FORCE_CACHING (1ULL << 13)
|
||||
#define DRM_BO_FLAG_FORCE_MAPPABLE (1ULL << 14)
|
||||
#define DRM_BO_FLAG_TILE (1ULL << 15)
|
||||
|
||||
#define DRM_BO_FLAG_MEM_LOCAL (1ULL << 24)
|
||||
#define DRM_BO_FLAG_MEM_TT (1ULL << 25)
|
||||
#define DRM_BO_FLAG_MEM_VRAM (1ULL << 26)
|
||||
|
||||
#define DRM_BO_MASK_MEM 0x00000000FF000000ULL
|
||||
|
||||
#define DRM_FENCE_TYPE_EXE 0x00000001
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -771,8 +771,10 @@ static void driDestroyScreen(__DRIscreen *psp)
|
|||
(*psp->DriverAPI.DestroyScreen)(psp);
|
||||
|
||||
if (psp->dri2.enabled) {
|
||||
#ifdef TTM_API
|
||||
drmBOUnmap(psp->fd, &psp->dri2.sareaBO);
|
||||
drmBOUnreference(psp->fd, &psp->dri2.sareaBO);
|
||||
#endif
|
||||
} else {
|
||||
(void)drmUnmap((drmAddress)psp->pSAREA, SAREA_MAX);
|
||||
(void)drmUnmap((drmAddress)psp->pFB, psp->fbSize);
|
||||
|
|
@ -904,6 +906,7 @@ dri2CreateNewScreen(int scrn, int fd, unsigned int sarea_handle,
|
|||
const __DRIextension **extensions,
|
||||
const __DRIconfig ***driver_configs, void *data)
|
||||
{
|
||||
#ifdef TTM_API
|
||||
static const __DRIextension *emptyExtensionList[] = { NULL };
|
||||
__DRIscreen *psp;
|
||||
unsigned int *p;
|
||||
|
|
@ -971,6 +974,9 @@ dri2CreateNewScreen(int scrn, int fd, unsigned int sarea_handle,
|
|||
psp->DriverAPI = driDriverAPI;
|
||||
|
||||
return psp;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static const __DRIextension **driGetExtensions(__DRIscreen *psp)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
#include <drm.h>
|
||||
#include <drm_sarea.h>
|
||||
#include <xf86drm.h>
|
||||
#include <xf86mm.h>
|
||||
#include "GL/internal/glcore.h"
|
||||
#include "GL/internal/dri_interface.h"
|
||||
#include "GL/internal/dri_sarea.h"
|
||||
|
|
@ -524,7 +523,9 @@ struct __DRIscreenRec {
|
|||
/* Flag to indicate that this is a DRI2 screen. Many of the above
|
||||
* fields will not be valid or initializaed in that case. */
|
||||
int enabled;
|
||||
#ifdef TTM_API
|
||||
drmBO sareaBO;
|
||||
#endif
|
||||
void *sarea;
|
||||
__DRIEventBuffer *buffer;
|
||||
__DRILock *lock;
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
#include "i915_drm.h"
|
||||
|
||||
#include "intel_bufmgr_ttm.h"
|
||||
#ifdef TTM_API
|
||||
|
||||
#define DBG(...) do { \
|
||||
if (bufmgr_ttm->bufmgr.debug) \
|
||||
|
|
@ -1099,4 +1100,23 @@ intel_bufmgr_ttm_init(int fd, unsigned int fence_type,
|
|||
|
||||
return &bufmgr_ttm->bufmgr;
|
||||
}
|
||||
#else
|
||||
dri_bufmgr *
|
||||
intel_bufmgr_ttm_init(int fd, unsigned int fence_type,
|
||||
unsigned int fence_type_flush, int batch_size)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
dri_bo *
|
||||
intel_ttm_bo_create_from_handle(dri_bufmgr *bufmgr, const char *name,
|
||||
unsigned int handle)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void
|
||||
intel_ttm_enable_bo_reuse(dri_bufmgr *bufmgr)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -7,8 +7,10 @@
|
|||
extern dri_bo *intel_ttm_bo_create_from_handle(dri_bufmgr *bufmgr, const char *name,
|
||||
unsigned int handle);
|
||||
|
||||
#ifdef TTM_API
|
||||
dri_fence *intel_ttm_fence_create_from_arg(dri_bufmgr *bufmgr, const char *name,
|
||||
drm_fence_arg_t *arg);
|
||||
#endif
|
||||
|
||||
|
||||
dri_bufmgr *intel_bufmgr_ttm_init(int fd, unsigned int fence_type,
|
||||
|
|
@ -17,4 +19,10 @@ dri_bufmgr *intel_bufmgr_ttm_init(int fd, unsigned int fence_type,
|
|||
void
|
||||
intel_ttm_enable_bo_reuse(dri_bufmgr *bufmgr);
|
||||
|
||||
#ifndef TTM_API
|
||||
#define DRM_I915_FENCE_CLASS_ACCEL 0
|
||||
#define DRM_I915_FENCE_TYPE_RW 2
|
||||
#define DRM_I915_FENCE_FLAG_FLUSHED 0x01000000
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ intel_batch_ioctl(struct intel_context *intel,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef TTM_API
|
||||
void
|
||||
intel_exec_ioctl(struct intel_context *intel,
|
||||
GLuint used,
|
||||
|
|
@ -211,3 +212,12 @@ intel_exec_ioctl(struct intel_context *intel,
|
|||
}
|
||||
*fence = fo;
|
||||
}
|
||||
#else
|
||||
void
|
||||
intel_exec_ioctl(struct intel_context *intel,
|
||||
GLuint used,
|
||||
GLboolean ignore_cliprects, GLboolean allow_unlock,
|
||||
void *start, GLuint count, dri_fence **fence)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue