KhronosGroup / OpenGL-Registry

OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry
679 stars 274 forks source link

Add implicit flush and non-listable commands to external objects #526

Closed cubanismo closed 2 years ago

cubanismo commented 2 years ago

-SignalSemaphoreEXT implicitly flushes command stream

-None of the new external object commands can be included in display lists

zmike commented 2 years ago

Technically I think the language has to be stronger for the flush semantics. It's not sufficient to say as if /Flush/ were inserted immediately after the semaphore operation because Flush does not provide any guarantee of immediate GPU workload submission, which is what this command requires.

cubanismo commented 2 years ago

I took this language straight from ClientWaitSync, which is what the footnote the people who broke Flush forced into the spec recommends applications use to work around Flush now being broken in the GL spec. I'm not sure what stronger language could be used.

zmike commented 2 years ago

Something like and submit the command stream to the GPU before the function returns should be required here since the extension can't work otherwise.

cubanismo commented 2 years ago

I think if that's the only way to describe a flush in the OpenGL specification, the specification is generally broken. Flush is supposed to flush, and I'm not interested in solving that much breakage in this unrelated extension.

zmike commented 2 years ago

Yeah fair enough. Anyone interested enough can find the comments here anyway.

pdaniell-nv commented 2 years ago

@oddhack this is approved to merge if you're also happy with it.