Primitive Restart implementation

This cl is a very basic implementation of primitive restart
which records every segment of at least 1 primitive into a
vector of index buffers and primitive counts which are then
looped over at draw time. There's no caching involved, so
the primitive restart segments will get recomputed at every
draw, until a caching mechanism is introduced.

Tests: dEQP-VK.pipeline.input_assembly.primitive_restart.*

Bug b/118619338

Change-Id: If2f88ffb7971d1aa7d1451c7916f0ba65a2e09de
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/31032
Tested-by: Alexis Hétu <sugoi@google.com>
Presubmit-Ready: Alexis Hétu <sugoi@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Chris Forbes <chrisforbes@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Vulkan/VkPipeline.hpp b/src/Vulkan/VkPipeline.hpp
index d14a547..0f07018 100644
--- a/src/Vulkan/VkPipeline.hpp
+++ b/src/Vulkan/VkPipeline.hpp
@@ -80,12 +80,14 @@
 	const VkViewport& getViewport() const;
 	const sw::Color<float>& getBlendConstants() const;
 	bool hasDynamicState(VkDynamicState dynamicState) const;
+	bool hasPrimitiveRestartEnable() const { return primitiveRestartEnable; }
 
 private:
 	sw::SpirvShader *vertexShader = nullptr;
 	sw::SpirvShader *fragmentShader = nullptr;
 
 	uint32_t dynamicStateFlags = 0;
+	bool primitiveRestartEnable = false;
 	sw::Context context;
 	VkRect2D scissor;
 	VkViewport viewport;