[Mesa-dev] [PATCH 4/7] i965: Pass fb into emit_null_surface instead of dimensions.

Pohjolainen, Topi topi.pohjolainen at gmail.com
Wed Aug 23 07:13:51 UTC 2017


On Tue, Aug 22, 2017 at 01:57:58PM -0700, Kenneth Graunke wrote:
> We either want the framebuffer dimensions or 1x1x1.  Passing fb and
> falling back to 1x1x1 lets us shorten some calls.
> ---
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 28 ++++++++++--------------
>  1 file changed, 12 insertions(+), 16 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 2d7de54dcdb..a0cb566e719 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> @@ -824,9 +824,7 @@ const struct brw_tracked_state brw_wm_pull_constants = {
>   */
>  static void
>  emit_null_surface_state(struct brw_context *brw,
> -                        unsigned width,
> -                        unsigned height,
> -                        unsigned samples,
> +                        const struct gl_framebuffer *fb,
>                          uint32_t *out_offset)
>  {
>     uint32_t *surf = brw_state_batch(brw,
> @@ -834,6 +832,11 @@ emit_null_surface_state(struct brw_context *brw,
>                                      brw->isl_dev.ss.align,
>                                      out_offset);
>  
> +   /* Use the fb dimensions or 1x1x1 */
> +   unsigned width   = fb ? _mesa_geometric_width(fb)   : 1;
> +   unsigned height  = fb ? _mesa_geometric_height(fb)  : 1;
> +   unsigned samples = fb ? _mesa_geometric_samples(fb) : 1;

These could be const.

> +
>     if (brw->gen != 6 || samples <= 1) {
>        isl_null_fill_state(&brw->isl_dev, surf,
>                            isl_extent3d(width, height, 1));
> @@ -992,9 +995,6 @@ brw_update_renderbuffer_surfaces(struct brw_context *brw,
>                                   uint32_t *surf_offset)
>  {
>     GLuint i;
> -   const unsigned int w = _mesa_geometric_width(fb);
> -   const unsigned int h = _mesa_geometric_height(fb);
> -   const unsigned int s = _mesa_geometric_samples(fb);
>  
>     /* Update surfaces for drawing buffers */
>     if (fb->_NumColorDrawBuffers >= 1) {
> @@ -1007,12 +1007,12 @@ brw_update_renderbuffer_surfaces(struct brw_context *brw,
>                 gen6_update_renderbuffer_surface(brw, rb, i, surf_index) :
>                 gen4_update_renderbuffer_surface(brw, rb, i, surf_index);
>  	 } else {
> -            emit_null_surface_state(brw, w, h, s, &surf_offset[surf_index]);
> +            emit_null_surface_state(brw, fb, &surf_offset[surf_index]);
>  	 }
>        }
>     } else {
>        const uint32_t surf_index = render_target_start;
> -      emit_null_surface_state(brw, w, h, s, &surf_offset[surf_index]);
> +      emit_null_surface_state(brw, fb, &surf_offset[surf_index]);
>     }
>  }
>  
> @@ -1117,11 +1117,7 @@ update_renderbuffer_read_surfaces(struct brw_context *brw)
>                                     0);
>  
>           } else {
> -            emit_null_surface_state(brw,
> -                                    _mesa_geometric_width(fb),
> -                                    _mesa_geometric_height(fb),
> -                                    _mesa_geometric_samples(fb),
> -                                    surf_offset);
> +            emit_null_surface_state(brw, fb, surf_offset);
>           }
>        }
>  
> @@ -1294,7 +1290,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,
>           &ctx->UniformBufferBindings[prog->sh.UniformBlocks[i]->Binding];
>  
>        if (binding->BufferObject == ctx->Shared->NullBufferObj) {
> -         emit_null_surface_state(brw, 1, 1, 1, &ubo_surf_offsets[i]);
> +         emit_null_surface_state(brw, NULL, &ubo_surf_offsets[i]);
>        } else {
>           struct intel_buffer_object *intel_bo =
>              intel_buffer_object(binding->BufferObject);
> @@ -1319,7 +1315,7 @@ brw_upload_ubo_surfaces(struct brw_context *brw, struct gl_program *prog,
>           &ctx->ShaderStorageBufferBindings[prog->sh.ShaderStorageBlocks[i]->Binding];
>  
>        if (binding->BufferObject == ctx->Shared->NullBufferObj) {
> -         emit_null_surface_state(brw, 1, 1, 1, &ssbo_surf_offsets[i]);
> +         emit_null_surface_state(brw, NULL, &ssbo_surf_offsets[i]);
>        } else {
>           struct intel_buffer_object *intel_bo =
>              intel_buffer_object(binding->BufferObject);
> @@ -1611,7 +1607,7 @@ update_image_surface(struct brw_context *brw,
>        }
>  
>     } else {
> -      emit_null_surface_state(brw, 1, 1, 1, surf_offset);
> +      emit_null_surface_state(brw, NULL, surf_offset);
>        update_default_image_param(brw, u, surface_idx, param);
>     }
>  }
> -- 
> 2.14.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list