Aeva / dream_machine

Aeva's Dream Machine ✨
Apache License 2.0
3 stars 0 forks source link

D3D12 Backend #14

Open Aeva opened 4 years ago

Aeva commented 4 years ago

Issue #7 is probably a prerequisite to this.

So far the basic implementation workflow for a new backend is:

  1. ~New directory for the backend, solver.py, backend enum (constants.py), add switching to main.py, add an example project to start working from.~
  2. ~Start populating the main.cpp template and window.py expander. Get a window w/ a valid rendering context working.~
  3. ~Create swapchain targets~, resizing hooks, ~presenting~.
  4. Command lists, frame fencing, etc
  5. Back buffer clearing just to feel something
  6. User Vars
  7. Shader Compilation
  8. Basic Full Screen Drawing

The above is based on the work so far on the fluffy targets, so it's missing some obviously very important stuff (command lists, resource barriers, etc) which the specifics thereof will have to be figured out as part of this. Or while implementing the Vulkan backend, whichever happens first.

Aeva commented 4 years ago

~The stuff in d3d12/bootstrap.cpp should probably just be made into a normal function and moved into d3d12_util.h/cpp, as there is a lot here, and I foresee this being largely the same for every program. Corresponding globals should also be moved as well.~ Done