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

Author: Marek Olšák <[email protected]>
Date:   Wed May 23 22:56:25 2018 -0400

radeonsi: report supported EQAA combinations from is_format_supported

Framebuffer without attachments now supports 16 samples.

Tested-by: Dieter Nützel <[email protected]>

---

 src/gallium/drivers/radeonsi/si_state.c | 36 ++++++++++++++++++---------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index a1b00cb979..fc1ec83931 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2143,6 +2143,9 @@ static boolean si_is_format_supported(struct pipe_screen 
*screen,
                return false;
        }
 
+       if (MAX2(1, sample_count) < MAX2(1, storage_sample_count))
+               return false;
+
        if (sample_count > 1) {
                if (!screen->get_param(screen, PIPE_CAP_TEXTURE_MULTISAMPLE))
                        return false;
@@ -2150,25 +2153,26 @@ static boolean si_is_format_supported(struct 
pipe_screen *screen,
                if (usage & PIPE_BIND_SHADER_IMAGE)
                        return false;
 
-               if (sample_count != storage_sample_count)
+               /* Only power-of-two sample counts are supported. */
+               if (!util_is_power_of_two_or_zero(sample_count) ||
+                   !util_is_power_of_two_or_zero(storage_sample_count))
                        return false;
 
-               switch (sample_count) {
-               case 2:
-               case 4:
-               case 8:
-                       break;
-               case 16:
-                       /* Allow resource_copy_region with nr_samples == 16. */
-                       if (sscreen->eqaa_force_coverage_samples == 16 &&
-                           !util_format_is_depth_or_stencil(format))
-                               return true;
-                       if (format == PIPE_FORMAT_NONE)
-                               return true;
-                       else
+               /* MSAA support without framebuffer attachments. */
+               if (format == PIPE_FORMAT_NONE && sample_count <= 16)
+                       return true;
+
+               if (!sscreen->info.has_eqaa_surface_allocator ||
+                   util_format_is_depth_or_stencil(format)) {
+                       /* Color without EQAA or depth/stencil. */
+                       if (sample_count > 8 ||
+                           sample_count != storage_sample_count)
+                               return false;
+               } else {
+                       /* Color with EQAA. */
+                       if (sample_count > 16 ||
+                           storage_sample_count > 8)
                                return false;
-               default:
-                       return false;
                }
        }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to