Commit Graph

246 Commits

Author SHA1 Message Date
baldurk dcbba16af5 Don't assign "" to elems as it can later get free()d invalidly 2014-08-13 09:32:53 +01:00
baldurk ff371ee768 Verify that texture ID is found as tex2d before proceeding 2014-08-12 19:11:59 +01:00
baldurk 8158af7a9f Attempt to make separable shader prog, add input/output fetching
* Also moved shader reflection code into separate file
2014-08-12 17:01:18 +01:00
baldurk ebb5894010 If semantic is empty and we have variable name, use that instead 2014-08-12 16:47:31 +01:00
baldurk 49ab71181c Add some system attributes from GL 2014-08-12 16:47:00 +01:00
baldurk 38866f9829 Update TODO 2014-08-12 16:46:45 +01:00
baldurk fceabf7948 Explicitly handle initing from empty arrays, and assign NULL or "" 2014-08-12 16:46:35 +01:00
baldurk 0c52714def Remove a loop that doesn't need to be there any more 2014-08-09 01:46:00 +01:00
baldurk e7ab52cd22 Skip a few core modules 2014-08-09 01:45:43 +01:00
baldurk 9beaabb83b Make the lock only cover the ApplyHook function 2014-08-09 01:45:11 +01:00
baldurk 1b0eae755a Bail out immediately if IAT entry is already hooked
* This avoids going into VirtualProtect changing the page access while code
  may potentially be executing these areas of memory (since the module is
  hooked, and may have returned to user code)
2014-08-09 01:44:45 +01:00
baldurk aa690d7183 Add lock around hook apply function 2014-08-09 00:36:15 +01:00
baldurk f8bf111e9a Hook all modules, redundantly but safely, on each LoadLibrary() 2014-08-09 00:04:06 +01:00
Baldur Karlsson ec683ea474 Make sure outputs are always erased 2014-08-08 14:01:02 +01:00
Baldur Karlsson 2947e508a6 Fix array overrun 2014-08-08 14:00:50 +01:00
Baldur Karlsson 9eb007f04d Sort of handle separable programs and program pipelines
* Need to find a better way of solving the non-immutable-shader-reflection
  given baked in uniform values. Probably expose the uniform values mapping
  to the user, and for D3D it just becomes trivial and unchanging.
* Also I need to create separable programs per-shader for use for
  reflection in that case, but thanks to the stupid gl_PerVertex
  redeclaration that becomes a nightmare.
2014-08-08 14:00:32 +01:00
Baldur Karlsson 9925392042 Handle half floats as well for position data 2014-08-08 13:56:31 +01:00
Baldur Karlsson e19daa58e3 Check bindpoint isn't -1 (for non-buffer-backed uniforms) 2014-08-08 11:15:16 +01:00
Baldur Karlsson 0c5a549633 Add uint type 2014-08-08 10:41:47 +01:00
baldurk 6b74ce2f65 Add slight delay before calling PixelHistory to allow for painting 2014-08-07 21:43:57 +01:00
baldurk 0202af73da Fetch SV_Coverage value and fill in semantic data. Closes #74 2014-08-06 23:15:28 +01:00
baldurk 4d4243d5bc Fix reference to renamed variable 2014-08-06 22:36:37 +01:00
baldurk 36a67611e5 Handle a few declaration opcodes that had gotten missed 2014-08-06 22:35:47 +01:00
baldurk d3f867d5d3 Set a sane tab order on dialogs 2014-08-06 22:21:27 +01:00
Baldur Karlsson 81ee6a47b0 Refresh module handle if NULL when hitting GetProcAddress
* This might be a more serious problem in future...
* We only hook all loaded modules once, at init time, in Win32_IAT_EndHooks
* If a LoadLibrary call afterwards implicitly loads some modules we don't
  see them. Potentially we should rehook all loaded modules again each time
  LoadLibrary is called but then there would be a lot of redundant work
  unless we tracked module unload/loads to see if a module has been hooked
  before or not. For now assume we don't need to hook these modules and
  get away with just updating module handles
