Commit Graph

594 Commits

Author SHA1 Message Date
baldurk 9ec7d9eff5 Lightweight state push/pop of only what's needed for overlay
* The full state vector push/pop was slow (admittedly this was probably
  because it's not optimal, and for some things will read over the max).
2014-11-09 02:00:08 +00:00
baldurk 7aca4a8603 glBufferSubData applies to UpdateCount on high traffic resources 2014-11-09 02:00:08 +00:00
baldurk 7c6ef6faf7 Fixes for glTexSubImage* to handle unpack buffers
* If a pixel unpack buffer is bound, we mark the resource as dirty when
  idle. When capframing we serialise just the pointer value as offset, not
  the buffer contents.
2014-11-09 02:00:07 +00:00
baldurk f13f07ee4e Implement remaining functions that UE4 uses
* glBindFragDataLocation
* glMultiDraw* (non indirect)
* glDraw*Indirect
* glDispatchComputeIndirect
2014-11-08 23:00:13 +00:00
baldurk 54abe30ee6 Implement glObjectPtrLabel 2014-11-08 23:00:13 +00:00
baldurk 47e5874aa4 Check for proxy texture targets and don't serialise those calls 2014-11-08 23:00:12 +00:00
baldurk d50b74694d Implement glTexBuffer, multisampled tex functions, glTexImage*
* glTexImage probably makes some assumptions about usage, at the least it
  assumes that it won't be called to re-size/re-allocate textures (that
  will probably break), and it also assumes that level 0 will always be
  glTexImage'd and the other levels are standard mip sizes (I don't know
  what happens in GL if you specify non pow-2 descending mip sizes for
  different levels. Given we're only targetting core 3.2 and above, this is
  probably a safe set of assumptions.
2014-11-08 23:00:12 +00:00
baldurk 23a748eca9 Add renderbuffer support 2014-11-08 18:03:48 +00:00
baldurk 1276eda4c7 Add glFlushMappedBufferRange, but not implemented yet
* Still need to implement persistant/etc buffer Map()s
2014-11-08 13:49:23 +00:00
baldurk 5b3a8aabdb Implement glClearBufferSubData 2014-11-08 13:48:41 +00:00
baldurk 06b8b76973 Implement glCopy*Image functions
* When not capturing a frame, we just mark the resource as dirty
2014-11-08 13:48:41 +00:00
baldurk e4edec0d4e Implement glQueryCounter 2014-11-08 13:48:41 +00:00
baldurk 8dbdd97a2f Implement glSampleCoverage 2014-11-08 13:48:40 +00:00
baldurk fbabc0180b Add a couple of missing glGet*s 2014-11-08 13:48:40 +00:00
baldurk 9756b60a8a Add some missing ARB aliases of core functions 2014-11-08 13:48:39 +00:00
baldurk d3650cc73d Remove wgl/glx from hookset.pl - unused. Also skip blank lines 2014-11-08 13:48:39 +00:00
baldurk 9b02d4a73e Implement remaining glVertexAttrib functions 2014-11-07 01:18:04 +00:00
baldurk d0b3078b95 Implement glPointParameter* 2014-11-06 23:30:00 +00:00
baldurk 7c7503432d Implement glBlendEquation{,i} 2014-11-06 23:18:42 +00:00
baldurk 840d2ad5d8 Fix for compiling on 64bit 2014-11-06 23:18:26 +00:00
baldurk d86b6e8808 VAOs get marked as dirty via VertexArrayUpdateCheck() 2014-11-05 00:11:28 +00:00
baldurk d61ad6994e VAOs are required, don't save bad VAO operations to device record 2014-11-05 00:10:54 +00:00
baldurk 41caebcdca Implement a whole bunch of glGet* glIs* API functions as pass-through 2014-11-04 21:54:33 +00:00
baldurk d318ca5182 Implement all glUniformN_ and glProgramUniformMatrixMxN_ variants
* Using macros for most implementations redirecting to either
  Serialise_glUniformVector or Serialise_glUniformMatrix
2014-11-03 22:25:11 +00:00
baldurk c7528aeb49 Serialise glUniform through glProgramUniform 2014-11-03 20:59:28 +00:00
baldurk b590377345 Do NaN/-ve/inf checks before range application, feels more consistent
* Before, we'd remap the visible range (if the range was 0.25-0.75 this
  meant 0.0 would be mapped to 'negative') before checking on negative
  values, which didn't feel like the right thing for the overlay to show.
