- From: Corentin Wallez <cwallez@google.com>
- Date: Fri, 11 Aug 2017 18:16:04 -0400
- To: Dzmitry Malyshau <dmalyshau@mozilla.com>
- Cc: public-gpu@w3.org
- Message-ID: <CAGdfWNO1wXjoWJzZwKeQmwtuu5VhyYkvMGQ_wj9W56drQD521Q@mail.gmail.com>
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:16:49 UTC