anv: Add a mi_memset and use it for zeroing queries

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
Jason Ekstrand
2018-09-14 17:06:48 -05:00
parent b11e9b5ffe
commit 40149441b8
3 changed files with 23 additions and 12 deletions

View File

@@ -108,6 +108,23 @@ genX(cmd_buffer_mi_memcpy)(struct anv_cmd_buffer *cmd_buffer,
return;
}
void
genX(cmd_buffer_mi_memset)(struct anv_cmd_buffer *cmd_buffer,
struct anv_address dst, uint32_t value,
uint32_t size)
{
/* This memset operates in units of dwords. */
assert(size % 4 == 0);
assert(dst.offset % 4 == 0);
for (uint32_t i = 0; i < size; i += 4) {
anv_batch_emit(&cmd_buffer->batch, GENX(MI_STORE_DATA_IMM), sdi) {
sdi.Address = anv_address_add(dst, i);
sdi.ImmediateData = value;
}
}
}
void
genX(cmd_buffer_so_memcpy)(struct anv_cmd_buffer *cmd_buffer,
struct anv_address dst, struct anv_address src,