2014-11-03 00:50:46 +00:00
baldurk 93f4141abd Implement viewport/scissor and depth/stencil test overlays for GL 2014-11-03 00:47:29 +00:00
baldurk 602b28c614 Abstract out function to copy uniform values between programs
* This needs to be refactored to use the program interface query API so
  we can get the location of uniform blocks and set them
* We also need to copy over sampler uniform values (getting away with it
  for now as we're generally replacing the pixel shader, so there aren't
  any samplers used in the cases I've tested).
2014-11-02 22:47:52 +00:00
baldurk fc349db45f Don't use FetchTexture in GLReplay, as overlay texture doesn't have it
* Instead of using FetchTexture we store the internal format in the texture
  data in the driver, so it's available for use.
* This fixes some issues with the overlay textures
2014-11-02 21:55:50 +00:00
baldurk 912382e413 Implement NaN/inf/-ve and clipping overlays on OpenGL 2014-11-02 21:20:06 +00:00
baldurk facea8d019 Fix issues with float inaccuracy on 'clipping' overlay
* There was a problem where a value of 1.0 would show up as 'clipping' if
  the range meant that it was transformed to something like 1.0000000432f
  so we use FLT_EPSILON as a slight fudge factor.
2014-11-02 21:19:48 +00:00
baldurk ad2b26b238 Implement texture histogram for OpenGL 2014-11-02 20:59:36 +00:00
baldurk 65e567d91f Implement glClearBufferData 2014-11-02 20:54:21 +00:00
baldurk 02aa3e7912 Implement min/max calculation for OpenGL
* Same implementation as D3D11 essentially
* Split out the texture sampling from texdisplay.frag into its own file so
  it can be reused. Also removed the discard;s from the texture sample
  functions and moved them up into the texture display function.
2014-11-02 20:26:09 +00:00
baldurk 823821d775 A bit of a hack, only show stencil when exclusively selected
* Thumbnails enable all channels, so if depth (Red) is enabled then ignore
  that stencil (Green) is also enabled.
2014-11-02 20:11:19 +00:00
baldurk 3a95b83d28 Fix detecting SInt textures from SNorm accidentally 2014-11-02 20:09:55 +00:00
baldurk f00914bbfd Always point sample depth textures on display 2014-11-02 20:09:35 +00:00
baldurk bb87949c89 Implement glMemoryBarrier 2014-11-02 19:52:58 +00:00
baldurk dcc9937bed Fix linestrip usage for highlight box 2014-11-02 19:34:22 +00:00
baldurk 8ca8ac4ab3 Fix range becoming 0 if both min and max were negative 2014-11-02 19:05:42 +00:00
baldurk 3c4f9313e2 Fix the wrong define being used meaning histogram/minmax were wrong
* Several places were using HGRAM_PIXELS_PER_TILE*HGRAM_PIXELS_PER_TILE
  instead of HGRAM_PIXELS_PER_TILE*HGRAM_TILES_PER_BLOCK and calculating
  blocks as too large. This meant histogram/minmax would miscalculate the
  number of blocks needed and fail to read properly from > 2048 textures
2014-11-02 19:04:14 +00:00
baldurk 05c5870326 Remove assert that's pointless and has false positives.
* Technically CopySubresourceRegion should only be called for matching
  types, but the handling won't change (we'll just mark dest resource as
  dirty), so this fires when programs are being a bit naughty for no use.
2014-11-02 19:02:35 +00:00
baldurk 3fa5852c93 Remove D3D11_MAP_FLAG_DO_NOT_WAIT Map() flag on replay
* If we serialised out the Map, then it succeeded during capture, so need
  to make sure we wait and do it on replay regardless.
2014-11-02 18:41:50 +00:00
baldurk e549c58413 Implement glBindImageTexture and glDispatchCompute 2014-11-02 13:43:55 +00:00
baldurk 6308d78cd4 Implement debug device/debug api message tracking for GL 2014-11-02 10:52:24 +00:00
baldurk a4fe8e3261 Add missing serialise call for PROGRAMUNIFORM_MATRIX 2014-11-02 10:52:23 +00:00
baldurk d63352a1b0 bail out of glBindTexture() if texture name is invalid 2014-11-02 10:52:23 +00:00
baldurk 61df69d80f remove debug print that got left in 2014-11-02 10:52:22 +00:00
Baldur Karlsson 537a18ceb6 Clarify that only GL 3.2+ Core is supported 2014-11-01 19:03:55 +00:00
baldurk d4f31f9f42 fixes for linux building 2014-11-01 17:26:07 +00:00