tu: Implement fallback linear staging blit for CopyImage
[mesa.git] / src / gallium / state_trackers / clover / core / queue.hpp
index 81b9781cf47d0bca4f326e191ac1c908b8399699..bddb86c0e4c9c3acab1e2de94b3a5ccd5fbb89c0 100644 (file)
@@ -24,6 +24,7 @@
 #define CLOVER_CORE_QUEUE_HPP
 
 #include <deque>
+#include <mutex>
 
 #include "core/object.hpp"
 #include "core/context.hpp"
@@ -37,7 +38,7 @@ namespace clover {
 
    class command_queue : public ref_counter, public _cl_command_queue {
    public:
-      command_queue(context &ctx, device &dev,
+      command_queue(clover::context &ctx, clover::device &dev,
                     cl_command_queue_properties props);
       ~command_queue();
 
@@ -47,11 +48,11 @@ namespace clover {
 
       void flush();
 
-      cl_command_queue_properties props() const;
+      cl_command_queue_properties properties() const;
       bool profiling_enabled() const;
 
-      context &ctx;
-      device &dev;
+      const intrusive_ref<clover::context> context;
+      const intrusive_ref<clover::device> device;
 
       friend class resource;
       friend class root_resource;
@@ -65,11 +66,12 @@ namespace clover {
    private:
       /// Serialize a hardware event with respect to the previous ones,
       /// and push it to the pending list.
-      void sequence(hard_event *ev);
+      void sequence(hard_event &ev);
 
-      cl_command_queue_properties _props;
+      cl_command_queue_properties props;
       pipe_context *pipe;
-      std::deque<intrusive_ptr<hard_event>> queued_events;
+      std::mutex queued_events_mutex;
+      std::deque<intrusive_ref<hard_event>> queued_events;
    };
 }