vk: Add support for dynamic and pipeline color blend state

This commit is contained in:
Kristian Høgsberg
2015-05-26 17:12:18 -07:00
parent 2514ac5547
commit a1d30f867d
3 changed files with 113 additions and 8 deletions

View File

@@ -2490,6 +2490,8 @@ void anv_CmdBindDynamicStateObject(
cmd_buffer->dirty |= ANV_CMD_BUFFER_RS_DIRTY;
break;
case VK_STATE_BIND_POINT_COLOR_BLEND:
cmd_buffer->cb_state = (struct anv_dynamic_cb_state *) dynamicState;
cmd_buffer->dirty |= ANV_CMD_BUFFER_CB_DIRTY;
break;
case VK_STATE_BIND_POINT_DEPTH_STENCIL:
cmd_buffer->ds_state = (struct anv_dynamic_ds_state *) dynamicState;
@@ -2773,15 +2775,19 @@ anv_cmd_buffer_flush_state(struct anv_cmd_buffer *cmd_buffer)
if (cmd_buffer->dirty & (ANV_CMD_BUFFER_CB_DIRTY | ANV_CMD_BUFFER_DS_DIRTY)) {
struct anv_state state;
if (cmd_buffer->ds_state)
if (cmd_buffer->ds_state == NULL)
state = anv_cmd_buffer_emit_dynamic(cmd_buffer,
cmd_buffer->cb_state->state_color_calc,
GEN8_COLOR_CALC_STATE_length, 32);
else if (cmd_buffer->cb_state == NULL)
state = anv_cmd_buffer_emit_dynamic(cmd_buffer,
cmd_buffer->ds_state->state_color_calc,
GEN8_COLOR_CALC_STATE_length, 32);
else
state = anv_cmd_buffer_merge_dynamic(cmd_buffer,
cmd_buffer->ds_state->state_color_calc,
cmd_buffer->cb_state->state_color_calc,
GEN8_COLOR_CALC_STATE_length, 32);
else
state = anv_cmd_buffer_emit_dynamic(cmd_buffer,
cmd_buffer->cb_state->state_color_calc,
GEN8_COLOR_CALC_STATE_length, 32);
anv_batch_emit(&cmd_buffer->batch,
GEN8_3DSTATE_CC_STATE_POINTERS,