Commit Graph

4845 Commits

Author SHA1 Message Date
baldurk bda5c71a3e Fix path to resources.qrc in AboutDialog.ui 2017-01-23 19:09:28 +00:00
baldurk 1c29bcfec7 Look for renderdoccmd.exe in development environment folder structure
* This means that if you just build Win32 and x64 matching, then it will
  all work, no need to manually copy into the deployed folder structure.
2017-01-23 19:09:28 +00:00
Steve Legg 87adee1bf1 Implement multi-instance mesh picking 2017-01-20 16:12:48 +00:00
Steve Legg a41c35b764 Fix mesh picking with perspective camera 2017-01-20 16:12:36 +00:00
baldurk 92c697618a Compile fixes for VS2015 (variable shadowing and 32-bit size_t) 2017-01-18 14:55:49 +00:00
baldurk 43b66df816 Correct byte size calculation for D3D12 array textures 2017-01-18 14:26:36 +01:00
baldurk a59ebcbc3b For large D3D12 upload heap buffers, allocate on default heap instead
* The cost of memcpy'ing data across to upload heap buffers for initial
  contents and maps is significant, so for large buffers it's better to
  allocate them GPU-side so we can do GPU copies.
* This also means that maps cannot happen directly, so instead while
  reading we allocate a GPU-side copy of the map source data, and
  perform a buffer copy instead.
2017-01-18 14:26:11 +01:00
baldurk 112d750e30 Mute nonsense D3D12 debug message 2017-01-18 14:23:22 +01:00
baldurk 70b2976b9a Protect against crashing if VB is not bound 2017-01-18 13:05:37 +01:00
baldurk 9c1d8ae798 Compile fix for OS X - don't try to print a size_t in assert macro 2017-01-17 23:49:50 +00:00
baldurk 914bb63ffa Rework error logging of required extensions.
* There was some weird clang-format issue with the macro that this
  hopefully fixes. It also means less log spam if multiple extensions
  are missing.
2017-01-17 21:24:55 +00:00
baldurk 04c24ad855 Variable shadowing compile fix 2017-01-17 20:00:37 +00:00
baldurk e4a4c701cd Check GL version number to enable extensions that became core
* This means that even if the extension isn't reported in the string
  for whatever reason, we still mark it available. It saves on checks
  of (GLCoreVersion >= 43 || HasExt[foo]) all over the place.
2017-01-17 19:23:42 +00:00
baldurk 4f8d6d5c70 Add a few last things that need extension checks 2017-01-17 19:11:24 +00:00
baldurk 86200f1a10 Update documentation with new minimum requirements for OpenGL 2017-01-17 18:59:36 +00:00
baldurk 80e786427b Update messages if output window contexts fail to create 2017-01-17 18:59:27 +00:00
baldurk 8c91f5a808 Mark capture as degraded if we're missing key hardware capabilities
* This includes primarily compute shaders and image load/store
2017-01-17 18:59:07 +00:00
baldurk a05581621f Don't use GetBaseFormat/GetDataType where format could be compressed 2017-01-17 18:38:33 +00:00
baldurk 5c8fca5791 Require GL_ARB_shader_image_load_store for quad-overdraw resolve pass 2017-01-17 18:38:32 +00:00
baldurk a88486d380 Fix uint/int cast compile error 2017-01-17 18:38:32 +00:00
baldurk 5ea84f84ee Only re-interpret pixels from float to int if it was an int texture 2017-01-17 17:46:40 +00:00
baldurk 8f55abdde9 Check for extensions during replay for pipeline state save, tex display 2017-01-17 17:46:26 +00:00
baldurk 34834d802f Check for texture storage extension in vendor check 2017-01-17 16:55:38 +00:00
baldurk 21d6f41c97 Change GLSL shaders to compile at #version 150 and add #extensions
* For some #extensions we can fallback to a lesser path (or just drop
  that functionality - e.g. displaying cubemap arrays if there's no
  extension for it).
2017-01-17 16:55:26 +00:00
baldurk 031ea659be Fix check for glClipControl to check extension not just function pointer 2017-01-17 16:54:18 +00:00
baldurk 6be852bfa2 Check for extensions needed when creating replay shaders
* If a replay shader can't be created we'll just skip the replay
  functionality it is needed for.
