Files
renderdoc/renderdoc
baldurk 9876b6e5cb Emulate EXT_dsa functions in-place and catch promoted-to-DSA functions
* Originally when I added the EXT_dsa emuluation, I targeted it
  specifically to only those functions that I call outside of the replay
  loop, for internal analysis purposes. For that reason the emulation
  was only applied to a separate hookset, and only during replay (not
  during capture).
* However this doesn't account for some of the streamlined serialisation
  of functions like glBufferStorage, glBufferData, etc. To simplify
  code paths, I 'promote' all variants of these types of functions to
  the EXT_dsa variant (except ARB_dsa for texture functions which is
  actually different by not requiring the texture target parameter).
* Note: most of these functions were emulated already (except three -
  glNamedBufferStorageEXT, glTextureBufferEXT and
  glTextureBufferRangeEXT) but on replay we didn't use the internal
  hookset, just the normal one, which was not emulated.
* Rather than try to decide when these should use the internal hookset
  and when the regular one, or switch them all over to the internal
  hookset, instead re-evaluate the reason for a separate hookset in the
  first place: Emulating functions separately means the original func
  pointers are returned during capture time, for unsupported extensions.
* However mesa has proven that unsupported extensions don't have to
  return NULL, as it's undefined what they return - they should not be
  called if the extension isn't available. So in actual fact there's
  little harm to be done by emulating in-place and returning some
  different pointers to the application. In the worst case, they get a
  bit of EXT_dsa emulation themselves.
2017-05-03 20:00:10 +01:00
..