diff options
author | Glenn Kennard <[email protected]> | 2014-08-13 13:02:53 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2014-08-15 01:55:13 +0200 |
commit | f23ee74791853137caabede52204167e938fdeeb (patch) | |
tree | 3d9e81fa8211b11dea12eada8bc37374f7b74edc | |
parent | 221d9c3e9c043d96dcd0df9f996cb15daaeffe47 (diff) |
r600g: Implement BPTC texture support
Requires Evergreen/Cayman
Signed-off-by: Glenn Kennard <[email protected]>
Signed-off-by: Marek Olšák <[email protected]>
-rw-r--r-- | docs/GL3.txt | 2 | ||||
-rw-r--r-- | docs/relnotes/10.3.html | 2 | ||||
-rw-r--r-- | 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. <li>GL_ARB_gpu_shader5 on nvc0</li> <li>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)</li> -<li>GL_ARB_texture_compression_bptc on i965/gen7+, nvc0</li> +<li>GL_ARB_texture_compression_bptc on i965/gen7+, nvc0, r600/evergreen+</li> <li>Distribute the Khronos GL/glcorearb.h header file. </ul> 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: |