2017-01-17 16:54:03 +00:00
baldurk e8456f5d36 Check and save the GLSL version, vs specifically checking for 420 2017-01-17 16:51:26 +00:00
baldurk ec41661f5f Remove replay-time use of buffer/texture storage
* Of course if the capture used the storage functions during capture,
  then they will still be used on replay. We are only removing extra
  usage here for internal textures/buffers
2017-01-17 16:47:46 +00:00
baldurk d214098dce Create the highest versioned context possible on replay 2017-01-17 11:02:47 +00:00
baldurk 2b722541e7 Compile/warning fixes 2017-01-17 11:02:46 +00:00
baldurk 00ebb7d8a3 Check for SSBO support before introspecting programs for SSBO binds 2017-01-17 11:02:45 +00:00
baldurk ed358ab8a3 Check extensions properly for GL state fetch and apply 2017-01-17 11:02:45 +00:00
baldurk 97e11a45a3 Fix a minor typo 2017-01-17 11:02:44 +00:00
baldurk 69bb551f22 Make sure enable bits in GL render state are properly extension guarded 2017-01-17 11:02:43 +00:00
baldurk 07df2cc37c Check for KHR_debug when calling glDebugMessageCallback 2017-01-17 11:02:43 +00:00
baldurk 8fb49d08f3 Reduce minimum requirements for replay to 3.2 + a few extensions
* The checking for a capable replay context is centralised so there's
  less code duplication between linux (GLX) and windows (WGL)
2017-01-17 11:02:42 +00:00
baldurk a9fb044874 Pass through texture swizzles on FBO attachments and display 2017-01-17 11:02:41 +00:00
baldurk 16dd02a4a4 Check that texture swizzle extension is available before using it 2017-01-17 11:02:41 +00:00
baldurk eb5761dabe Use non-instanced triangle lists to draw text overlay
* Mesa GL seems like it doesn't like the instanced draw, for whatever
  reason.
2017-01-17 11:02:40 +00:00
baldurk ae0f6ea3a0 Don't query texture level/layer properties for renderbuffer attachments 2017-01-17 11:02:39 +00:00
baldurk 749434872d Remove GL_TEXTURE_COMPRESSED_IMAGE_SIZE vendor check
* This is even messier than I thought - I didn't realise, but it in fact
  varied depending on if the image was initialised with glTexStorage or
  glTexImage (or possibly glCompressedTexImage2D).
* Either way, the query is much too unreliable to try and use and work
  around, so instead we'll just use the GetCompressedByteSize function
  and work out the size ourselves.
2017-01-17 11:02:38 +00:00
baldurk bb538a7d76 Add emulated versions of extensions we want to use but not require
* EXT_direct_state_access emulated by pushing/popping current bind
* ARB_copy_image emulated with framebuffer blits
* ARB_clear_buffer_object emulated with Map + memset/memcpy
* ARB_internalformat_query2 emulated with a limited hardcoded database
2017-01-17 11:02:38 +00:00
baldurk 7450d4f84d Compile text rendering shaders as GLSL 150 and add extensions needed 2017-01-17 11:02:37 +00:00
baldurk 6252fc23f3 Avoid EXT_direct_state_access or ARB_texture_storage use in vendor check 2017-01-17 11:02:36 +00:00
baldurk baa18e78af Check for core versions or extensions before doing vendor checks 2017-01-17 11:02:35 +00:00
baldurk 533080ede0 Check for relevant extensions or core versions for resource dirtying 2017-01-17 11:02:35 +00:00
baldurk c66dd62a2e Add more checks for extensions being present, for future use 2017-01-17 11:02:34 +00:00
baldurk 4a80a744c3 Add explicit cast (gl_InstanceID is int), fixes errors on mesa compiler 2017-01-17 11:02:33 +00:00
baldurk c5dbd7d6f0 Don't allow aliases to overwrite core function pointers
* This is a bit of a hack. Mesa seems to return a function pointer for
  functions it recognises but doesn't support. So e.g. if you query for
  glBindFramebuffer you'll get the implementation, if you query for
  glBindFramebufferEXT then you get a stub that errors out.
* So in this case we ensure that any EXT/ARB aliases only set their
  function pointer if we don't have the core function already. This will
  fix some cases but obviously doesn't help if the core function is the
  error-stub and the extension is supported...
2017-01-17 11:02:33 +00:00
baldurk d2d8a978e4 When creating a dummy shared context, create a pbuffer
* It's not valid to try and bind a context with no drawable.
2017-01-17 11:02:32 +00:00