intel: make PIPELINE_SELECT a queue state
Mantle has the concept of a universal queue, and it can switch between
GRAPHICS and COMPUTE within a command buffer. On the other hand, an XGL
command buffer is created with either XGL_QUEUE_TYPE_GRAPHICS or
XGL_QUEUE_TYPE_COMPUTE. Swtiching to another queue type in the middle of a
command buffer is not allowed. Letting the queue emit PIPELINE_SELECT allows
us to avoid unnecessary PIPELINE_SELECTs in the command buffer.
diff --git a/icd/intel/queue.h b/icd/intel/queue.h
index 0153b15..875fc7a 100644
--- a/icd/intel/queue.h
+++ b/icd/intel/queue.h
@@ -39,10 +39,12 @@
struct intel_dev *dev;
enum intel_ring_type ring;
- /* for context initialization and atomic counters */
- struct intel_bo *bo;
+ struct intel_bo *atomic_bo;
+ struct intel_bo *select_graphics_bo;
+ struct intel_bo *select_compute_bo;
struct intel_cmd *last_submitted_cmd;
+ int last_pipeline_select;
};
static inline struct intel_queue *intel_queue(XGL_QUEUE queue)