anv: support rasterizer discard dynamic state
Implemented by emitting 3DSTATE_STREAMOUT packet. v2: logic fixes + merge and emit properly all contents (Lionel) Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10366>
This commit is contained in:
@@ -101,6 +101,7 @@ const struct anv_dynamic_state default_dynamic_state = {
|
||||
.dyn_vbo_stride = 0,
|
||||
.dyn_vbo_size = 0,
|
||||
.color_writes = 0xff,
|
||||
.raster_discard = 0,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -189,6 +190,8 @@ anv_dynamic_state_copy(struct anv_dynamic_state *dest,
|
||||
ANV_CMP_COPY(dyn_vbo_stride, ANV_CMD_DIRTY_DYNAMIC_VERTEX_INPUT_BINDING_STRIDE);
|
||||
ANV_CMP_COPY(dyn_vbo_size, ANV_CMD_DIRTY_DYNAMIC_VERTEX_INPUT_BINDING_STRIDE);
|
||||
|
||||
ANV_CMP_COPY(raster_discard, ANV_CMD_DIRTY_DYNAMIC_RASTERIZER_DISCARD_ENABLE);
|
||||
|
||||
if (copy_mask & ANV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS) {
|
||||
dest->sample_locations.samples = src->sample_locations.samples;
|
||||
typed_memcpy(dest->sample_locations.locations,
|
||||
@@ -504,6 +507,17 @@ void anv_CmdBindPipeline(
|
||||
}
|
||||
}
|
||||
|
||||
void anv_CmdSetRasterizerDiscardEnableEXT(
|
||||
VkCommandBuffer commandBuffer,
|
||||
VkBool32 rasterizerDiscardEnable)
|
||||
{
|
||||
ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
|
||||
cmd_buffer->state.gfx.dynamic.raster_discard = rasterizerDiscardEnable;
|
||||
|
||||
cmd_buffer->state.gfx.dirty |= ANV_CMD_DIRTY_DYNAMIC_RASTERIZER_DISCARD_ENABLE;
|
||||
}
|
||||
|
||||
void anv_CmdSetViewport(
|
||||
VkCommandBuffer commandBuffer,
|
||||
uint32_t firstViewport,
|
||||
|
Reference in New Issue
Block a user