This requires the arb_half_float_vertex Mesa branch, plus some unreleased
gallium support work by Dave Airlie.

You may need to fix an assertion in st_pipe_vertex_format too.
---
 src/gallium/drivers/nv40/nv40_vbo.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/nv40/nv40_vbo.c 
b/src/gallium/drivers/nv40/nv40_vbo.c
index e85d6b4..211f3bd 100644
--- a/src/gallium/drivers/nv40/nv40_vbo.c
+++ b/src/gallium/drivers/nv40/nv40_vbo.c
@@ -11,6 +11,10 @@
 
 #define FORCE_SWTNL 0
 
+#ifndef NV40TCL_VTXFMT_TYPE_HALF
+#define NV40TCL_VTXFMT_TYPE_HALF 3
+#endif
+
 static INLINE int
 nv40_vbo_format_to_hw(enum pipe_format pipe, unsigned *fmt, unsigned *ncomp)
 {
@@ -21,6 +25,12 @@ nv40_vbo_format_to_hw(enum pipe_format pipe, unsigned *fmt, 
unsigned *ncomp)
        case PIPE_FORMAT_R32G32B32A32_FLOAT:
                *fmt = NV40TCL_VTXFMT_TYPE_FLOAT;
                break;
+       case PIPE_FORMAT_R16X16_FLOAT:
+       case PIPE_FORMAT_R16G16_FLOAT:
+       case PIPE_FORMAT_R16G16B16X16_FLOAT:
+       case PIPE_FORMAT_R16G16B16A16_FLOAT:
+               *fmt = NV40TCL_VTXFMT_TYPE_HALF;
+               break;
        case PIPE_FORMAT_R8_UNORM:
        case PIPE_FORMAT_R8G8_UNORM:
        case PIPE_FORMAT_R8G8B8_UNORM:
@@ -41,21 +51,25 @@ nv40_vbo_format_to_hw(enum pipe_format pipe, unsigned *fmt, 
unsigned *ncomp)
        switch (pipe) {
        case PIPE_FORMAT_R8_UNORM:
        case PIPE_FORMAT_R32_FLOAT:
+       case PIPE_FORMAT_R16X16_FLOAT:
        case PIPE_FORMAT_R16_SSCALED:
                *ncomp = 1;
                break;
        case PIPE_FORMAT_R8G8_UNORM:
        case PIPE_FORMAT_R32G32_FLOAT:
+       case PIPE_FORMAT_R16G16_FLOAT:
        case PIPE_FORMAT_R16G16_SSCALED:
                *ncomp = 2;
                break;
        case PIPE_FORMAT_R8G8B8_UNORM:
        case PIPE_FORMAT_R32G32B32_FLOAT:
+       case PIPE_FORMAT_R16G16B16X16_FLOAT:
        case PIPE_FORMAT_R16G16B16_SSCALED:
                *ncomp = 3;
                break;
        case PIPE_FORMAT_R8G8B8A8_UNORM:
        case PIPE_FORMAT_R32G32B32A32_FLOAT:
+       case PIPE_FORMAT_R16G16B16A16_FLOAT:
        case PIPE_FORMAT_R16G16B16A16_SSCALED:
                *ncomp = 4;
                break;
-- 
1.6.3.3

_______________________________________________
Nouveau mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to