Lines Matching defs:state
38 radv_suspend_queries(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_buffer)
41 if (cmd_buffer->state.active_pipeline_queries > 0) {
42 cmd_buffer->state.flush_bits &= ~RADV_CMD_FLAG_START_PIPELINE_STATS;
43 cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_STOP_PIPELINE_STATS;
47 if (cmd_buffer->state.active_occlusion_queries > 0) {
52 if (cmd_buffer->state.prims_gen_query_enabled) {
53 cmd_buffer->state.suspend_streamout = true;
59 state->active_pipeline_gds_queries = cmd_buffer->state.active_pipeline_gds_queries;
60 cmd_buffer->state.active_pipeline_gds_queries = 0;
65 radv_resume_queries(const struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_buffer)
68 if (cmd_buffer->state.active_pipeline_queries > 0) {
69 cmd_buffer->state.flush_bits &= ~RADV_CMD_FLAG_STOP_PIPELINE_STATS;
70 cmd_buffer->state.flush_bits |= RADV_CMD_FLAG_START_PIPELINE_STATS;
74 if (cmd_buffer->state.active_occlusion_queries > 0) {
79 if (cmd_buffer->state.prims_gen_query_enabled) {
80 cmd_buffer->state.suspend_streamout = false;
84 cmd_buffer->state.active_pipeline_gds_queries = state->active_pipeline_gds_queries;
89 radv_meta_save(struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_buffer,
100 state->flags = flags;
102 if (state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE) {
103 assert(!(state->flags & RADV_META_SAVE_COMPUTE_PIPELINE));
105 state->old_graphics_pipeline = cmd_buffer->state.graphics_pipeline;
108 state->dynamic.viewport.count = cmd_buffer->state.dynamic.viewport.count;
109 typed_memcpy(state->dynamic.viewport.viewports, cmd_buffer->state.dynamic.viewport.viewports,
111 typed_memcpy(state->dynamic.viewport.xform, cmd_buffer->state.dynamic.viewport.xform,
115 state->dynamic.scissor.count = cmd_buffer->state.dynamic.scissor.count;
116 typed_memcpy(state->dynamic.scissor.scissors, cmd_buffer->state.dynamic.scissor.scissors,
119 state->dynamic.line_stipple.factor = cmd_buffer->state.dynamic.line_stipple.factor;
120 state->dynamic.line_stipple.pattern = cmd_buffer->state.dynamic.line_stipple.pattern;
122 state->dynamic.cull_mode = cmd_buffer->state.dynamic.cull_mode;
123 state->dynamic.front_face = cmd_buffer->state.dynamic.front_face;
125 state->dynamic.primitive_topology = cmd_buffer->state.dynamic.primitive_topology;
127 state->dynamic.depth_test_enable = cmd_buffer->state.dynamic.depth_test_enable;
128 state->dynamic.depth_write_enable = cmd_buffer->state.dynamic.depth_write_enable;
129 state->dynamic.depth_compare_op = cmd_buffer->state.dynamic.depth_compare_op;
130 state->dynamic.depth_bounds_test_enable = cmd_buffer->state.dynamic.depth_bounds_test_enable;
131 state->dynamic.stencil_test_enable = cmd_buffer->state.dynamic.stencil_test_enable;
133 state->dynamic.stencil_op.front.compare_op = cmd_buffer->state.dynamic.stencil_op.front.compare_op;
134 state->dynamic.stencil_op.front.fail_op = cmd_buffer->state.dynamic.stencil_op.front.fail_op;
135 state->dynamic.stencil_op.front.pass_op = cmd_buffer->state.dynamic.stencil_op.front.pass_op;
136 state->dynamic.stencil_op.front.depth_fail_op =
137 cmd_buffer->state.dynamic.stencil_op.front.depth_fail_op;
139 state->dynamic.stencil_op.back.compare_op = cmd_buffer->state.dynamic.stencil_op.back.compare_op;
140 state->dynamic.stencil_op.back.fail_op = cmd_buffer->state.dynamic.stencil_op.back.fail_op;
141 state->dynamic.stencil_op.back.pass_op = cmd_buffer->state.dynamic.stencil_op.back.pass_op;
142 state->dynamic.stencil_op.back.depth_fail_op =
143 cmd_buffer->state.dynamic.stencil_op.back.depth_fail_op;
145 state->dynamic.line_width = cmd_buffer->state.dynamic.line_width;
147 state->dynamic.depth_bias.bias = cmd_buffer->state.dynamic.depth_bias.bias;
148 state->dynamic.depth_bias.clamp = cmd_buffer->state.dynamic.depth_bias.clamp;
149 state->dynamic.depth_bias.slope = cmd_buffer->state.dynamic.depth_bias.slope;
151 memcpy(state->dynamic.blend_constants, cmd_buffer->state.dynamic.blend_constants,
152 sizeof(state->dynamic.blend_constants));
154 state->dynamic.depth_bounds.min = cmd_buffer->state.dynamic.depth_bounds.min;
155 state->dynamic.depth_bounds.max = cmd_buffer->state.dynamic.depth_bounds.max;
157 state->dynamic.stencil_compare_mask.front = cmd_buffer->state.dynamic.stencil_compare_mask.front;
158 state->dynamic.stencil_compare_mask.back = cmd_buffer->state.dynamic.stencil_compare_mask.back;
160 state->dynamic.stencil_write_mask.front = cmd_buffer->state.dynamic.stencil_write_mask.front;
161 state->dynamic.stencil_write_mask.back = cmd_buffer->state.dynamic.stencil_write_mask.back;
163 state->dynamic.stencil_reference.front = cmd_buffer->state.dynamic.stencil_reference.front;
164 state->dynamic.stencil_reference.back = cmd_buffer->state.dynamic.stencil_reference.back;
166 state->dynamic.fragment_shading_rate.size = cmd_buffer->state.dynamic.fragment_shading_rate.size;
167 state->dynamic.fragment_shading_rate.combiner_ops[0] =
168 cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[0];
169 state->dynamic.fragment_shading_rate.combiner_ops[1] =
170 cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[1];
172 state->dynamic.depth_bias_enable = cmd_buffer->state.dynamic.depth_bias_enable;
174 state->dynamic.primitive_restart_enable = cmd_buffer->state.dynamic.primitive_restart_enable;
176 state->dynamic.rasterizer_discard_enable = cmd_buffer->state.dynamic.rasterizer_discard_enable;
178 state->dynamic.logic_op = cmd_buffer->state.dynamic.logic_op;
180 state->dynamic.color_write_enable = cmd_buffer->state.dynamic.color_write_enable;
182 state->dynamic.discard_rectangle.count = cmd_buffer->state.dynamic.discard_rectangle.count;
183 typed_memcpy(state->dynamic.discard_rectangle.rectangles,
184 cmd_buffer->state.dynamic.discard_rectangle.rectangles,
188 if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
189 typed_memcpy(&state->dynamic.sample_location, &cmd_buffer->state.dynamic.sample_location, 1);
192 if (state->flags & RADV_META_SAVE_COMPUTE_PIPELINE) {
193 assert(!(state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE));
195 state->old_compute_pipeline = cmd_buffer->state.compute_pipeline;
198 if (state->flags & RADV_META_SAVE_DESCRIPTORS) {
199 state->old_descriptor_set0 = descriptors_state->sets[0];
200 if (!(descriptors_state->valid & 1) || !state->old_descriptor_set0)
201 state->flags &= ~RADV_META_SAVE_DESCRIPTORS;
204 if (state->flags & RADV_META_SAVE_CONSTANTS) {
205 memcpy(state->push_constants, cmd_buffer->push_constants, MAX_PUSH_CONSTANTS_SIZE);
208 if (state->flags & RADV_META_SAVE_PASS) {
209 state->pass = cmd_buffer->state.pass;
210 state->subpass = cmd_buffer->state.subpass;
211 state->framebuffer = cmd_buffer->state.framebuffer;
212 state->attachments = cmd_buffer->state.attachments;
213 state->render_area = cmd_buffer->state.render_area;
216 if (state->flags & RADV_META_SUSPEND_PREDICATING) {
217 state->predicating = cmd_buffer->state.predicating;
218 cmd_buffer->state.predicating = false;
221 radv_suspend_queries(state, cmd_buffer);
225 radv_meta_restore(const struct radv_meta_saved_state *state, struct radv_cmd_buffer *cmd_buffer)
227 VkPipelineBindPoint bind_point = state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE
231 if (state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE) {
233 radv_pipeline_to_handle(&state->old_graphics_pipeline->base));
235 cmd_buffer->state.dirty |= RADV_CMD_DIRTY_PIPELINE;
238 cmd_buffer->state.dynamic.viewport.count = state->dynamic.viewport.count;
239 typed_memcpy(cmd_buffer->state.dynamic.viewport.viewports, state->dynamic.viewport.viewports,
241 typed_memcpy(cmd_buffer->state.dynamic.viewport.xform, state->dynamic.viewport.xform,
245 cmd_buffer->state.dynamic.scissor.count = state->dynamic.scissor.count;
246 typed_memcpy(cmd_buffer->state.dynamic.scissor.scissors, state->dynamic.scissor.scissors,
249 cmd_buffer->state.dynamic.line_stipple.factor = state->dynamic.line_stipple.factor;
250 cmd_buffer->state.dynamic.line_stipple.pattern = state->dynamic.line_stipple.pattern;
252 cmd_buffer->state.dynamic.cull_mode = state->dynamic.cull_mode;
253 cmd_buffer->state.dynamic.front_face = state->dynamic.front_face;
255 cmd_buffer->state.dynamic.primitive_topology = state->dynamic.primitive_topology;
257 cmd_buffer->state.dynamic.depth_test_enable = state->dynamic.depth_test_enable;
258 cmd_buffer->state.dynamic.depth_write_enable = state->dynamic.depth_write_enable;
259 cmd_buffer->state.dynamic.depth_compare_op = state->dynamic.depth_compare_op;
260 cmd_buffer->state.dynamic.depth_bounds_test_enable = state->dynamic.depth_bounds_test_enable;
261 cmd_buffer->state.dynamic.stencil_test_enable = state->dynamic.stencil_test_enable;
263 cmd_buffer->state.dynamic.stencil_op.front.compare_op = state->dynamic.stencil_op.front.compare_op;
264 cmd_buffer->state.dynamic.stencil_op.front.fail_op = state->dynamic.stencil_op.front.fail_op;
265 cmd_buffer->state.dynamic.stencil_op.front.pass_op = state->dynamic.stencil_op.front.pass_op;
266 cmd_buffer->state.dynamic.stencil_op.front.depth_fail_op =
267 state->dynamic.stencil_op.front.depth_fail_op;
269 cmd_buffer->state.dynamic.stencil_op.back.compare_op = state->dynamic.stencil_op.back.compare_op;
270 cmd_buffer->state.dynamic.stencil_op.back.fail_op = state->dynamic.stencil_op.back.fail_op;
271 cmd_buffer->state.dynamic.stencil_op.back.pass_op = state->dynamic.stencil_op.back.pass_op;
272 cmd_buffer->state.dynamic.stencil_op.back.depth_fail_op =
273 state->dynamic.stencil_op.back.depth_fail_op;
275 cmd_buffer->state.dynamic.line_width = state->dynamic.line_width;
277 cmd_buffer->state.dynamic.depth_bias.bias = state->dynamic.depth_bias.bias;
278 cmd_buffer->state.dynamic.depth_bias.clamp = state->dynamic.depth_bias.clamp;
279 cmd_buffer->state.dynamic.depth_bias.slope = state->dynamic.depth_bias.slope;
281 memcpy(cmd_buffer->state.dynamic.blend_constants, state->dynamic.blend_constants,
282 sizeof(state->dynamic.blend_constants));
284 cmd_buffer->state.dynamic.depth_bounds.min = state->dynamic.depth_bounds.min;
285 cmd_buffer->state.dynamic.depth_bounds.max = state->dynamic.depth_bounds.max;
287 cmd_buffer->state.dynamic.stencil_compare_mask.front = state->dynamic.stencil_compare_mask.front;
288 cmd_buffer->state.dynamic.stencil_compare_mask.back = state->dynamic.stencil_compare_mask.back;
290 cmd_buffer->state.dynamic.stencil_write_mask.front = state->dynamic.stencil_write_mask.front;
291 cmd_buffer->state.dynamic.stencil_write_mask.back = state->dynamic.stencil_write_mask.back;
293 cmd_buffer->state.dynamic.stencil_reference.front = state->dynamic.stencil_reference.front;
294 cmd_buffer->state.dynamic.stencil_reference.back = state->dynamic.stencil_reference.back;
296 cmd_buffer->state.dynamic.fragment_shading_rate.size = state->dynamic.fragment_shading_rate.size;
297 cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[0] =
298 state->dynamic.fragment_shading_rate.combiner_ops[0];
299 cmd_buffer->state.dynamic.fragment_shading_rate.combiner_ops[1] =
300 state->dynamic.fragment_shading_rate.combiner_ops[1];
302 cmd_buffer->state.dynamic.depth_bias_enable = state->dynamic.depth_bias_enable;
304 cmd_buffer->state.dynamic.primitive_restart_enable = state->dynamic.primitive_restart_enable;
306 cmd_buffer->state.dynamic.rasterizer_discard_enable = state->dynamic.rasterizer_discard_enable;
308 cmd_buffer->state.dynamic.logic_op = state->dynamic.logic_op;
310 cmd_buffer->state.dynamic.color_write_enable = state->dynamic.color_write_enable;
312 cmd_buffer->state.dynamic.discard_rectangle.count = state->dynamic.discard_rectangle.count;
313 typed_memcpy(cmd_buffer->state.dynamic.discard_rectangle.rectangles,
314 state->dynamic.discard_rectangle.rectangles,
317 cmd_buffer->state.dirty |=
334 if (state->flags & RADV_META_SAVE_SAMPLE_LOCATIONS) {
335 typed_memcpy(&cmd_buffer->state.dynamic.sample_location.locations,
336 &state->dynamic.sample_location.locations, 1);
338 cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DYNAMIC_SAMPLE_LOCATIONS;
341 if (state->flags & RADV_META_SAVE_COMPUTE_PIPELINE) {
342 if (state->old_compute_pipeline) {
344 radv_pipeline_to_handle(&state->old_compute_pipeline->base));
348 if (state->flags & RADV_META_SAVE_DESCRIPTORS) {
349 radv_set_descriptor_set(cmd_buffer, bind_point, state->old_descriptor_set0, 0);
352 if (state->flags & RADV_META_SAVE_CONSTANTS) {
355 if (state->flags & RADV_META_SAVE_GRAPHICS_PIPELINE)
359 MAX_PUSH_CONSTANTS_SIZE, state->push_constants);
362 if (state->flags & RADV_META_SAVE_PASS) {
363 cmd_buffer->state.pass = state->pass;
364 cmd_buffer->state.subpass = state->subpass;
365 cmd_buffer->state.framebuffer = state->framebuffer;
366 cmd_buffer->state.attachments = state->attachments;
367 cmd_buffer->state.render_area = state->render_area;
368 if (state->subpass)
369 cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FRAMEBUFFER;
372 if (state->flags & RADV_META_SUSPEND_PREDICATING)
373 cmd_buffer->state.predicating = state->predicating;
375 radv_resume_queries(state, cmd_buffer);