diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/svga/svga_resource_texture.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index f176647dcf6..b7e8549b782 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -839,6 +839,17 @@ svga_texture_create(struct pipe_screen *screen, tex->key.cachable = 1; + if ((bindings & (PIPE_BIND_RENDER_TARGET | PIPE_BIND_DEPTH_STENCIL)) && + !(bindings & PIPE_BIND_SAMPLER_VIEW)) { + /* Also check if the format can be sampled from */ + if (screen->is_format_supported(screen, template->format, + template->target, + template->nr_samples, + PIPE_BIND_SAMPLER_VIEW)) { + bindings |= PIPE_BIND_SAMPLER_VIEW; + } + } + if (bindings & PIPE_BIND_SAMPLER_VIEW) { tex->key.flags |= SVGA3D_SURFACE_HINT_TEXTURE; tex->key.flags |= SVGA3D_SURFACE_BIND_SHADER_RESOURCE; |