2015-04-29 15:50:57 -04:00
|
|
|
#ifndef ISAAC_DRIVER_COMMAND_QUEUE_H
|
|
|
|
#define ISAAC_DRIVER_COMMAND_QUEUE_H
|
|
|
|
|
|
|
|
#include <map>
|
2015-07-21 22:02:36 -07:00
|
|
|
#include "isaac/defines.h"
|
|
|
|
#include "isaac/driver/common.h"
|
|
|
|
#include "isaac/driver/context.h"
|
|
|
|
#include "isaac/driver/device.h"
|
2015-04-29 15:50:57 -04:00
|
|
|
#include "isaac/driver/handle.h"
|
|
|
|
|
|
|
|
namespace isaac
|
|
|
|
{
|
|
|
|
|
|
|
|
namespace driver
|
|
|
|
{
|
|
|
|
|
|
|
|
class Kernel;
|
|
|
|
class Event;
|
|
|
|
class NDRange;
|
|
|
|
class Buffer;
|
|
|
|
|
|
|
|
// Command Queue
|
2015-07-21 22:02:36 -07:00
|
|
|
class ISAACAPI CommandQueue
|
2015-04-29 15:50:57 -04:00
|
|
|
{
|
|
|
|
public:
|
2015-07-26 21:13:28 -07:00
|
|
|
CommandQueue(cl_command_queue const & queue, bool take_ownership = true);
|
2015-04-29 15:50:57 -04:00
|
|
|
CommandQueue(Context const & context, Device const & device, cl_command_queue_properties properties = 0);
|
|
|
|
Context const & context() const;
|
|
|
|
Device const & device() const;
|
|
|
|
void synchronize();
|
2015-08-12 00:46:51 -07:00
|
|
|
void enable_profiling();
|
|
|
|
void disable_profiling();
|
2015-04-29 15:50:57 -04:00
|
|
|
Event enqueue(Kernel const & kernel, NDRange global, driver::NDRange local, std::vector<Event> const *);
|
|
|
|
void write(Buffer const & buffer, bool blocking, std::size_t offset, std::size_t size, void const* ptr);
|
|
|
|
void read(Buffer const & buffer, bool blocking, std::size_t offset, std::size_t size, void* ptr);
|
|
|
|
bool operator==(CommandQueue const & other) const;
|
|
|
|
bool operator<(CommandQueue const & other) const;
|
2015-07-25 21:00:18 -07:00
|
|
|
HANDLE_TYPE(cl_command_queue, CUstream)& handle();
|
2015-04-29 15:50:57 -04:00
|
|
|
private:
|
|
|
|
backend_type backend_;
|
2015-08-03 20:20:27 -07:00
|
|
|
Context context_;
|
2015-04-29 15:50:57 -04:00
|
|
|
Device device_;
|
2015-07-25 21:00:18 -07:00
|
|
|
HANDLE_TYPE(cl_command_queue, CUstream) h_;
|
2015-04-29 15:50:57 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|