IterationCompiler.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef MANDEL_ITERATIONCOMPILER_H
  2. #define MANDEL_ITERATIONCOMPILER_H
  3. #include "Generators.h"
  4. #include "ClGenerators.h"
  5. #include "IterationIR.h"
  6. #include <memory>
  7. namespace mnd
  8. {
  9. struct ExecData;
  10. class CompiledGenerator;
  11. class CompiledClGenerator;
  12. // forward declare
  13. class MandelContext;
  14. class MandelDevice;
  15. enum class GeneratorType : int;
  16. //mnd::ExecData compile(mnd::MandelContext& mndCtxt);
  17. std::unique_ptr<mnd::MandelGenerator> compileCpu(mnd::MandelContext& mndCtxt,
  18. const IterationFormula& z0,
  19. const IterationFormula& z);
  20. std::vector<std::pair<mnd::GeneratorType, std::unique_ptr<mnd::MandelGenerator>>> compileOpenCl(const mnd::MandelDevice& dev,
  21. const IterationFormula& z0,
  22. const IterationFormula& z);
  23. }
  24. //void squareTest();
  25. namespace mnd
  26. {
  27. CompiledGenerator compile(const ir::Formula& formula);
  28. std::unique_ptr<MandelGenerator> compileCl(const ir::Formula& formula, const MandelDevice& md);
  29. }
  30. #endif // MANDEL_ITERATIONCOMPILER_H