2014-08-06 15:43:17 +01:00
Baldur Karlsson 68e47d3ae2 Skip hooking fraps via IAT for compatibility reasons 2014-08-06 15:43:17 +01:00
Baldur Karlsson f3cc56573f Ignore modules with a invalid DOS magic number
* Seen in the wild some HMODULEs come back pointing 2 bytes after the real
  module base address, and so without the magic number. I don't know why
  but I can't assume anything about the behaviour so I ignore these modules
  to avoid crashes.
2014-08-06 15:43:16 +01:00
Baldur Karlsson 12a30a7b97 Add IAT based hooking to allow hooking 64bit opengl32.dll
* Needs vigorous testing in as many situations as I can think of, not least
  32bit, 64bit, D3D11, D3D9, OpenGL, managed apps, different windows SDKs,
  delay loading dlls (not sure if these will work), statically linked libs,
  LoadLibrary + GetProcAddress
* Credit goes to jslutter for originally bringing it to my attention &
  suggesting it.
* References:
  http://msdn.microsoft.com/en-us/magazine/bb985992.aspx
  http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
  http://www.codeproject.com/Articles/6265/Process-wide-API-spying-an-ultimate-hack
2014-08-06 15:43:16 +01:00
Baldur Karlsson 23543d6a43 length returned from program introspection includes space for '\0' 2014-08-06 15:43:00 +01:00
Baldur Karlsson c648904cba DebugMessage description is an ascii string 2014-08-06 15:42:33 +01:00
Baldur Karlsson 2e3a3ac175 Serialise depth function as part of render state 2014-08-06 12:27:46 +01:00
Baldur Karlsson 9bf0ee93b6 Typo using wrong blend GLenum for source alpha 2014-08-06 12:26:51 +01:00
baldurk 9f9411b758 Merge pull request #75 from valeriog-crytek/master
Added debugging support for GATHER4* opcodes.
2014-08-05 17:57:47 +01:00
valeriog 8452d0a12f Added debugging support for GATHER4* opcodes.
Fixed sampler state setting in LD/SAMPLE opcodes when debugging non-vertex shaders.
2014-08-05 14:44:20 +02:00
Baldur Karlsson 51b840844e Handle default case in switch 2014-08-05 11:28:09 +01:00
baldurk 15f98e3749 Show pixel history events in the timeline bar 2014-08-03 16:25:14 +01:00
baldurk fb6b4a98b0 Show the pixel history tab early, fill it in with data when ready 2014-08-03 16:04:34 +01:00
baldurk 6fa46b359e Implement right click options to debug or hide failed events 2014-08-03 15:54:40 +01:00
baldurk b230be570f Inherit channel visibility from viewer, display inherited state
* A label is shown at the top of the pixel history showing the range
  display and visible channels. The channel visibility behaves the same as
  in the texture viewer - 2 or more and the other channels display as black
  and 1 channel displays grayscale.
2014-08-03 15:32:52 +01:00
baldurk aeb6ae3bcb Explicitly list stencil as hex with 0xXX form. 2014-08-03 15:04:24 +01:00
baldurk 4e6c8202b4 Save on unnecessary thrown ArgumentExceptions (convenience) 2014-08-03 15:03:59 +01:00
baldurk b695ba2070 Pass indexable temps through and display in UI. Closes #73
* The storage is rather wasteful (once per state), but the temp registers
  are mutable so could be changed from state to state.
2014-08-03 14:28:27 +01:00
Baldur Karlsson f45315f1cc When copying row-by-row, only copy one row at a time! 2014-07-30 12:54:24 +01:00
Baldur Karlsson c9146bdd9e Move FillCBufferValue function to be member of GLReplay 2014-07-29 17:03:12 +01:00
Baldur Karlsson 513b9572f9 Compile fixes. Whoops. 2014-07-29 17:03:00 +01:00
Baldur Karlsson b26b816d81 Implement FillCBufferVariables for buffer-backed UBOs 2014-07-29 14:07:56 +01:00
Baldur Karlsson c31852532b Use a more friendly enum for BufferBindings array indices 2014-07-29 13:59:57 +01:00
Baldur Karlsson a76d70831a Add a few new glGet functions 2014-07-29 13:59:21 +01:00
Baldur Karlsson 3952dfba2b Save location as vec if variable is not buffer backed 2014-07-28 16:52:43 +01:00
Baldur Karlsson 4e145925d1 Retrieve details of UBOs and variables inside them 2014-07-28 16:21:08 +01:00