Module: Mesa
Branch: arb_half_float_vertex
Commit: d82b8038fda47e825cbd093b3ae198a85a163b25
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=d82b8038fda47e825cbd093b3ae198a85a163b25

Author: Dave Airlie <airl...@redhat.com>
Date:   Sat Jan 23 07:38:06 2010 +1000

r300: half float support

Signed-off-by: Dave Airlie <airl...@redhat.com>

---

 src/mesa/drivers/dri/r300/r300_context.c |    1 +
 src/mesa/drivers/dri/r300/r300_draw.c    |   14 ++++++++++++++
 src/mesa/drivers/dri/r300/r300_reg.h     |    3 +++
 3 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_context.c 
b/src/mesa/drivers/dri/r300/r300_context.c
index bb0e6db..24c51d4 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -97,6 +97,7 @@ static const struct dri_extension card_extensions[] = {
   /* *INDENT-OFF* */
   {"GL_ARB_depth_texture",             NULL},
   {"GL_ARB_fragment_program",          NULL},
+  {"GL_ARB_half_float_vertex",         NULL},
   {"GL_ARB_occlusion_query",           GL_ARB_occlusion_query_functions},
   {"GL_ARB_multitexture",              NULL},
   {"GL_ARB_point_parameters",          GL_ARB_point_parameters_functions},
diff --git a/src/mesa/drivers/dri/r300/r300_draw.c 
b/src/mesa/drivers/dri/r300/r300_draw.c
index 3dcd986..2219821 100644
--- a/src/mesa/drivers/dri/r300/r300_draw.c
+++ b/src/mesa/drivers/dri/r300/r300_draw.c
@@ -56,6 +56,8 @@ static int getTypeSize(GLenum type)
        switch (type) {
                case GL_DOUBLE:
                        return sizeof(GLdouble);
+               case GL_HALF_FLOAT:
+                       return sizeof(GLhalfARB);
                case GL_FLOAT:
                        return sizeof(GLfloat);
                case GL_INT:
@@ -385,6 +387,18 @@ static void r300TranslateAttrib(GLcontext *ctx, GLuint 
attr, int count, const st
                        r300_attr._signed = 0;
                        r300_attr.normalize = 0;
                        break;
+               case GL_HALF_FLOAT:
+                       switch (input->Size) {
+                               case 1:
+                               case 2:
+                                       r300_attr.data_type = 
R300_DATA_TYPE_FLT16_2;
+                                       break;
+                               case 3:
+                               case 4:
+                                       r300_attr.data_type = 
R300_DATA_TYPE_FLT16_4;
+                                       break;
+                       }
+                       break;
                case GL_SHORT:
                        r300_attr._signed = 1;
                        r300_attr.normalize = input->Normalized;
diff --git a/src/mesa/drivers/dri/r300/r300_reg.h 
b/src/mesa/drivers/dri/r300/r300_reg.h
index ea684e7..d18ebab 100644
--- a/src/mesa/drivers/dri/r300/r300_reg.h
+++ b/src/mesa/drivers/dri/r300/r300_reg.h
@@ -230,6 +230,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #       define R300_DATA_TYPE_SHORT_4                   7
 #       define R300_DATA_TYPE_VECTOR_3_TTT              8
 #       define R300_DATA_TYPE_VECTOR_3_EET              9
+#      define R300_DATA_TYPE_FLT16_2                   11
+#      define R300_DATA_TYPE_FLT16_4                   12
+
 #       define R300_SKIP_DWORDS_SHIFT                   4
 #       define R300_DST_VEC_LOC_SHIFT                   8
 #       define R300_LAST_VEC                            (1 << 13)

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to