Commit Graph
39 Commits
Author SHA1 Message Date
baldurk 497f6176e7 Add vulkan driver based on mantle work, with linux hooks based on GL 2016-02-07 18:37:25 +01:00
baldurk 707910b647 Tweak viewport/scissor overlay to be a little clearer 2015-11-19 01:33:22 +01:00
baldurk 62f7362e92 Move dlopen to be hooked centrally on linux, to be multi-API friendly 2015-08-23 22:23:53 +02:00
baldurk 4609fa710b Update RenderDoc application-facing API to a stable/mature version.
* This API is now intended to be forward and backward compatible as much
  as possible. Meaning applications should be able to run without
  changing on many RenderDoc versions after the one they are built
  against without breaking.
* All function pointers are fetched at once in one versioned GetAPI()
  function, to save on constant GetProcAddress/dlsym'ing.
* Otherwise, it's largely similar to the previous API.
2015-08-23 15:12:05 +02:00
baldurk 1b0d545fbe Compile GLSL shaders to SPIR-V to generate 'disassembly' (hex dump) 2015-07-08 23:45:18 +02:00
baldurk 4ee82dd1b0 Added glslang GLSL and SPIR-V reference compiler
* This is tracking my fork of the Khronos repository
  https://github.com/baldurk/glslang on branch 'renderdoc'. See that
  branch for my local changes. Only a subset of files is included
2015-07-08 23:45:17 +02:00
baldurk dd9aff3890 Implement right click to pick vertices in the mesh viewer. Refs #139 2015-07-07 10:02:36 +02:00
baldurk bde6fabf7d Rearrange project structure, so that drivers can be easily disabled
* This is kind of arbitrary at the moment, but in future when D3D12 and
  Vulkan drivers appear, not everyone who builds RenderDoc will want to
  build all drivers, so making them separate projects makes it more easy
  to disable/remove them.
2015-06-29 20:04:47 +02:00
baldurk c9c52537f1 ARB_dsa part 1 - hook DSA functions, implement all but tex* & create*
* Doesn't compile yet! Just splitting this up logically so the change is
  a bit easier to digest.
* I've commented and organised a bit better the gl_hookset.h hook list.
* The function hooks are set up for all of the ARB_dsa entry points.
  Those that are semnatically identical to EXT_dsa are set up as aliases
  (with EXT_ being canonical, so we can fall back if ARB_dsa isn't
  supported - see comments in gl_hookset.h).
* Implemented the new functions except for the glTexture* family and the
  glCreate* family. No deduplication of code yet.
* As with EXT_dsa we "promote" to the DSA function for serialisation,
  but since unlike EXT_dsa we can't assume ARB_dsa is present, instead
  we emulate those functions that we might use unconditionally but may
  not be present.
2015-02-22 23:36:33 +00:00
baldurk 7cbb68f329 Implement quad overdraw overlays for GL
* The implementation needs the fine dFdx/dFdy variants, which are only
  available in GLSL 4.50 and above. Without that support we fall back
  to the normal dFdx/dFdy which are implementation dependent. In my
  quick test on nvidia it so happened that it was still fine, but that's
  not guaranteed.
2015-02-12 20:04:48 +00:00
baldurk 8ccf071865 Implement GetTextureData for GL - underlying code behind texture saving
* This should support all forms of textures off the bat, multisampled
  textures, 3D textures, arrays, compressed and uncompressed, etc.
2015-02-09 17:29:13 +00:00
baldurk c5fafbed5d Implement GPU duration counters on OpenGL 2015-01-29 10:17:51 +00:00
baldurk b7f9d5b6d0 Generalise drawcall timing to get arbitrary sets of counter values
* Client code can enumerate the IDs of counters that are supported -
  some of these will be general, some will be IHV specific. It can also
  request descriptions of the counters to determine the type of data or
  units. This can be used to 'discover' counters that aren't hard
  coded into renderdoc. I'll want to at least reserve IHV ranges so that
  counter IDs are globally unique, and ideally IHV counters will also be
  predeclared where possible.
* Also the refactor removes some ugly rdctype::array use outside of the
  replay layer and replaces it just with std::vector, which is a nice
  bonus.
2015-01-28 21:15:19 +00:00
baldurk 5972ffa661 Implement mesh-specific fragment shader to display secondary data 2015-01-25 19:31:47 +00:00
baldurk 1c9269fc8d Add simple OpenEXR save/load support using tinyexr
* Thanks to https://github.com/syoyo/tinyexr for the load and save code!
2015-01-06 17:43:19 +00:00
baldurk 6fde127360 Refactor projects so we don't use xcopy to copy build outputs around
* This makes it easier for my auto build scripts (i.e. without xcopy use
  I can run them from msysgit bash).
* pdblocate now has Profile32&Release32 vs Profile64&Release64. This was
  the easiest way to do it as it has to be compiled in 32bit to interact
  with DIA, but we want it copied to the solutions output folder (x64/...
  or Win32/...)
