Merge remote-tracking branch 'origin/master' into pipe-video
[mesa.git] / src / gallium / drivers / r600 / r600_texture.c
index 7ffea6961de9b01516aa3c3abae1c8956f48da13..77cdd8dc33d7ef6425caacea2a3b39b3269cdd66 100644 (file)
@@ -294,7 +294,7 @@ static boolean permit_hardware_blit(struct pipe_screen *screen,
        /* hackaround for S3TC */
        if (util_format_is_compressed(res->format))
                return TRUE;
-           
+
        if (!screen->is_format_supported(screen,
                                res->format,
                                res->target,
@@ -309,7 +309,16 @@ static boolean permit_hardware_blit(struct pipe_screen *screen,
                                 PIPE_BIND_SAMPLER_VIEW))
                return FALSE;
 
-       return TRUE;
+        switch (res->usage) {
+        case PIPE_USAGE_STREAM:
+        case PIPE_USAGE_STAGING:
+        case PIPE_USAGE_STATIC:
+        case PIPE_USAGE_IMMUTABLE:
+                return FALSE;
+
+        default:
+                return TRUE;
+        }
 }
 
 static boolean r600_texture_get_handle(struct pipe_screen* screen,
@@ -999,7 +1008,7 @@ uint32_t r600_translate_texformat(struct pipe_screen *screen,
        case UTIL_FORMAT_TYPE_SIGNED:
                if (!desc->channel[i].normalized &&
                    desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB) {
-                       goto out_unknown;
+                       word4 |= S_038010_NUM_FORMAT_ALL(V_038010_SQ_NUM_FORMAT_SCALED);
                }
 
                switch (desc->channel[i].size) {