/* DRI2 Entry point */
typedef void *(__DRI2_CREATE_NEW_SCREEN_FUNC)(int scr, __DRIscreen *psc,
- const __DRIversion * ddx_version, const __DRIversion * dri_version,
- const __DRIversion * drm_version, int fd,
- unsigned int sarea_handle,
- const __DRIinterfaceMethods * interface,
- __GLcontextModes ** driver_modes);
+ int fd, unsigned int sarea_handle,
+ const __DRIinterfaceMethods * interface, __GLcontextModes ** driver_modes);
#define __DRI2_CREATE_NEW_SCREEN \
__DRI_MAKE_VERSION(__dri2CreateNewScreen, __DRI_INTERFACE_VERSION)
PUBLIC void *
__DRI2_CREATE_NEW_SCREEN(int scrn, __DRIscreen *psc,
- const __DRIversion * ddx_version,
- const __DRIversion * dri_version,
- const __DRIversion * drm_version,
- int fd,
- unsigned int sarea_handle,
- const __DRIinterfaceMethods * interface,
- __GLcontextModes ** driver_modes)
+ int fd, unsigned int sarea_handle,
+ const __DRIinterfaceMethods *interface,
+ __GLcontextModes **driver_modes)
{
__DRIscreenPrivate *psp;
static const __DRIextension *emptyExtensionList[] = { NULL };
dri_interface = interface;
unsigned int *p;
+ drmVersionPtr version;
__GLcontextModes *(*initScreen)(__DRIscreenPrivate *psc);
initScreen = dlsym(NULL, "__dri2DriverInitScreen");
psp->psc = psc;
- psp->drm_version = *drm_version;
- psp->ddx_version = *ddx_version;
- psp->dri_version = *dri_version;
+ version = drmGetVersion(fd);
+ if (version) {
+ psp->drm_version.major = version->version_major;
+ psp->drm_version.minor = version->version_minor;
+ psp->drm_version.patch = version->version_patchlevel;
+ drmFreeVersion(version);
+ }
+
psp->extensions = emptyExtensionList;
psp->fd = fd;
psp->myNum = scrn;
{
intelScreenPrivate *intelScreen = intel->intelScreen;
GLboolean ttm_disable = getenv("INTEL_NO_TTM") != NULL;
+ GLboolean ttm_supported;
/* If we've got a new enough DDX that's initializing TTM and giving us
* object handles for the shared buffers, use that.
*/
intel->ttm = GL_FALSE;
- if (!ttm_disable &&
- intel->intelScreen->driScrnPriv->ddx_version.minor >= 9 &&
- intel->intelScreen->drmMinor >= 11 &&
- intel->intelScreen->front.bo_handle != -1)
- {
+ if (intel->intelScreen->driScrnPriv->dri2.enabled)
+ ttm_supported = GL_TRUE;
+ else if (intel->intelScreen->driScrnPriv->ddx_version.minor >= 9 &&
+ intel->intelScreen->drmMinor >= 11 &&
+ intel->intelScreen->front.bo_handle != -1)
+ ttm_supported = GL_TRUE;
+ else
+ ttm_supported = GL_FALSE;
+
+ if (!ttm_disable && ttm_supported) {
intel->bufmgr = intel_bufmgr_ttm_init(intel->driFd,
DRM_FENCE_TYPE_EXE,
DRM_FENCE_TYPE_EXE |
*/
PUBLIC __GLcontextModes *__dri2DriverInitScreen(__DRIscreenPrivate *psp)
{
- static const __DRIversion ddx_expected = { 1, 9, 0 };
- static const __DRIversion dri_expected = { 4, 0, 0 };
- static const __DRIversion drm_expected = { 1, 5, 0 };
intelScreenPrivate *intelScreen;
__GLcontextModes *modes, *m;
psp->DriverAPI = intelAPI;
- if (!driCheckDriDdxDrmVersions2("i915",
- &psp->dri_version, &dri_expected,
- &psp->ddx_version, &ddx_expected,
- &psp->drm_version, &drm_expected)) {
- fprintf(stderr, "bad version voodoo\n");
- return NULL;
- }
-
/* Calling driInitExtensions here, with a NULL context pointer,
* does not actually enable the extensions. It just makes sure
* that all the dispatch offsets for all the extensions that