baldurk / renderdoc

RenderDoc is a stand-alone graphics debugging tool.
https://renderdoc.org
MIT License
9.06k stars 1.35k forks source link

Display GL_POINTS instead of GL_NONE when capturing points. #3473

Closed maierlars closed 2 weeks ago

maierlars commented 3 weeks ago

Description

When analyzing a captured frame with transform feedback, renderdoc displayed GL_NONE as primitive type when capturing points. This is due the fact that GL_POINTS == 0 == GL_NONE.

image

I added a similar contraption as for all the draw commands, that translates this correctly to GL_POINTS.

I'm very grateful for renderdoc, it's an awesome tool. It's so awesome that it took me 4 days to realize that this is not my applications fault but indeed a display bug. (tthe actual problem was else where)

Now it looks like this: image

maierlars commented 3 weeks ago

Initially I though about reusing the GLdrawmode type from gl_draw_funcs.cpp but since the amount of allowed values is limited for glBeginTransformFeedback I decided differently.

baldurk commented 2 weeks ago

Hi, I appreciate you putting this together but I don't want to make this change.

Fundamentally, this is just a design flaw of OpenGL (one of many in the API) - given that state is better displayed in the pipeline state viewer and correctly displayed there at all times, an enum substituted for an alias in the API inspector which is rarely used is not worth the extra code complexity and bug surface of adding special-case serialisation.

This is not the only case where enum aliasing comes up and honestly the handling in draws was barely justifiable with drawcalls being much more visible, I would be more tempted to remove it from draws as I think it was only relevant before the change to how draws are displayed in the event browser.

maierlars commented 2 weeks ago

I understand.

given that state is better displayed in the pipeline state viewer and correctly displayed there at all times

Sadly it's not. At least not for me. See screenshot below. According to the note from the docs in this section it says:

In D3D11 and OpenGL, the Stream-Out / Transform Feedback stage is available under the Geometry Shader block, with the buffers being used for stream-out shown.

So, maybe there is a different bug?

image

I'm happy to share the capture file if this is of any help.

baldurk commented 2 weeks ago

Yes if the stream-out state is not properly displayed please open an issue with a repro and I'll look into it.