diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2018-02-04 13:50:29 -0500 |
---|---|---|
committer | Ilia Mirkin <imirkin@alum.mit.edu> | 2018-02-04 18:13:11 -0500 |
commit | 6e2b4bed7b226dce262c7e14f72a29b003791be8 (patch) | |
tree | 7cd4748d4192b5aa49cd495bd79365d0759364c4 | |
parent | ea83b9bd8c88dad67e6494031f1f65eed823b6f1 (diff) |
nv50/xv: add support for depth 30 xv output
Ostensibly it should probably be looking at the pixmap format. However
it's always the window pixmap, so we can assume it's what we expect.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
-rw-r--r-- | src/nouveau_xv.c | 11 | ||||
-rw-r--r-- | src/nv50_xv.c | 3 | ||||
-rw-r--r-- | src/nvc0_xv.c | 3 |
3 files changed, 13 insertions, 4 deletions
diff --git a/src/nouveau_xv.c b/src/nouveau_xv.c index 4b939f7..a7ec21a 100644 --- a/src/nouveau_xv.c +++ b/src/nouveau_xv.c @@ -112,6 +112,13 @@ XF86VideoFormatRec NVFormats[NUM_FORMATS_ALL] = {15, DirectColor}, {16, DirectColor}, {24, DirectColor} }; +#define NUM_FORMATS_NV50 8 +XF86VideoFormatRec NV50Formats[NUM_FORMATS_NV50] = +{ + {15, TrueColor}, {16, TrueColor}, {24, TrueColor}, {30, TrueColor}, + {15, DirectColor}, {16, DirectColor}, {24, DirectColor}, {30, DirectColor} +}; + #define NUM_NV04_OVERLAY_ATTRIBUTES 4 XF86AttributeRec NV04OverlayAttributes[NUM_NV04_OVERLAY_ATTRIBUTES] = { @@ -2087,8 +2094,8 @@ NV50SetupTexturedVideo (ScreenPtr pScreen) adapt->name = "Nouveau GeForce 8/9 Textured Video"; adapt->nEncodings = 1; adapt->pEncodings = &DummyEncodingNV50; - adapt->nFormats = NUM_FORMATS_ALL; - adapt->pFormats = NVFormats; + adapt->nFormats = NUM_FORMATS_NV50; + adapt->pFormats = NV50Formats; adapt->nPorts = NUM_TEXTURE_PORTS; adapt->pPortPrivates = (DevUnion*)(&adapt[1]); diff --git a/src/nv50_xv.c b/src/nv50_xv.c index b2541b9..ba01c99 100644 --- a/src/nv50_xv.c +++ b/src/nv50_xv.c @@ -91,8 +91,9 @@ nv50_xv_image_put(ScrnInfoPtr pScrn, BEGIN_NV04(push, NV50_3D(RT_ADDRESS_HIGH(0)), 5); PUSH_DATA (push, dst->offset >> 32); PUSH_DATA (push, dst->offset); - switch (ppix->drawable.bitsPerPixel) { + switch (ppix->drawable.depth) { case 32: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRA8_UNORM); break; + case 30: PUSH_DATA (push, NV50_SURFACE_FORMAT_RGB10_A2_UNORM); break; case 24: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRX8_UNORM); break; case 16: PUSH_DATA (push, NV50_SURFACE_FORMAT_B5G6R5_UNORM); break; case 15: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGR5_X1_UNORM); break; diff --git a/src/nvc0_xv.c b/src/nvc0_xv.c index 5cecbf5..8842148 100644 --- a/src/nvc0_xv.c +++ b/src/nvc0_xv.c @@ -89,8 +89,9 @@ nvc0_xv_image_put(ScrnInfoPtr pScrn, PUSH_DATA (push, dst->offset); PUSH_DATA (push, ppix->drawable.width); PUSH_DATA (push, ppix->drawable.height); - switch (ppix->drawable.bitsPerPixel) { + switch (ppix->drawable.depth) { case 32: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRA8_UNORM); break; + case 30: PUSH_DATA (push, NV50_SURFACE_FORMAT_RGB10_A2_UNORM); break; case 24: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGRX8_UNORM); break; case 16: PUSH_DATA (push, NV50_SURFACE_FORMAT_B5G6R5_UNORM); break; case 15: PUSH_DATA (push, NV50_SURFACE_FORMAT_BGR5_X1_UNORM); break; |