summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2018-02-04 13:50:29 -0500
committerIlia Mirkin <imirkin@alum.mit.edu>2018-02-04 18:13:11 -0500
commit6e2b4bed7b226dce262c7e14f72a29b003791be8 (patch)
tree7cd4748d4192b5aa49cd495bd79365d0759364c4
parentea83b9bd8c88dad67e6494031f1f65eed823b6f1 (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.c11
-rw-r--r--src/nv50_xv.c3
-rw-r--r--src/nvc0_xv.c3
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;