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 upLower level GPU abstraction #1102
Comments
This comment has been minimized.
This comment has been minimized.
|
We already have these 3 levels of resource type abstraction:
So the transition would be to make gfx_core operate on |
This comment has been minimized.
This comment has been minimized.
This is really difficult with regards to Vulkan/D3D12 as we would have to provide a very thin layer above those two APIs exposing concepts like resource barriers and explicit memory control. There was a talk by Chajdas concerning this some time ago (http://gpuopen.com/wp-content/uploads/2016/03/d3d12_vulkan_lessons_learned.pdf), which states that such a low level wrapper might be the best way for implementation. I assume the new architecture would be to implement |
This comment has been minimized.
This comment has been minimized.
|
@msiglreith thanks for the info! You seem to not only understand the goal clearly, but also already having the first bits of the implementation. That's pretty impressive and exciting to see |
homu
added a commit
that referenced
this issue
Jan 26, 2017
This comment has been minimized.
This comment has been minimized.
|
Small status update for New factory interface (haven't worked out the factory methods for RenderPass and Signature so far): fn create_shader_library(&mut self, code: &[u8]) -> Result<R::ShaderLib, shade::CreateShaderError>;
fn create_graphics_pipelines<'a>(&mut self, &[(&GraphicsShaderSet<R>, &R::PipelineSignature, &R::SubPass, &pso::GraphicsPipelineDesc)])
-> Vec<Result<R::PipelineStateObject, pso::CreationError>>;
fn create_compute_pipelines(&mut self) -> Vec<Result<R::PipelineStateObject, pso::CreationError>>;I'm still a bit unsure about how to handle |
msiglreith
referenced this issue
Aug 7, 2017
Merged
[ll] Initial work for command buffer rework [37/..] #1419
msiglreith
referenced this issue
Aug 16, 2017
Merged
[ll] Groundwork for descriptor sets [39/..] #1430
kvark
added this to the
Low Level release milestone
Sep 15, 2017
msiglreith
added
the
api: ll
label
Oct 28, 2017
This comment has been minimized.
This comment has been minimized.
|
Conceptually, this is implemented |
kvark commentedDec 24, 2016
We need to provide a level of GPU abstraction that doesn't have any overhead over using some API bindings directly. That means no resource lifetime management and preferably no heap allocation.
If we try to implement such a layer from scratch, we'd end up re-using most of the existing code from gfx_core and the backends. Thus, I believe we should steer the gfx_core towards this no-overhead goal, reaching it before we stabilize the API.
One effect of this transition would be - clearer separation between gfx_render and gfx_core. Another - opened use cases for applications demanding no overhead, like webrender. These applications may have limited use cases, allowing them to manage resource lifetimes more efficiently than us.