Context refactor: from OpenGL-like state to Vulkan-like state

Overview of the changes:

The Context class has been split into more Vulkan related functional
elements:
- The IndexBuffer class, which contains the index buffer information
  and has been extended to also the functionality to support
  primitive restart. Should we need primitive restart related caching
  in the future, this would be the place to do it.
- The Attachments class, which contains information about render
  targets and depth and stencil buffers
- The Inputs class, which contains information about descriptor sets
  and input streams.
- The GraphicsState is a completely constant class which can only be
  modified in the constructor, which represents the state of a
  graphics pipeline, which never changes past construction. The
  GraphicsState can be combined with a DynamicState structure in
  order to create a complete state used by rendering.

Also to note:
- The DynamicState class in now in Context.hpp, in order for the
  GraphicsState to have functionality related to it.
- PushConstantStorage was moved to vk::Pipeline, as it is used by
  both the Graphics Pipeline and the Compute Pipeline.
- Viewport/scissor functionality is contained in the GraphicsState
  and was removed from the Renderer.
- All *Processor::update() functions now receive only the information
  that they require, rather that having access to the entire context.

Bug: b/132280877

Change-Id: I74f2582d34e45aa1e7b192dbd2b9b770e7af118d
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/48830
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
Commit-Queue: Alexis Hétu <sugoi@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/ComputeProgram.hpp b/src/Pipeline/ComputeProgram.hpp
index c188546..839f494 100644
--- a/src/Pipeline/ComputeProgram.hpp
+++ b/src/Pipeline/ComputeProgram.hpp
@@ -17,9 +17,9 @@
 
 #include "SpirvShader.hpp"
 
-#include "Device/Context.hpp"
 #include "Reactor/Coroutine.hpp"
 #include "Vulkan/VkDescriptorSet.hpp"
+#include "Vulkan/VkPipeline.hpp"
 
 #include <functional>
 
@@ -58,7 +58,7 @@
 	    vk::DescriptorSet::Array const &descriptorSetObjects,
 	    vk::DescriptorSet::Bindings const &descriptorSetBindings,
 	    vk::DescriptorSet::DynamicOffsets const &descriptorDynamicOffsets,
-	    PushConstantStorage const &pushConstants,
+	    vk::Pipeline::PushConstantStorage const &pushConstants,
 	    uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
 	    uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
 
@@ -76,7 +76,7 @@
 		uint32_t invocationsPerSubgroup;   // SPIR-V: "SubgroupSize"
 		uint32_t subgroupsPerWorkgroup;    // SPIR-V: "NumSubgroups"
 		uint32_t invocationsPerWorkgroup;  // Total number of invocations per workgroup.
-		PushConstantStorage pushConstants;
+		vk::Pipeline::PushConstantStorage pushConstants;
 		const Constants *constants;
 	};