- From: Dzmitry Malyshau <dmalyshau@mozilla.com>
- Date: Fri, 11 Aug 2017 18:35:06 -0400
- To: Corentin Wallez <cwallez@google.com>
- Cc: public-gpu@w3.org
- Message-ID: <CAHnMvnLWXD7pOt7Ybrz4ZGTpyJLRBKcgfwMihKcLTWMUHTUyTQ@mail.gmail.com>
Corentin, > I think we all agree on this one, but it is hard to explain: the pipeline state will contain aspects that 1) are required at pipeline compilation in some APIs 2) is supported in all APIs. Yes, that sounds better. > I don't think the "3-layered" hierarchy mentioned the heap / pool / set of #19 <https://github.com/gpuweb/gpuweb/issues/19> but a description of the Vulkan binding model. I'm not referring to the heap/pool/set of #19, I'm talking about Vulkan model. Since Google doesn't want to expose the descriptor pools, you have a 2-layer hierarchy. > We have found that you can avoid the offset alignment requirement by splitting copies, so I suggest we don't expose it. Agreed with the row-pitch alignment and fixing it to 256: the Vulkan DB <http://vulkan.gpuinfo.org/listreports.php?limit=optimalBufferCopyRowPitchAlignment> shows it is at most 128. Can you remind me about the splitting details? I don't think that removing the offset alignment restriction will do much good, even if you have a workaround for D3D12, given that we'd still like to hit the "optimal" driver path on Vulkan, which involves following the optimal offset alignment (which is also 1/64/128 typically). > I don't think this is resolved: in #22 <https://github.com/gpuweb/gpuweb/issues/22> I explain how integer fences can be emulated efficiently on all APIs, and I feel they would be more useful to developers. I don't feel easy about this workaround. IIRC, we decided to reach out to ISVs polling if their actual usage fits D3D12 better. > how about we keep the roadmap at a fairly high-level and start writing documents about different aspects of the API in gpuweb/gpuweb so we can use pull requests and comment things on the PR directly? That sounds good. I suppose we can figure out the exact form of this once we start filling out the details. Regards, Dzmitry On Fri, Aug 11, 2017 at 6:16 PM, Corentin Wallez <cwallez@google.com> wrote: > On Thu, Aug 10, 2017 at 11:47 AM, Dzmitry Malyshau <dmalyshau@mozilla.com> > wrote: > >> Hello GPUWeb, >> >> I'd like to discuss the first draft of the Roadmap document: >> https://github.com/gpuweb/gpuweb/wiki/Roadmap >> >> First of all, big thanks to Myles for starting the effort!!! >> >> +1 this helps framing the work a lot! > > >> Several consensus items raised at least one of my eyebrows: >> >> > Consensus: MVP will only allow one instance of a queue object >> > Consensus: Consecutive render passes don’t inherit state >> > Consensus: In general, include the union of all 3 platform API’s >> pipeline state >> > I think we all agree on this one, but it is hard to explain: the pipeline > state will contain aspects that 1) are required at pipeline compilation in > some APIs 2) is supported in all APIs. > > >> > Consensus: Renderpass information is not included (Vulkan backends will >> create dummy renderpasses) >> > >> > And this one can raise a Google's eyebrow, given that they proposed to >> hide the concept of descriptor pools/maps: >> > Consensus: Generally, use Vulkan’s binding model: A 3-layered >> hierarchy: Descriptors, a set of descriptors, and a (single) collection of >> sets. >> >> I don't think the "3-layered" hierarchy mentioned the heap / pool / set > of #19 <https://github.com/gpuweb/gpuweb/issues/19> but a description of > the Vulkan binding model. > > >> Not necessarily saying these are incorrect (I might have just missed the >> consensus), but it would be great to link to a particular spot in the notes >> where the points are agreed upon. >> >> Clarifications I think we can add safely: >> >> > Open Question: D3D has to keep samplers separately from all other >> resources >> >> Another open question: D3D allows only one of each descriptor heap type >> to be bound at any particular point in the command list. >> >> > Open Question: Aligned to what? >> >> I think we have an answer. >> For buffer copy operations, buffer offsets need to be aligned to 512 >> bytes in D3D12 and to the optimal alignment (as specified by the device >> capabilities) in Vulkan. Buffer row pitches should be correspondingly >> aligned to 256 bytes in D3D12 and the optimal pitch alignment in Vulkan. >> Also see https://github.com/gpuweb/gpuweb/issues/28 >> >> We have found that you can avoid the offset alignment requirement by > splitting copies, so I suggest we don't expose it. Agreed with the > row-pitch alignment and fixing it to 256: the Vulkan DB > <http://vulkan.gpuinfo.org/listreports.php?limit=optimalBufferCopyRowPitchAlignment> > shows it is at most 128. > > >> Regards, >> Dzmitry >> > > > Consensus: Fences will have 1 bit of information in them > > I don't think this is resolved: in #22 > <https://github.com/gpuweb/gpuweb/issues/22> I explain how integer fences > can be emulated efficiently on all APIs, and I feel they would be more > useful to developers. > > With respect to process, how about we keep the roadmap at a fairly > high-level and start writing documents about different aspects of the API > in gpuweb/gpuweb so we can use pull requests and comment things on the PR > directly? There are several subjects that could already start to get a bit > more detailed, like pipeline state and command buffer. The documents would > contain pseudo-code and explanation of how the concept maps to the > different underlying APIs. > > Cheers, > > Corentin >
Received on Friday, 11 August 2017 22:35:43 UTC