{ OPTION_DRI, "DRI", OPTV_BOOLEAN, {0}, FALSE},
{ OPTION_DIRECT_PRESENTS, "DirectPresents", OPTV_BOOLEAN, {0}, FALSE},
{ OPTION_HW_PRESENTS, "HWPresents", OPTV_BOOLEAN, {0}, FALSE},
+ { OPTION_RENDERCHECK, "RenderCheck", OPTV_BOOLEAN, {0}, FALSE},
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
OPTION_RENDER_ACCEL,
OPTION_DRI,
OPTION_DIRECT_PRESENTS,
- OPTION_HW_PRESENTS
+ OPTION_HW_PRESENTS,
+ OPTION_RENDERCHECK
} VMWAREOpts;
OptionInfoPtr VMWARECopyOptions(void);
&ms->accelerate_render) ?
X_CONFIG : X_PROBED;
+ ms->rendercheck = FALSE;
+ ms->from_rendercheck = xf86GetOptValBool(ms->Options, OPTION_RENDERCHECK,
+ &ms->rendercheck) ?
+ X_CONFIG : X_DEFAULT;
+
ms->enable_dri = ms->accelerate_render;
ms->from_dri = xf86GetOptValBool(ms->Options, OPTION_DRI,
&ms->enable_dri) ?
ms->from_render = X_PROBED;
}
}
+ if (ms->xat == NULL && ms->rendercheck) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Turning off renercheck mode.\n");
+ ms->rendercheck = FALSE;
+ ms->from_rendercheck = X_PROBED;
+ }
}
if (!vmwgfx_saa_init(pScreen, ms->fd, ms->xat, &xorg_flush,
ms->direct_presents,
- ms->only_hw_presents)) {
+ ms->only_hw_presents,
+ ms->rendercheck)) {
FatalError("Failed to initialize SAA.\n");
}
xf86DrvMsg(pScrn->scrnIndex, ms->from_render, "Render acceleration is %s.\n",
(ms->xat != NULL) ? "enabled" : "disabled");
+
+ xf86DrvMsg(pScrn->scrnIndex, ms->from_rendercheck,
+ "Rendercheck mode is %s.\n",
+ (ms->rendercheck) ? "enabled" : "disabled");
+
xf86DrvMsg(pScrn->scrnIndex, ms->from_dri, "Direct rendering (3D) is %s.\n",
(ms->dri2_available) ? "enabled" : "disabled");
if (ms->xat != NULL) {
/* Accel */
Bool accelerate_render;
Bool from_render;
+ Bool rendercheck;
+ MessageType from_rendercheck;
Bool SWCursor;
CursorPtr cursor;
Bool enable_dri;
valid_hw = (valid_hw && tmp_valid_hw);
}
- if (!valid_hw && !dirty_hw)
+ /*
+ * In rendercheck mode we try to accelerate all supported
+ * composite operations.
+ */
+
+ if (!valid_hw && !dirty_hw && !vsaa->rendercheck)
goto out_err;
/*
vmwgfx_saa_init(ScreenPtr pScreen, int drm_fd, struct xa_tracker *xat,
void (*present_flush)(ScreenPtr pScreen),
Bool direct_presents,
- Bool only_hw_presents)
+ Bool only_hw_presents,
+ Bool rendercheck)
{
struct vmwgfx_saa *vsaa;
vsaa->can_optimize_dma = FALSE;
vsaa->use_present_opt = direct_presents;
vsaa->only_hw_presents = only_hw_presents;
+ vsaa->rendercheck = rendercheck;
WSBMINITLISTHEAD(&vsaa->sync_x_list);
vsaa->driver = vmwgfx_saa_driver;
vmwgfx_saa_init(ScreenPtr pScreen, int drm_fd, struct xa_tracker *xat,
void (*present_flush)(ScreenPtr pScreen),
Bool direct_presents,
- Bool only_hw_presents);
+ Bool only_hw_presents,
+ Bool rendercheck);
extern uint32_t
vmwgfx_scanout_ref(struct vmwgfx_screen_entry *box);
Bool can_optimize_dma;
Bool use_present_opt;
Bool only_hw_presents;
+ Bool rendercheck;
void (*present_flush) (ScreenPtr pScreen);
struct _WsbmListHead sync_x_list;
struct vmwgfx_composite *vcomp;