diff options
author | Brian Paul <brianp@vmware.com> | 2014-03-24 17:24:01 -0600 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2014-03-26 10:31:13 -0600 |
commit | c875d6e57a817bb6a8163a8a98ebd2768ee91848 (patch) | |
tree | 53b86bb87d4b9cd3e0ff862590580284a03fb975 /src/gallium/drivers/svga/svga_state_need_swtnl.c | |
parent | 070951b6ba58ae37e931e79f03636a200df730b9 (diff) | |
download | external_mesa3d-c875d6e57a817bb6a8163a8a98ebd2768ee91848.zip external_mesa3d-c875d6e57a817bb6a8163a8a98ebd2768ee91848.tar.gz external_mesa3d-c875d6e57a817bb6a8163a8a98ebd2768ee91848.tar.bz2 |
svga: add work-around for Sauerbraten Z fighting issue
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Diffstat (limited to 'src/gallium/drivers/svga/svga_state_need_swtnl.c')
-rw-r--r-- | src/gallium/drivers/svga/svga_state_need_swtnl.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/drivers/svga/svga_state_need_swtnl.c b/src/gallium/drivers/svga/svga_state_need_swtnl.c index c0bfd2c..6f1d802 100644 --- a/src/gallium/drivers/svga/svga_state_need_swtnl.c +++ b/src/gallium/drivers/svga/svga_state_need_swtnl.c @@ -36,7 +36,8 @@ * format. Return SVGA3D_DECLTYPE_MAX for unsupported gallium formats. */ static INLINE SVGA3dDeclType -svga_translate_vertex_format(enum pipe_format format) +svga_translate_vertex_format(const struct svga_context *svga, + enum pipe_format format) { switch (format) { case PIPE_FORMAT_R32_FLOAT: return SVGA3D_DECLTYPE_FLOAT1; @@ -57,6 +58,12 @@ svga_translate_vertex_format(enum pipe_format format) case PIPE_FORMAT_R16G16_FLOAT: return SVGA3D_DECLTYPE_FLOAT16_2; case PIPE_FORMAT_R16G16B16A16_FLOAT: return SVGA3D_DECLTYPE_FLOAT16_4; + case PIPE_FORMAT_R8G8B8_SNORM: + if (svga->workaround.use_decltype_ubyte4n) { + return SVGA3D_DECLTYPE_UBYTE4N; + } + /* fall-through */ + default: /* There are many formats without hardware support. This case * will be hit regularly, meaning we'll need swvfetch. @@ -78,7 +85,9 @@ update_need_swvfetch(struct svga_context *svga, unsigned dirty) } for (i = 0; i < svga->curr.velems->count; i++) { - svga->state.sw.ve_format[i] = svga_translate_vertex_format(svga->curr.velems->velem[i].src_format); + svga->state.sw.ve_format[i] = + svga_translate_vertex_format(svga, + svga->curr.velems->velem[i].src_format); if (svga->state.sw.ve_format[i] == SVGA3D_DECLTYPE_MAX) { /* Unsupported format - use software fetch */ need_swvfetch = TRUE; |