Re: Roadmap wiki

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