r600g: simplify the conditionals determining array mode
authorMarek Olšák <maraeo@gmail.com>
Fri, 19 Aug 2011 17:26:08 +0000 (19:26 +0200)
committerMarek Olšák <maraeo@gmail.com>
Fri, 19 Aug 2011 21:12:11 +0000 (23:12 +0200)
src/gallium/drivers/r600/r600_texture.c

index f0cf1f593d84289f43089202a3a3cfac6f9db00f..74219e8005f28694219083093180f3d3a0e0e8fa 100644 (file)
@@ -464,35 +464,26 @@ r600_texture_create_object(struct pipe_screen *screen,
        return rtex;
 }
 
+DEBUG_GET_ONCE_BOOL_OPTION(tiling_enabled, "R600_TILING", FALSE);
+
 struct pipe_resource *r600_texture_create(struct pipe_screen *screen,
                                                const struct pipe_resource *templ)
 {
+       struct radeon *radeon = ((struct r600_screen*)screen)->radeon;
        unsigned array_mode = 0;
-       static int force_tiling = -1;
 
-       /* Would like some magic "get_bool_option_once" routine.
-        */
-       if (force_tiling == -1) {
-#if 0
-               /* reenable when 2D tiling is fixed better */
-               struct r600_screen *rscreen = (struct r600_screen *)screen;
-               if (r600_get_minor_version(rscreen->radeon) >= 9)
-                       force_tiling = debug_get_bool_option("R600_TILING", TRUE);
-#endif
-               force_tiling = debug_get_bool_option("R600_TILING", FALSE);
-       }
-
-       if (force_tiling && permit_hardware_blit(screen, templ)) {
-               if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
-                   !(templ->bind & PIPE_BIND_SCANOUT)) {
+       if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
+           !(templ->bind & PIPE_BIND_SCANOUT)) {
+               if (util_format_is_compressed(templ->format)) {
+                       array_mode = V_038000_ARRAY_1D_TILED_THIN1;
+               }
+               else if (debug_get_option_tiling_enabled() &&
+                        r600_get_minor_version(radeon) >= 9 &&
+                        permit_hardware_blit(screen, templ)) {
                        array_mode = V_038000_ARRAY_2D_TILED_THIN1;
                }
        }
 
-       if (!(templ->flags & R600_RESOURCE_FLAG_TRANSFER) &&
-           util_format_is_compressed(templ->format))
-               array_mode = V_038000_ARRAY_1D_TILED_THIN1;
-
        return (struct pipe_resource *)r600_texture_create_object(screen, templ, array_mode,
                                                                  0, 0, NULL, TRUE);
 }