mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 08:50:09 +01:00
vk: Add anv_batch_emit_merge() helper macro
This lets us emit a state packet by merging to half-backed versions, typically one from the pipeline object and one from a dynamic state objects.
This commit is contained in:
parent
099faa1a2b
commit
55b9b703ea
2 changed files with 13 additions and 8 deletions
|
|
@ -2236,14 +2236,9 @@ anv_cmd_buffer_flush_state(struct anv_cmd_buffer *cmd_buffer)
|
|||
if (cmd_buffer->dirty & ANV_CMD_BUFFER_DESCRIPTOR_SET_DIRTY)
|
||||
flush_descriptor_sets(cmd_buffer);
|
||||
|
||||
if (cmd_buffer->dirty & (ANV_CMD_BUFFER_PIPELINE_DIRTY | ANV_CMD_BUFFER_RS_DIRTY)) {
|
||||
/* maybe: anv_batch_merge(batch, GEN8_3DSTATE_SF, a, b) */
|
||||
uint32_t *dw;
|
||||
|
||||
dw = anv_batch_emit_dwords(&cmd_buffer->batch, GEN8_3DSTATE_SF_length);
|
||||
for (uint32_t i = 0; i < GEN8_3DSTATE_SF_length; i++)
|
||||
dw[i] = cmd_buffer->rs_state->state_sf[i] | pipeline->state_sf[i];
|
||||
}
|
||||
if (cmd_buffer->dirty & (ANV_CMD_BUFFER_PIPELINE_DIRTY | ANV_CMD_BUFFER_RS_DIRTY))
|
||||
anv_batch_emit_merge(&cmd_buffer->batch,
|
||||
cmd_buffer->rs_state->state_sf, pipeline->state_sf);
|
||||
|
||||
cmd_buffer->vb_dirty = 0;
|
||||
cmd_buffer->dirty = 0;
|
||||
|
|
|
|||
|
|
@ -386,6 +386,16 @@ __gen_combine_address(struct anv_batch *batch, void *location,
|
|||
__dst; \
|
||||
})
|
||||
|
||||
#define anv_batch_emit_merge(batch, dwords0, dwords1) \
|
||||
do { \
|
||||
uint32_t *dw; \
|
||||
\
|
||||
assert(ARRAY_SIZE(dwords0) == ARRAY_SIZE(dwords1)); \
|
||||
dw = anv_batch_emit_dwords((batch), ARRAY_SIZE(dwords0)); \
|
||||
for (uint32_t i = 0; i < ARRAY_SIZE(dwords0); i++) \
|
||||
dw[i] = (dwords0)[i] | (dwords1)[i]; \
|
||||
} while (0)
|
||||
|
||||
struct anv_device_memory {
|
||||
struct anv_bo bo;
|
||||
VkDeviceSize map_size;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue