Commit Graph
118 Commits
Author SHA1 Message Date
baldurk cb94a28768 Create GLES shaders as version 300 if replaying on GL ES 3.0. Refs #1770 2020-03-11 18:00:53 +00:00
baldurk 2916c0f9f7 Update copyright years to 2020 2020-01-06 16:20:45 +00:00
baldurk e9bb5a8219 Initialise color when doing manual resolve on GL 2019-12-18 19:09:18 +00:00
baldurk ff08748238 Ensure all files have trailing new-lines and enforce with clang warning 2019-12-02 20:28:05 +00:00
baldurk 11c39377b1 Handle range adaption in texture remapping
* This can be used in saving overlays, stencil, etc
2019-11-27 11:05:24 +00:00
baldurk edc8fb6bd6 Be more precise with texture remapping to handle integer textures 2019-11-26 17:38:26 +00:00
Gert Wollny 44e7bbe439 gl: Handle the use of (u)intBitsToFloat by using a separate define
The shader code is preprocessed with glslang that doesn't use the driver
capabilities to define macros indicating the availability of extensions,
instead it uses its own set of supported extensions, and in this case
it supports ARB_gpu_shader5. As a result the generated shader code would
make use of the (u)intBitsToFloat conversion functions based on the define
GL_ARB_gpu_shader5 also if the driver doesn't support this extension.

Hence an additional define is added to indicate whether bit casting
functions are available, and the extension is only enabled/required when
the driver actually supports it.

Closes: #1586

v2: - Fix ws
    - reword commit message

v3: - check for ARB_shader_bit_encoding and ARB_gpu_shader5 in shader creation code
    - don't enable GL_ARB_gpu_shader5 unconditionally in the OpenGL shader
    - reword commit message

v4: Use an additional define HAS_BIT_CONVERSION to make sure gslang correctly
    parses the shader code (Baldurk).

v6: - Add HAS_BIT_CONVERSION also with the GLES code path (Baldur)
    - split patch
    - reword commit message(s) (Baldur)

v7: fix ws

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>

lala
2019-11-11 14:50:46 +00:00
tabi.katalin 4037927834 Fix histogram shader compilation for GLES
These are not supported in GLES and causes shader compile errors when replaying a capture: 
- OpenGL does not allow swizzles on scalar expressions
- implicit cast from "int" to "float"
- implicit cast from "int" to "uint"
Scalar swizzling can be replaced by vec4 and constant types can be explicitly specified.
2019-10-24 18:02:10 +01:00
baldurk 8ce2ea2202 Improve calculation of histogram
* The histogram shouldn't be calculated as channel-wise averages, but instead by
  'stacking' the channels (each channel contributes 1 to the appropriate
  bucket).
* Degenerate channels (where min==max) are excluded and listed only as a single
  spike, to avoid blowing out the automatic y-axis.
2019-10-10 16:48:42 +01:00
baldurk 2d473c39e7 Keep format in GL shaders for R/W images 2019-09-23 13:45:29 +01:00
Dominic Filion Guay 57c60cdfb8 Fixed issue with MSAA textures on Oculus Quest. 2019-09-18 19:28:42 +01:00
baldurk 07158ad24c Fix support for triangle fans on GL/Vulkan 2019-08-20 15:33:12 +01:00
baldurk 7715188d0d GLES 3.1 can't handle MSAA array textures, only 3.2 can 2019-06-28 11:01:19 +01:00
baldurk a5c909ec0c Don't try to use MSAA array textures on MoltenVK 2019-06-21 12:51:52 +01:00
baldurk 28cde37849 Add support for generating SPIR-V shaders for OpenGL
* Only a couple of these are needed - ones we might link with user shaders in a
  program
2019-06-07 18:44:13 +01:00
baldurk afb7fa3771 Add handling for MSAA Array textures on GL/GLSL shaders. Closes #1333 2019-04-01 14:21:52 +01:00
tabi.katalin 2507532623 Fix GLES shader compile errors
Detected two shader compile errors while replaying GLES apps:
1. „#extension directive must occur before any non-preprocessor token” -  Fix the order of precisions and extensions in the shader code.
2. „extension 'GL_OES_texture_cube_map_array' is not supported”  - Do not add extensions if they are actually not supported. TEXTURE_CUBE_MAP_ARRAY was added to GLES 3.2 so   GL_OES_texture_cube_map_array and GL_EXT_texture_cube_map_array are no longer used.
2019-02-25 11:30:25 +00:00
baldurk 180b6f7cdc Remove use of shading_language_420pack and explicit_attrib_location
* On GL we can manually set these bindings when needed, and then we don't
  require those extensions.
2019-02-13 18:50:53 +00:00
baldurk 11819ed3be Refactor and clean up internal shaders to be better organised
* Split up old uber-cbuffers used for unrelated shaders into shader-specific
  cbuffers (DebugPixelCBufferData -> TexDisplayPSCBuffer / CheckerboardCBuffer /
  MeshPixelCBuffer).
* Split up HLSL files so not everything is lumped into 'debugdisplay.hlsl' but
  has separate files as appropriate.
* Use #include in GLSL and HLSL to better organise shader code together rather
  than relying on lumping files together on the C++ side.
* Renamed files like 'debugcbuffers.h' to 'hlsl_cbuffers.h'.
* Trimmed out some extensions/cruft that isn't needed in the GLSL side since we
  no longer use separable shaders.
* Combine some shaders like Outline/Checkerboard that were similar into central
  place.
2019-02-13 18:50:53 +00:00
baldurk 86ff87863e Update copyright years to 2019 2019-02-01 18:32:13 +00:00
baldurk 18958fedd0 Workaround ARM driver bug, hide UBOs unless they're used. Closes #1225 2019-01-04 12:26:30 +00:00
baldurk 761f8be4bd Fix mesh view with double vertex attribute inputs 2019-01-04 11:48:35 +00:00
baldurk b08d277b61 Apply clang-format to embedded internal shader source
* It gets a couple of things less than ideal, mostly glsl block names being on
  the next line, but otherwise it's readable and stops mixed tabs/spaces which
  had snuck in without checks.
2018-12-17 17:10:34 +00:00
tabi.katalin a8ca37f5e5 Fix OpenGL ES fragment shader compile error
Fix fragment shader compile error (too many parameters in function call) when replaying OpenGL ES desktop application.
2018-12-17 17:10:03 +00:00
baldurk 13e7d1c134 Support display of YUV textures on D3D11, D3D12 and Vulkan
* Supported textures are decoded into standard format of YUVA, displayed
  visually with Y in green, U in blue, V in red.
* A new texture display mode 'YUVA decode' has been added which does a default
  full-range conversion from YUV to RGB.
* Custom shaders can be used to implement a custom decode matrix.
2018-12-14 20:14:07 +00:00
baldurk 62ba684567 Move Vec4u to a global struct next to Vec4f 2018-12-13 23:43:07 +00:00
tabi.katalin b54477036d Fix fragment shader compile error
OpenGL ES does not allow swizzles on scalar expressions. It causes error when replaying OpenGL ES desktop application.
2018-11-12 18:41:54 +00:00
baldurk 57caf01394 Refactor heatmap for quad overdraw/triangle size to be applied late
* Instead of baking these into the overlay texture and trying to decode them
  afterwards, we instead write a grayscale 16F value into the overlay texture,
  and add a special decode display mode that will use the heatmap and bucketing
  provided.
* This means that saving these overlay textures now saves grayscale. When saving
  to an 8-bit format, we remap to 0-255 so that greater than 1.0 values are
  mapped lower.
2018-11-01 12:23:12 +00:00
baldurk 7a6580bb0f Fix compilation of all debug shaders on GLES 2018-10-04 16:07:38 +01:00
baldurk 11cba8d36b Disable quad overdraw overlay on GLES 2018-10-04 16:07:37 +01:00
baldurk ec165964bc Fix some pedantic GLSL compilation problems 2018-10-04 16:07:36 +01:00
baldurk 345208e0d9 Avoid atomic ops on vector members
* This doesn't translate well to metalsl and is in general not very useful - we
  were only doing it to avoid packing issues which in some cases are moot
  anyway. E.g. the histogram buffer doesn't have to be std140 and packed like an
  array of vectors, it can be std430 and packed like an array of uints.
2018-09-05 12:51:00 +01:00
baldurk 04dc71ce32 Fix compilation of depth MSAA <-> Array shaders on Vulkan
* glslang doesn't like the GL_ARB_sample_shading extension
2018-08-02 18:44:31 +01:00
baldurk a82c7a10d3 Implement proxied MSAA texture contents on OpenGL 2018-08-01 17:29:39 +01:00
baldurk 296f84fb7e Change GL text rendering to be compatible with a wider set of versions
* In particular this will work with GLES 2.0
2018-07-06 22:44:26 +01:00
baldurk 573ab82fbf Match varying names in case some GL driver doesn't link by location 2018-07-06 22:44:16 +01:00
baldurk f3a210c636 Workaround for ARM bug if declaring UBOs with larger binding than set
* If the descriptor set only declares bindings 0 and 1, then a declared
  UBO with binding 2 - even if unused by the shader - will crash the
  driver.
* As a workaround for now we just #define out these UBOs unless
  compiling a pipeline that requires them.
* On OpenGL we just define the macro always, since this isn't needed.
2018-02-26 15:42:33 +00:00
baldurk cc16a81d2c Add necessary extension for compiling #version 150 fixedcol.frag
* Previously we were implicitly satisfying this by making it a separable
  program.
2018-02-21 18:32:52 +00:00
baldurk 2f73ed373b Implement GLES overlays by dropping use of separable programs
* GLES separable programs are completely broken, so we need to just go
  back to ye-olde style of linking shaders together. On GLES this is
  particularly painful as it means we have to version match whatever
  shader the user was using.
2018-02-13 21:10:11 +00:00
baldurk 77569fa75d Patch checkerboard.frag for GLES compat (input/output precise match) 2018-01-31 18:24:17 +00:00
baldurk 65724841b6 Shader discard doesn't seem to work well on mobile, remove it
* Instead we write transparent black when out of bounds. This only works
  when we're blending, but the cases that we don't blend are when we do
  a blit to a precisely sized output target with no offset, so it
  shouldn't cause a problem.
2018-01-02 15:13:07 +00:00
baldurk e305029ddd Update copyright years to 2018 2018-01-01 17:55:29 +00:00
Jimmy Lee 06502e12c4 remap all depth format for gles depth fetch 2017-07-21 08:18:56 -07:00
babymustgrowstrong 3b1ace7a53 Various fixes/improvements from Android OpenGL ES development 2017-06-08 06:01:39 -07:00
baldurk 70e8abb382 Fix handling of slice offsets for 3D textures
* There were inconsistencies that could lead to off-by-one or
  missampling in some cases when applying a slight offset to ensure we
  sample the selected slice of the texture.
2017-05-23 16:42:55 +01:00
babymustgrowstrong 43d4268263 Various changes/fixes for OpenGLES
bgra8_ext support
glMapBufferOES support
shader compile fix debuguniforms.h
2017-05-03 15:30:43 -07:00
Janos Pantos 46a12525ef Modify shaders to be GLES compatible. 2017-03-09 19:13:21 +00:00
baldurk 5f36a16612 atomic operations on buffers aren't writeonly 2017-02-13 10:00:37 +00:00
baldurk d368cf2919 Require GL_ARB_gpu_shader5 for gl_SampleMaskIn in quad write shader 2017-01-24 10:14:55 +00:00
baldurk 5c8fca5791 Require GL_ARB_shader_image_load_store for quad-overdraw resolve pass 2017-01-17 18:38:32 +00:00