diff options
-rw-r--r-- | include/GL/internal/dri_interface.h | 7 | ||||
-rw-r--r-- | src/mesa/drivers/dri/common/dri_util.c | 22 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.c | 16 | ||||
-rw-r--r-- | src/mesa/drivers/dri/intel/intel_screen.c | 11 |
4 files changed, 25 insertions, 31 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 888b91df586..ed71e5698bc 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -266,11 +266,8 @@ extern CREATENEWSCREENFUNC __DRI_CREATE_NEW_SCREEN; /* 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) diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index 8e9f9167cae..b429a824abd 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -872,18 +872,15 @@ void * __DRI_CREATE_NEW_SCREEN( int scrn, __DRIscreen *psc, 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"); @@ -896,9 +893,14 @@ __DRI2_CREATE_NEW_SCREEN(int scrn, __DRIscreen *psc, 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; diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index ab615df68b1..e3622db5966 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -440,16 +440,22 @@ intel_init_bufmgr(struct intel_context *intel) { 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 | diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 5d0bf4a1da1..7ac7240b56a 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -829,22 +829,11 @@ struct intel_context *intelScreenContext(intelScreenPrivate *intelScreen) */ 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 |