On Monday, April 24, 2017 3:19:10 PM PDT Rafael Antognolli wrote:
> From: Kenneth Graunke <kenn...@whitecape.org>
> 
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/Makefile.sources    |  15 ++-
>  src/mesa/drivers/dri/i965/genX_state_upload.c | 109 +++++++++++++++++++-
>  2 files changed, 119 insertions(+), 5 deletions(-)
>  create mode 100644 src/mesa/drivers/dri/i965/genX_state_upload.c
> 
> diff --git a/src/mesa/drivers/dri/i965/Makefile.sources 
> b/src/mesa/drivers/dri/i965/Makefile.sources
> index aef1a7a..db55a3f 100644
> --- a/src/mesa/drivers/dri/i965/Makefile.sources
> +++ b/src/mesa/drivers/dri/i965/Makefile.sources
> @@ -161,19 +161,24 @@ i965_FILES = \
>       libdrm_macros.h
>  
>  i965_gen6_FILES = \
> -     genX_blorp_exec.c
> +     genX_blorp_exec.c \
> +     genX_state_upload.c
>  
>  i965_gen7_FILES = \
> -     genX_blorp_exec.c
> +     genX_blorp_exec.c \
> +     genX_state_upload.c
>  
>  i965_gen75_FILES = \
> -     genX_blorp_exec.c
> +     genX_blorp_exec.c \
> +     genX_state_upload.c
>  
>  i965_gen8_FILES = \
> -     genX_blorp_exec.c
> +     genX_blorp_exec.c \
> +     genX_state_upload.c
>  
>  i965_gen9_FILES = \
> -     genX_blorp_exec.c
> +     genX_blorp_exec.c \
> +     genX_state_upload.c
>  
>  i965_oa_GENERATED_FILES = \
>       brw_oa_hsw.h \
> diff --git a/src/mesa/drivers/dri/i965/genX_state_upload.c 
> b/src/mesa/drivers/dri/i965/genX_state_upload.c
> new file mode 100644
> index 0000000..25bf4b6
> --- /dev/null
> +++ b/src/mesa/drivers/dri/i965/genX_state_upload.c
> @@ -0,0 +1,109 @@
> +/*
> + * Copyright © 2017 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
> DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include <assert.h>
> +
> +#include "common/gen_device_info.h"
> +#include "genxml/gen_macros.h"
> +
> +#include "brw_context.h"
> +#include "brw_state.h"
> +
> +#include "intel_batchbuffer.h"
> +
> +UNUSED static void *
> +emit_dwords(struct brw_context *brw, unsigned n)
> +{
> +   intel_batchbuffer_begin(brw, n, RENDER_RING);
> +   uint32_t *map = brw->batch.map_next;
> +   brw->batch.map_next += n;
> +   intel_batchbuffer_advance(brw);
> +   return map;
> +}
> +
> +struct brw_address {
> +   struct brw_bo *bo;
> +   uint32_t read_domains;
> +   uint32_t write_domain;
> +   uint32_t offset;
> +};
> +
> +static uint64_t
> +emit_reloc(struct brw_context *brw,
> +           void *location, struct brw_address address, uint32_t delta)
> +{
> +   uint32_t offset = (char *) location - (char *) brw->batch.map;
> +
> +   return brw_emit_reloc(&brw->batch, offset, address.bo,
> +                         address.offset + delta,
> +                         address.read_domains,
> +                         address.write_domain);
> +}
> +
> +#define __gen_address_type struct brw_address
> +#define __gen_user_data struct brw_context
> +
> +static uint64_t
> +__gen_combine_address(struct brw_context *brw, void *location,
> +                      struct brw_address address, uint32_t delta)
> +{
> +   if (address.bo == NULL) {
> +      return address.offset + delta;
> +   } else {
> +      return emit_reloc(brw, location, address, delta);
> +   }
> +}
> +
> +#include "genxml/genX_pack.h"
> +
> +#define _brw_cmd_length(cmd) cmd ## _length
> +#define _brw_cmd_length_bias(cmd) cmd ## _length_bias
> +#define _brw_cmd_header(cmd) cmd ## _header
> +#define _brw_cmd_pack(cmd) cmd ## _pack
> +
> +#define brw_batch_emit(brw, cmd, name)                  \
> +   for (struct cmd name = { _brw_cmd_header(cmd) },     \
> +        *_dst = emit_dwords(brw, _brw_cmd_length(cmd)); \
> +        __builtin_expect(_dst != NULL, 1);              \
> +        _brw_cmd_pack(cmd)(brw, (void *)_dst, &name),   \
> +        _dst = NULL)
> +
> +#define brw_batch_emitn(brw, cmd, n) ({                \
> +      uint32_t *_dw = emit_dwords(brw, n);             \
> +      struct cmd template = {                          \
> +         _brw_cmd_header(cmd),                         \
> +         .DWordLength = n - _brw_cmd_length_bias(cmd), \
> +      };                                               \
> +      _brw_cmd_pack(cmd)(brw, _dw, &template);         \
> +      _dw + 1; /* Array starts at dw[1] */             \
> +   })
> +
> +#define brw_state_emit(brw, cmd, aub, align, offset, name)         \
> +   for (struct cmd name = { 0, },                                  \
> +        *_dst = brw_state_batch(brw, aub,_brw_cmd_length(cmd) * 4, \

Please drop 'aub' here.  You actually did that in patch 18 - looks like
it was accidentally squashed into the wrong patch.

> +                                align, offset);                    \
> +        __builtin_expect(_dst != NULL, 1);                         \
> +        _brw_cmd_pack(cmd)(brw, (void *)_dst, &name),              \
> +        _dst = NULL)
> +
> +/* ---------------------------------------------------------------------- */

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to