i965/tex: Don't create read-write textures with non-renderable formats
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 27 Jan 2015 22:18:57 +0000 (14:18 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 28 Jan 2015 09:28:32 +0000 (01:28 -0800)
I haven't actually seen this bug in the wild, but it's possible that
someone could ask to do a S3TC PBO download or something.  This protects us
from accidentally creating a render target with a compressed or otherwise
non-renderable format.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/intel_tex.c

index 184702fab9119ec05364295f1b905a578639f843..2d3009a30d12d89e8f7a32b03a533c71e07742ca 100644 (file)
@@ -323,6 +323,11 @@ intel_set_texture_storage_for_buffer_object(struct gl_context *ctx,
          perf_debug("Bad PBO alignment; fallback to CPU mapping\n");
          return false;
       }
+
+      if (!brw->format_supported_as_render_target[image->TexFormat]) {
+         perf_debug("Non-renderable PBO format; fallback to CPU mapping\n");
+         return false;
+      }
    }
 
    assert(intel_texobj->mt == NULL);