From f23ee74791853137caabede52204167e938fdeeb Mon Sep 17 00:00:00 2001 From: Glenn Kennard Date: Wed, 13 Aug 2014 13:02:53 +0200 Subject: [PATCH] r600g: Implement BPTC texture support MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Requires Evergreen/Cayman Signed-off-by: Glenn Kennard Signed-off-by: Marek Olšák --- docs/GL3.txt | 2 +- docs/relnotes/10.3.html | 2 +- src/gallium/drivers/r600/r600_state_common.c | 24 ++++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/docs/GL3.txt b/docs/GL3.txt index 9eba5257e81..2c3fe280925 100644 --- a/docs/GL3.txt +++ b/docs/GL3.txt @@ -131,7 +131,7 @@ GL 4.1, GLSL 4.10: GL 4.2, GLSL 4.20: - GL_ARB_texture_compression_bptc DONE (i965, nvc0) + GL_ARB_texture_compression_bptc DONE (i965, nvc0, r600) GL_ARB_compressed_texture_pixel_storage DONE (all drivers) GL_ARB_shader_atomic_counters DONE (i965) GL_ARB_texture_storage DONE (all drivers) diff --git a/docs/relnotes/10.3.html b/docs/relnotes/10.3.html index 86cbabce869..8ae1ec8e1fd 100644 --- a/docs/relnotes/10.3.html +++ b/docs/relnotes/10.3.html @@ -64,7 +64,7 @@ Note: some of the new features are only available with certain drivers.
  • GL_ARB_gpu_shader5 on nvc0
  • A new software rasterizer driver (kms_swrast_dri.so) that works with DRM drivers that don't have a full-fledged GEM (such as qxl or simpledrm)
  • -
  • GL_ARB_texture_compression_bptc on i965/gen7+, nvc0
  • +
  • GL_ARB_texture_compression_bptc on i965/gen7+, nvc0, r600/evergreen+
  • Distribute the Khronos GL/glcorearb.h header file. diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 64a027797d1..d29e137d511 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -1971,6 +1971,30 @@ uint32_t r600_translate_texformat(struct pipe_screen *screen, } } + if (desc->layout == UTIL_FORMAT_LAYOUT_BPTC) { + if (!enable_s3tc) + goto out_unknown; + + if (rscreen->b.chip_class < EVERGREEN) + goto out_unknown; + + switch (format) { + case PIPE_FORMAT_BPTC_RGBA_UNORM: + case PIPE_FORMAT_BPTC_SRGBA: + result = FMT_BC7; + is_srgb_valid = TRUE; + goto out_word4; + case PIPE_FORMAT_BPTC_RGB_FLOAT: + word4 |= sign_bit[0] | sign_bit[1] | sign_bit[2]; + /* fall through */ + case PIPE_FORMAT_BPTC_RGB_UFLOAT: + result = FMT_BC6; + goto out_word4; + default: + goto out_unknown; + } + } + if (desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) { switch (format) { case PIPE_FORMAT_R8G8_B8G8_UNORM: -- 2.30.2