On 02/06/2017 12:11 PM, Marek Olšák wrote:
On Mon, Feb 6, 2017 at 5:15 PM, Brian Paul <bri...@vmware.com> wrote:
On 02/03/2017 02:41 PM, Marek Olšák wrote:

On Fri, Feb 3, 2017 at 9:45 PM, Brian Paul <bri...@vmware.com> wrote:

On 02/01/2017 02:23 PM, Brian Paul wrote:


On 01/27/2017 04:00 AM, Marek Olšák wrote:


On Fri, Jan 27, 2017 at 10:05 AM, Nicolai Hähnle <nhaeh...@gmail.com>
wrote:


On 27.01.2017 00:51, Marek Olšák wrote:



From: Marek Olšák <marek.ol...@amd.com>

For lower memory usage and more efficient updates of the buffer
residency
list. (e.g. if drivers keep seeing the same buffer for many
consecutive
"add" calls, the calls can be turned into no-ops trivially)




This makes sense to me, but how are you planning to deal with the bind
flags? They are currently set differently for different upload mgrs.
We
should probably do away with them entirely anyway.



Drivers can set the bind flags they need. Some drivers will set all 3
bind flags. Other drivers don't have to set any.



I need to look into this part more closely.  I think we may have trouble
mixing constants with index/vertex data in our VMware driver...



Marek,

Your patch series, as-is, did indeed cause trouble with our VMware
driver.
We need to keep constants in a separate buffer.

The good news is I don't think this is a huge problem and I've updated (a
subset of) your patches to accommodate both your needs and ours.

The basic idea is to add a pipe_context::get_stream_uploader() hook that
allows drivers to use just one or separate uploaders for
vertex/index/constant data.  Plus, I added a
pipe_context::unmap_stream_uploaders() helper, but this isn't strictly
necessary.

WIP patch attached (only lightly tested).  Let me know what you think.


Can we simply add these 2 fields into pipe_context instead of the
callback?

pipe_context::stream_uploader // vertex + index
pipe_context::const_uploader


Yeah, that might work too.  Though, now I have to test the case of vertex
data and index data being in the same VBO.  We may need three uploader
pointers...

What's the issue with svga that it needs different buffers for each
type? OpenGL allows the same buffer to be used for vertex, index,
const, even the same buffer range.

Our virtual device protocol uses DX10 conventions and in DX10, constant buffers are distinct from vertex/index buffers. That is, you can't set both D3D10_BIND_CONSTANT_BUFFER and D3D10_BIND_VERTEX_BUFFER for one buffer. Luckily, we haven't come across any GL apps that need that (and it wouldn't be too hard to work around it if needed).

I was pretty sure that vertex+index data in one buffer was OK but I wanted to check. Since I don't think we have any piglit tests (or apps) that exercise that specific case, I just wrote one and it seems to work fine.

So, pipe_context::stream_uploader + pipe_context::const_uploader should be OK for us. Do you want to implement that?

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to