diff options
author | Michel Dänzer <daenzer@vmware.com> | 2011-01-05 11:41:56 +0100 |
---|---|---|
committer | Michel Dänzer <daenzer@vmware.com> | 2011-01-05 11:41:56 +0100 |
commit | c7c1e5338cd4d47168fd2654ae951955578bef8d (patch) | |
tree | ef7964213603e807fb4915a5718f643659840bba /src/gallium/state_trackers/xorg/xorg_crtc.c | |
parent | 266d8eed6927650a55974a293959fe21073030bb (diff) |
st/xorg: Flesh out colour map support and support depth 8.
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_crtc.c')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_crtc.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_crtc.c b/src/gallium/state_trackers/xorg/xorg_crtc.c index 28e30e09ff..71f7b8c21d 100644 --- a/src/gallium/state_trackers/xorg/xorg_crtc.c +++ b/src/gallium/state_trackers/xorg/xorg_crtc.c @@ -133,6 +133,16 @@ crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode, if (ret) return FALSE; + /* Only set gamma when needed, to avoid unneeded delays. */ +#if defined(XF86_CRTC_VERSION) && XF86_CRTC_VERSION >= 3 + if (!crtc->active) +#endif + crtc->funcs->gamma_set(crtc, crtc->gamma_red, crtc->gamma_green, + crtc->gamma_blue, crtc->gamma_size); + +#if defined(XF86_CRTC_VERSION) && XF86_CRTC_VERSION >= 3 + crtc->active = TRUE; +#endif crtc->x = x; crtc->y = y; crtc->mode = *mode; @@ -145,7 +155,10 @@ static void crtc_gamma_set(xf86CrtcPtr crtc, CARD16 * red, CARD16 * green, CARD16 * blue, int size) { - /* XXX: hockup */ + modesettingPtr ms = modesettingPTR(crtc->scrn); + struct crtc_private *crtcp = crtc->driver_private; + + drmModeCrtcSetGamma(ms->fd, crtcp->drm_crtc->crtc_id, size, red, green, blue); } #if 0 /* Implement and enable to enable rotation and reflection. */ |