Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up[ll] First batch of device integration changes [36/..] #1391
Conversation
msiglreith
added some commits
May 1, 2017
msiglreith
added some commits
Jul 12, 2017
kvark
added
the
status: working
label
Jul 23, 2017
This comment has been minimized.
This comment has been minimized.
|
OMG IT'S HAPPENING |
This comment has been minimized.
This comment has been minimized.
|
Thank you for the detailed overview! |
kvark
merged commit 840dc0f
into
master
Jul 24, 2017
2 of 4 checks passed
kvark
removed
the
status: working
label
Jul 24, 2017
msiglreith
deleted the
ll
branch
Jul 24, 2017
msiglreith
restored the
ll
branch
Jul 24, 2017
msiglreith
referenced this pull request
Jul 28, 2017
Closed
Constrain all the back-end type under a single trait #700
msiglreith
deleted the
ll
branch
Aug 8, 2017
bors bot
added a commit
that referenced
this pull request
Oct 11, 2017
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
msiglreith commentedJul 23, 2017
•
edited
Merge the first batch of changes from
llinto master. Not everything from #1321 is done atm but to avoid that the branch diverges even more from the current master.This PR contains the most parts of the device integration. We follow the concepts introduced by the next-gen APIs (Vulkan/D3D12/Metal):
Unified window entry point: Obtain a
Surfaceobject from a window, which is a logic representation of a native window/display, and build aSwapChainto the associatedSurface. Swapchains are the window interface for the GPU. Every swapchain has an internal backbuffer (list of images) which we can render to and present.CommandQueue: Gpu devices offer multiple execution pipelines for graphics, compute and DMA transfer operations. IntroducingGeneral/Graphics/Compute/TransferQueues where we can submit now command buffers for execution.Synchronization: Offering two synchronization primitives:
SemaphoreandFence.Semaphore are suited for GPU-GPU synchronization, usually used for synchronizing with the presentation engine by waiting til a backbuffer image has been acquired and present it once the rendering has finished.
Fences are for CPU-GPU synchronization and are used to ensure that resources can be safely reseted (e.g reset command pools, overwrite memory, ..)
CommandPool: Command buffers are now combined into pools which areSendbut notSync! So each thread should have it's designated command pool if we want to record commands on it. Once a command buffer has been recorded, aSubmitobject will be returned which can be send to the main thread for submission to a queue. Be sure to ensure via synchronization primitives that no command buffer is in use when reseting the pool!Adapter: Initialization process gets a bit more explicit, similar to the swapchain creation.Adapters are logical representation of the available GPUs of the system. Users can decide whichAdapterto open (= device creation) with a desired number of queues.Backend: Combining the different new trait implementations into a backend trait (similar to theResourcetrait). This should help users to write backend acgnostic code (SurfaceandSwapChainare window specific!)