9 vk::PipelineBindPoint pipeline_bind_point,
10 vk::Pipeline pipeline) {
11 switch (pipeline_bind_point) {
12 case vk::PipelineBindPoint::eGraphics:
13 if (graphics_pipeline_.has_value() &&
14 graphics_pipeline_.value() == pipeline) {
17 graphics_pipeline_ = pipeline;
19 case vk::PipelineBindPoint::eCompute:
20 if (compute_pipeline_.has_value() &&
21 compute_pipeline_.value() == pipeline) {
24 compute_pipeline_ = pipeline;
29 command_buffer.bindPipeline(pipeline_bind_point, pipeline);
33 vk::StencilFaceFlags face_mask,
35 if (stencil_face_flags_.has_value() &&
36 face_mask == stencil_face_flags_.value() &&
37 reference == stencil_reference_) {
40 stencil_face_flags_ = face_mask;
41 stencil_reference_ = reference;
42 command_buffer.setStencilReference(face_mask, reference);
46 uint32_t first_scissor,
47 uint32_t scissor_count,
48 const vk::Rect2D* scissors) {
49 if (first_scissor == 0 && scissor_count == 1) {
50 if (scissors_.has_value() && scissors_.value() == scissors[0]) {
53 scissors_ = scissors[0];
55 command_buffer.setScissor(first_scissor, scissor_count, scissors);
59 uint32_t first_viewport,
60 uint32_t viewport_count,
61 const vk::Viewport* viewports) {
62 if (first_viewport == 0 && viewport_count == 1) {
64 if (viewport_.has_value() && viewport_.value() == viewports[0]) {
67 viewport_ = viewports[0];
69 command_buffer.setViewport(first_viewport, viewport_count, viewports);