2015-01-01 11:23:53 +00:00
baldurk 2484bc8bc7 Use UTF-8 everywhere possible and only use wchar_t where required.
* This means that all APIs pass byte string types. ALL strings everywhere
  in the entire codebase must be assumed to be and treated as UTF-8 content
  not ASCII.
* Gets rid of all the horrible %hs specifiers that caused warnings on
  linux! Hooray.
* We convert to wide strings, or use wide characters, only when necessary
  to use the Win32 API. Some windows specific code will stay in wide chars
  just for convenience.
* Files are already serialised as UTF-8 strings for linux/windows binary
  compatibility, so this change doesn't break backwards compatibility.
2014-11-23 14:45:16 +00:00
baldurk 9d164826da Implement custom printf function, use it in favour of OS *printf
* Custom printf supports UTF-8 and in fact assumes it implicitly for all
  strings. This means we can use UTF-8 everywhere, even on windows, without
  widening parameters to printf() style functions like RDCLOG et al.
* It also allows me to add size_t support and binary printing.
* Grisu2 is used for converting doubles to strings. Reference:

Paper: http://florian.loitsch.com/publications/dtoa-pldi2010.pdf
impl: https://github.com/floitsch/double-conversion
impl: https://github.com/night-shift/fpconv
impl: https://github.com/miloyip/dtoa-benchmark
2014-11-23 13:56:28 +00:00
baldurk e4684baf20 Handle fetching DX11.2 interfaces, but just as passthru. Closes #106
* Until I have a sample that uses it, I'm not going to attempt to serialise
  the tiled resource API. It has a lot of other potential knock-ons too
  (e.g. to initial contents).
2014-11-12 23:28:19 +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 a429bf3ab9 OpenGL in-app text overlay 2014-11-01 17:14:23 +00:00
valeriog baa530eb5f Add visualization of most missing OpenGL texture types (cube maps, texture arrays, stencil, 1D/3D textures, integer textures), take selected mip level into account and point sampling when required. 2014-10-31 19:47:42 +01:00
baldurk e8508be085 Re-do text rendering to use stb_truetype so it's portable to linux 2014-10-30 22:47:21 +00:00
baldurk 81e812b5f3 Add image viewer so that an image can be loaded as a faux-log
* This adds the ability to drag in/open up a dds or jpg file and get all
  the usual texture viewing and manipulation options.
2014-09-25 16:27:17 +01:00
baldurk 8d685de609 Reorganise 3rdparty, include breakpad with sln, drop mhook. Closes #84 2014-09-24 20:24:35 +01:00
baldurk 9f62428f7f Move DDS writing code out from d3d11 driver 2014-09-16 01:18:00 +01:00
baldurk eee0740874 Remove old file no longer in project 2014-09-15 07:49:28 +01:00
baldurk 6fbb247efd Re-organise external-facing headers to be more easily used
* renderdoc/api/replay/ contains all the headers for using the replay and
  analysis side of renderdoc (like in a UI or auto-testing tool)
* renderdoc/api/app/ contains the headers if you wanted to write a
  renderdoc-aware application.
2014-09-13 12:52:25 +01:00
baldurk 9e90eda3b5 Locate breakpad libraries via $(PlatformToolset)
* This means people building on VS2013 don't need to rebuild breakpad
  locally to link successfully.
* Committed binaries built on VS2012 Update 4 and VS Express 2013 for
  Desktop, which will hopefully work for everyone.
2014-09-11 18:59:32 +01:00
baldurk 3e45d2775b Factor version number out in C++ code
* Fewer places to update with the version number.
* Linux can now use this natively rather than passing via Makefile var
2014-09-09 23:39:59 +01:00
baldurk f443a40b06 Move stb_impl to a C file so I can test that changes compile 2014-09-09 01:07:18 +01:00
baldurk c1f92dd3d5 Add stb_image.h and stb_image_write.h from http://nothings.org 2014-09-08 19:31:07 +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
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
baldurk 2d299961e1 Properly quote parameters of xcopy to handle spaces in paths 2014-07-15 17:34:59 +01:00
Baldur Karlsson 9015b139c0 Add query and sync object handling.
* Sync objects need special handling because the identifier is an opaque
  pointer and so we can't use the existing GLResource stuff. Instead to
  handle this, we assign a GLuint ourselves and keep a mapping around
  to map GLuint<->GLsync. Everything else works as usual from the GLuint
2014-06-18 16:07:58 +01:00
Baldur Karlsson 72de770e22 Tidy up wrapped functions and reorganise into logical files
* Remove legacy wrapped functions that were only hacked-in to get
  glxgears working as a proof of concept.
* Split out groups of wrapped functions into separate files by type
2014-06-18 15:19:56 +01:00
baldurk 5d7f296deb Add GLRenderState class to track GL state vector
* Use it to serialise in/out initial state at the start of each captured
  frame.
* Serialise active texture and buffer bindings (indexed and non-indexed).
2014-05-31 00:04:21 +01:00
baldurk c38affcded Initial commit of existing code.
* All renderdoc code up to this point was written by me, history is available by request
2014-05-02 08:33:01 +01:00