Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 345442
b: refs/heads/master
c: f9887d0
h: refs/heads/master
v: v3
  • Loading branch information
Ben Skeggs committed Nov 28, 2012
1 parent 83b4457 commit 21483c7
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 647bf61d0399515c526c125450cadaade79b1988
refs/heads/master: f9887d091149406de5c8b388f7e0bb6932dd621b
2 changes: 1 addition & 1 deletion trunk/drivers/gpu/drm/nouveau/nouveau_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ nouveau_display_create(struct drm_device *dev)
disp->underscan_vborder_property =
drm_property_create_range(dev, 0, "underscan vborder", 0, 128);

if (gen == 1) {
if (gen >= 1) {
disp->vibrant_hue_property =
drm_property_create(dev, DRM_MODE_PROP_RANGE,
"vibrant hue", 2);
Expand Down
35 changes: 35 additions & 0 deletions trunk/drivers/gpu/drm/nouveau/nvd0_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -740,6 +740,37 @@ nvd0_crtc_set_scale(struct nouveau_crtc *nv_crtc, bool update)
return 0;
}

static int
nvd0_crtc_set_color_vibrance(struct nouveau_crtc *nv_crtc, bool update)
{
struct nvd0_mast *mast = nvd0_mast(nv_crtc->base.dev);
u32 *push, hue, vib;
int adj;

adj = (nv_crtc->color_vibrance > 0) ? 50 : 0;
vib = ((nv_crtc->color_vibrance * 2047 + adj) / 100) & 0xfff;
hue = ((nv_crtc->vibrant_hue * 2047) / 100) & 0xfff;

push = evo_wait(mast, 16);
if (push) {
if (nvd0_vers(mast) < NVD0_DISP_MAST_CLASS) {
evo_mthd(push, 0x08a8 + (nv_crtc->index * 0x400), 1);
evo_data(push, (hue << 20) | (vib << 8));
} else {
evo_mthd(push, 0x0498 + (nv_crtc->index * 0x300), 1);
evo_data(push, (hue << 20) | (vib << 8));
}

if (update) {
evo_mthd(push, 0x0080, 1);
evo_data(push, 0x00000000);
}
evo_kick(push, mast);
}

return 0;
}

static int
nvd0_crtc_set_image(struct nouveau_crtc *nv_crtc, struct drm_framebuffer *fb,
int x, int y, bool update)
Expand Down Expand Up @@ -1055,6 +1086,7 @@ nvd0_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *umode,
nv_connector = nouveau_crtc_connector_get(nv_crtc);
nvd0_crtc_set_dither(nv_crtc, false);
nvd0_crtc_set_scale(nv_crtc, false);
nvd0_crtc_set_color_vibrance(nv_crtc, false);
nvd0_crtc_set_image(nv_crtc, crtc->fb, x, y, false);
return 0;
}
Expand Down Expand Up @@ -1248,6 +1280,9 @@ nvd0_crtc_create(struct drm_device *dev, struct nouveau_object *core, int index)
head->base.index = index;
head->base.set_dither = nvd0_crtc_set_dither;
head->base.set_scale = nvd0_crtc_set_scale;
head->base.set_color_vibrance = nvd0_crtc_set_color_vibrance;
head->base.color_vibrance = 50;
head->base.vibrant_hue = 0;
head->base.cursor.set_offset = nvd0_cursor_set_offset;
head->base.cursor.set_pos = nvd0_cursor_set_pos;
for (i = 0; i < 256; i++) {
Expand Down

0 comments on commit 21483c7

Please sign in to comment.