diff options
author | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-06-09 11:45:44 -0700 |
---|---|---|
committer | Jason Ekstrand <jason.ekstrand@intel.com> | 2016-07-15 15:59:33 -0700 |
commit | 5a8c89038abab0184ea72664ab390ec6ca58b4d6 (patch) | |
tree | ced79fcd8df1d5f3f929eb83bdcde644e5b669a4 /src/mesa/drivers/dri | |
parent | 7a21d1bfc35ba1afdb443c5605a33d3da88735ce (diff) |
i965/state: Use ISL for emitting image surfaces
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Chad Versace <chad.versace@intel.com>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index fcaaddd6f2f..a4e84f8d537 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -1402,22 +1402,33 @@ update_image_surface(struct brw_context *brw, access != GL_READ_ONLY); } else { - const unsigned min_layer = obj->MinLayer + u->_Layer; - const unsigned min_level = obj->MinLevel + u->Level; const unsigned num_layers = (!u->Layered ? 1 : obj->Target == GL_TEXTURE_CUBE_MAP ? 6 : mt->logical_depth0); - const GLenum target = (obj->Target == GL_TEXTURE_CUBE_MAP || - obj->Target == GL_TEXTURE_CUBE_MAP_ARRAY ? - GL_TEXTURE_2D_ARRAY : obj->Target); + + struct isl_view view = { + .format = format, + .base_level = obj->MinLevel + u->Level, + .levels = 1, + .base_array_layer = obj->MinLayer + u->_Layer, + .array_len = num_layers, + .channel_select = { + ISL_CHANNEL_SELECT_RED, + ISL_CHANNEL_SELECT_GREEN, + ISL_CHANNEL_SELECT_BLUE, + ISL_CHANNEL_SELECT_ALPHA, + }, + .usage = ISL_SURF_USAGE_STORAGE_BIT, + }; + const int surf_index = surf_offset - &brw->wm.base.surf_offset[0]; - brw->vtbl.emit_texture_surface_state( - brw, mt, target, - min_layer, min_layer + num_layers, - min_level, min_level + 1, - format, SWIZZLE_XYZW, - surf_offset, surf_index, access != GL_READ_ONLY, false); + brw_emit_surface_state(brw, mt, &view, + surface_state_infos[brw->gen].rb_mocs, false, + surf_offset, surf_index, + I915_GEM_DOMAIN_SAMPLER, + access == GL_READ_ONLY ? 0 : + I915_GEM_DOMAIN_SAMPLER); } update_texture_image_param(brw, u, surface_idx, param); |