1 << VK_DYNAMIC_STATE_SCISSOR;
}
+ if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
+ typed_memcpy(&state->sample_location,
+ &cmd_buffer->state.dynamic.sample_location, 1);
+ }
+
if (state->flags & RADV_META_SAVE_COMPUTE_PIPELINE) {
assert(!(state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE));
RADV_CMD_DIRTY_DYNAMIC_SCISSOR;
}
+ if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
+ typed_memcpy(&cmd_buffer->state.dynamic.sample_location.locations,
+ &state->sample_location.locations, 1);
+
+ cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS;
+ }
+
if (state->flags & RADV_META_SAVE_COMPUTE_PIPELINE) {
radv_CmdBindPipeline(radv_cmd_buffer_to_handle(cmd_buffer),
VK_PIPELINE_BIND_POINT_COMPUTE,
RADV_META_SAVE_DESCRIPTORS = (1 << 2),
RADV_META_SAVE_GRAPHICS_PIPELINE = (1 << 3),
RADV_META_SAVE_COMPUTE_PIPELINE = (1 << 4),
+ RADV_META_SAVE_SAMPLE_LOCATIONS = (1 << 5),
};
struct radv_meta_saved_state {
struct radv_pipeline *old_pipeline;
struct radv_viewport_state viewport;
struct radv_scissor_state scissor;
+ struct radv_sample_locations_state sample_location;
char push_constants[128];