Mesa (master): r300: add half_float_vertex support

Marek Olšák mareko at kemper.freedesktop.org
Sun Feb 14 20:59:01 UTC 2010


Module: Mesa
Branch: master
Commit: 558c15995f486d72b959ad19c914a38adbcbe5f7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=558c15995f486d72b959ad19c914a38adbcbe5f7

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sun Feb 14 21:58:00 2010 +0100

r300: add half_float_vertex support

---

 src/gallium/drivers/r300/r300_reg.h           |    3 +++
 src/gallium/drivers/r300/r300_state_inlines.h |    8 ++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/gallium/drivers/r300/r300_reg.h b/src/gallium/drivers/r300/r300_reg.h
index 3618138..a049da6 100644
--- a/src/gallium/drivers/r300/r300_reg.h
+++ b/src/gallium/drivers/r300/r300_reg.h
@@ -244,6 +244,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_FLOAT_8                   10
+#       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)
diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h
index b7676e1..6ee6cd0 100644
--- a/src/gallium/drivers/r300/r300_state_inlines.h
+++ b/src/gallium/drivers/r300/r300_state_inlines.h
@@ -507,6 +507,14 @@ r300_translate_vertex_data_type(enum pipe_format format) {
         /* Half-floats, floats, doubles */
         case UTIL_FORMAT_TYPE_FLOAT:
             switch (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_RGB, 0)) {
+                case 16:
+                    /* XXX Supported only on RV350 and later. */
+                    if (components > 2) {
+                        result = R300_DATA_TYPE_FLT16_4;
+                    } else {
+                        result = R300_DATA_TYPE_FLT16_2;
+                    }
+                    break;
                 case 32:
                     result = R300_DATA_TYPE_FLOAT_1 + (components - 1);
                     break;




More information about the mesa-commit mailing list