From b7ab9ee84e4e4ff48b335c74c110d82e48bee4a5 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 24 Sep 2010 09:50:48 +1000 Subject: r600g: add some more vertex format support. adds the sscaled formats, this passes some more of the draw-vertices tests. --- src/gallium/drivers/r600/eg_state_inlines.h | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'src/gallium/drivers/r600/eg_state_inlines.h') diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index 0a42abcdf2..d9897e020e 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -400,7 +400,18 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_R32_FLOAT: return V_028C70_COLOR_32_FLOAT; + case PIPE_FORMAT_R16G16_FLOAT: + return V_028C70_COLOR_16_16_FLOAT; + + case PIPE_FORMAT_R16G16_SSCALED: + return V_028C70_COLOR_16_16; + + case PIPE_FORMAT_R16G16B16_FLOAT: + return V_028C70_COLOR_16_16_16_16_FLOAT; + /* 64-bit buffers. */ + case PIPE_FORMAT_R16G16B16A16_SSCALED: + case PIPE_FORMAT_R16G16B16_SSCALED: case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: return V_028C70_COLOR_16_16_16_16; @@ -409,6 +420,9 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) case PIPE_FORMAT_R32G32_FLOAT: return V_028C70_COLOR_32_32_FLOAT; + case PIPE_FORMAT_R32G32_SSCALED: + return V_028C70_COLOR_32_32; + /* 128-bit buffers. */ case PIPE_FORMAT_R32G32B32_FLOAT: return V_028C70_COLOR_32_32_32_FLOAT; @@ -424,6 +438,25 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) } } +static INLINE void r600_translate_vertex_num_format(enum pipe_format format, uint32_t *num_format_p, + uint32_t *format_comp_p) +{ + uint32_t num_format = 0, format_comp = 0; + switch (format) { + case PIPE_FORMAT_R16G16B16A16_SSCALED: + case PIPE_FORMAT_R16G16B16_SSCALED: + case PIPE_FORMAT_R16G16_SSCALED: + case PIPE_FORMAT_R32G32_SSCALED: + num_format = V_030008_SQ_NUM_FORMAT_SCALED; + format_comp = 1; + break; + default: + break; + } + *num_format_p = num_format; + *format_comp_p = format_comp; +} + static INLINE boolean r600_is_sampler_format_supported(enum pipe_format format) { return r600_translate_texformat(format, NULL, NULL, NULL) != ~0; -- cgit v1.2.3