Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-02-01GPUShader: Add support for gpu_BaryCoord and fallbackClément Foucault
This adds the possibility to use the `gpu_BaryCoord[NoPersp]` builtin to support barycentric coordinates without geometry shader. The `BuiltinBits::LAYER` builtin needs to be manually added to the `GPUShaderCreateInfo` in order to use this feature. Note: This is only available for shaders using `GPUShaderCreateInfo`. A geometry shader fallback is generated if the extension `AMD_shader_explicit_vertex_parameter` is not available. `NV_fragment_shader_barycentric` was not considered because it is not present inside the `glew.h` with use and seems to only be available with vulkan.
2022-02-01GPUShader: Add support for vertex shader gl_Layer and fallbackClément Foucault
This adds the possibility to use the `gpu_Layer` builtin to support layered rendering without geometry shader. The `BuiltinBits::LAYER` builtin needs to be manually added to the `GPUShaderCreateInfo` in order to use this feature. Note: This is only available for shaders using `GPUShaderCreateInfo`. A geometry shader fallback is generated if the extension `AMD_shader_explicit_vertex_parameter` is not available.
2022-01-26Cleanup: unused variable warning, formattingCampbell Barton
2022-01-24Add workaround for broken interface query functions on Intel HD Graphics ↵Clment Foucault
4400 and 4600 Fixes T93680 For current drivers of Intel HD Graphics 4400 and 4600, various Program Introspection functions appear broken and return incorrect values, causing crashes in the current handling of SSBOs. Disable use of this feature on those devices. Add checks to features that use SSBOs (Hair and Subdivision Modifier). Reviewed By: fclem, jbakker Maniphest Tasks: T93680 Differential Revision: https://developer.blender.org/D13806
2022-01-19GPUShaderCreateInfo: Rework geometry shader layout supportClément Foucault
This merge the description into one struct only that can be more easily copied during `finalize()`. The in and out layout parameters are better named and extended with the invocation count (with fallback support)
2022-01-17Revert "Revert "GPUShaderCreateInfo for interface abstraction""Jeroen Bakker
This reverts commit edee5a947b7ea3e1324aa334a22c7c9bbf47f5f7. Fixes compilation error (Missing file BLI_float2.hh)
2022-01-17Revert "GPUShaderCreateInfo for interface abstraction"Jeroen Bakker
This reverts commit 8fb2ff458ba579dba08bfdf57d043ad158b5db07. Missing some files.
2022-01-17GPUShaderCreateInfo for interface abstractionJeroen Bakker
This is a first part of the Shader Create Info system could be. A shader create info provides a way to define shader structure, resources and interfaces. This makes for a quick way to provide backend agnostic binding informations while also making shader variations easy to declare. - Clear source input (only one file). Cleans up the GPU api since we can create a shader from one descriptor - Resources and interfaces are generated by the backend (much simpler than parsing). - Bindings are explicit from position in the array. - GPUShaderInterface becomes a trivial translation of enums and string copy. - No external dependency to third party lib. - Cleaner code, less fragmentation of resources in several libs. - Easy to modify / extend at runtime. - no parser involve, very easy to code. - Does not hold any data, can be static and kept on disc. - Could hold precompiled bytecode for static shaders. This also includes a new global dependency system. GLSL shaders can include other sources by using #pragma BLENDER_REQUIRE(...). This patch already migrated several builtin shaders. Other shaders should be migrated one at a time, and could be done inside master. There is a new compile directive `WITH_GPU_SHADER_BUILDER` this is an optional directive for linting shaders to increase turn around time. What is remaining: - pyGPU API {T94975} - Migration of other shaders. This could be a community effort. Reviewed By: jbakker Maniphest Tasks: T94975 Differential Revision: https://developer.blender.org/D13360
2021-12-09Cleanup: move public doc-strings into headers for 'gpu'Campbell Barton
Ref T92709
2021-11-20Fix T92090: Eevee crash with Intel HD 4000 and macOS 10.15.7Brecht Van Lommel
A recent security update to macOS 10.15.7 causes crashes when using Eevee and various other 3D viewport features. It appears that glGenerateMipmap is broken, causing a crash whenever its commands are flushed/submitted to the GPU. Ideally this would be fixed in a driver update, however it's unlikely this will happen. Earlier macOS versions have been receiving security updates for 2 years, and that window has just passed for 10.15. Further, computers with these GPUs can't upgrade to a newer macOS version. As a workaround, disable mipmaps on these GPUs, by setting the mipmap max level to 0 and not calling glGenerateMipmaps. Effects like depth of field also use mipmaps, but fill in the mip levels by other means. In those cases we keep the mipmap level. Differential Revision: https://developer.blender.org/D13295
2021-09-06Fix crash drawing hair with older GPUs.Jeroen Bakker
Some GPU's have support for compute shaders, but don't support GLSL 4.3. This resulted in compiler errors and crashes. This issue could have been solved by supporting older GLSL languages but that would have been a hassle to get it right. We already have a fallback in place for GPU's that don't support compute shaders at all.
2021-08-04Fix transparent faces on certain AMD cardsGavin Li
This patch fixes an issue with missing faces when assigning a material slot other than the first to faces on AMD TAHITI cards. Refer to T78390 and T74024 for a description of this issue. This patch also incorporates fix from T78390 for KAVERI. {F9029258} Reviewed By: fclem Differential Revision: https://developer.blender.org/D9305
2021-07-16Cleanup: remove redundant parenthesesCampbell Barton
2021-07-07Cleanup: spelling in commentsCampbell Barton
2021-06-29Fixed issue in previous commit.Jeroen Bakker
During development a test was disabled. Enabling it again.
2021-06-29Fix T89405: Viewport Render Preview glitching (AMD)Jeroen Bakker
AMD Drivers didn't report an additional space in the rendered. This made testing for the HQ workaround fail and the issue appeared back on certain cards. This fix will test with surrounding spaces or if the renderer name endswith the given string. If any of these are the case the hq normals workaround will be enabled.
2021-05-28DrawManager: Use Compute Shader to Update Hair.Jeroen Bakker
This patch will use compute shaders to create the VBO for hair. The previous implementation uses transform feedback. Timings before: between 0.000069s and 0.000362s. Timings after: between 0.000032s and 0.000092s. Speedup isn't noticeable by end-users. The patch is used to test the new compute shader pipeline and integrate it with the draw manager. Allowing EEVEE, Workbench and other draw engines to use compute shaders with the introduction of `DRW_shgroup_call_compute` and `DRW_shgroup_vertex_buffer`. Future improvements are possible by generating the index buffer of hair directly on the GPU. NOTE: that compute shaders aren't supported by Apple and still use the transform feedback workaround. Reviewed By: fclem Differential Revision: https://developer.blender.org/D11057
2021-05-26Revert "DrawManager: Use Compute Shader to Update Hair."Jeroen Bakker
This reverts commit 8f9599d17e80254928d2d72081a4c7e0dee64038. Mac seems to have an error with this change. ``` ERROR: /Users/blender/git/blender-vdev/blender.git/source/blender/draw/intern/draw_hair.c:115:44: error: use of undeclared identifier 'shader_src' ERROR: /Users/blender/git/blender-vdev/blender.git/source/blender/draw/intern/draw_hair.c:123:13: error: use of undeclared identifier 'shader_src' ERROR: make[2]: *** [source/blender/draw/CMakeFiles/bf_draw.dir/intern/draw_hair.c.o] Error 1 ERROR: make[1]: *** [source/blender/draw/CMakeFiles/bf_draw.dir/all] Error 2 ERROR: make: *** [all] Error 2 ```
2021-05-26DrawManager: Use Compute Shader to Update Hair.Jeroen Bakker
This patch will use compute shaders to create the VBO for hair. The previous implementation uses tranform feedback. Timings master (transform feedback with GPU_USAGE_STATIC between 0.000069s and 0.000362s Timings transform feedback with GPU_USAGE_DEVICE_ONLY. between 0.000057s and 0.000122s Timings compute shader between 0.000032 and 0.000092s Future improvements: * Generate hair Index buffer using compute shaders: currently done single threaded on CPU, easy to add as compute shader. Reviewed By: fclem Differential Revision: https://developer.blender.org/D11057
2021-05-26GPU: Compute Pipeline.Jeroen Bakker
With the compute pipeline calculation can be offloaded to the GPU. This patch only adds the framework for compute. So no changes for users at this moment. NOTE: As this is an OpenGL4.3 feature it must always have a fallback. Use `GPU_compute_shader_support` to check if compute pipeline can be used. Check `gpu_shader_compute*` test cases for usage. This patch also adds support for shader storage buffer objects and device only vertex/index buffers. An alternative that had been discussed was adding this to the `GPUBatch`, this was eventually not chosen as it would lead to more code when used as part of a shading group. The idea is that we add an `eDRWCommandType` in the near future. Reviewed By: fclem Differential Revision: https://developer.blender.org/D10913
2021-05-21Fix T88227: Eevee not working on AMD 535 cards.Jeroen Bakker
Enabled HQ normals workaround for this specific configuration.
2021-05-17Cleanup: missing declaration warningCampbell Barton
2021-05-14Python GPU: New 'platform' moduleGermano Cavalcante
This module exposes the platform utils defined in the GPU module in C. This will be useful for porting existing code with `bgl` to `gpu`. Reviewed By: fclem, brecht, campbellbarton Maniphest Tasks: T80730 Part of D11147
2021-05-14Python GPU: New 'capabilities' moduleGermano Cavalcante
This module exposes the capabilities defined in the GPU module in C. This will be useful for porting existing code in `bgl` to `gpu`. Reviewed By: fclem, brecht, campbellbarton Maniphest Tasks: T80730 Part of D11147
2021-05-10Fix T88180: Enable HQ normal workaround for RX 580X cards.Jeroen Bakker
This needs to be backported to 2.83.
2021-02-06UI: Fix Typos in Comments and Docsluzpaz
Approximately 91 spelling corrections, almost all in comments. Differential Revision: https://developer.blender.org/D10288 Reviewed by Harley Acheson
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-02-02macOS: fix warning about unkown GPU with Apple M1 chipBrecht Van Lommel
2021-01-27Fix T84329: Crash when loading the blender with deprecated graphics driverGermano Cavalcante
Add the driver `4.5.13467` related to `Radeon R5 Graphics` to the workaround list.
2021-01-26GPU: Enable HQ normals workaround for any AMD Drivers on Polaris.Jeroen Bakker
2021-01-26GPU: Enable HQ normals workaround for AMD 21.1.1 driver.Jeroen Bakker
AMD 21.1.1 still has the same issues as reported in T82856.
2021-01-12GPU: Remove Limited Support AMD PolarisJeroen Bakker
Removing the limited support message as the known opengl issues of the recent drivers with polaris cards have been tackled.
2021-01-08GPU: Mark AMD Polaris 20.11+ drivers with limited support.Jeroen Bakker
The issue does not render wireframes correctly.
2021-01-08GPU: Enable HQ normal work around on Linux.Jeroen Bakker
Linux does not report the driver version. It does report the OpenGL version. This change will check the OpenGL version to enable the HQ normal work around.
2021-01-04GPU: Enable HQ normal work around for AMD PolarisJeroen Bakker
THe high quality normals work around is enabled for Polaris cards using the official drivers. Since driver version 2.11.2 they fail to render using low quality normals. The detection of polaris cards is done by matching the opengl renderer. The renderer strings have been extracted from various reports linked to {T82856} but isn't complete as some reports are missing the exact renderer as users don't always report via the help menu.
2020-12-09Degraded AMD 20.11.3 driver to limited support.Jeroen Bakker
2020-12-09Workaround for Access Violation startup crash on deprecated Radeon GPUs on ↵Jeroen Bakker
Windows This is a workaround for T80804. There's a startup crash that happens on 2.91.0 on Windows, an `EXCEPTION_ACCESS_VIOLATION` on `atio6axx.dll`. It is triggered by `glClear` on the `detect_mip_render_workaround` function. The workaround moves the function after the device/driver workaround section and sets the flag to the affected one to avoid running the check. It is deprecated hardware that has not meet the minimum requirements since 2.79, but is still usable and this extends its usability a bit before the cards are finally blacklisted. Reviewed By: Jeroen Bakker Differential Revision: https://developer.blender.org/D9667
2020-12-09Raised AMD/Terascale2 from unsupported to supported.Jeroen Bakker
There is a patch that fixes the crash on startup {D9667}.
2020-12-09Raised AMD CEDAR on Linux from unsupported to limited supportJeroen Bakker
There is a workaround available by setting the environment variable `R600_DEBUG=nosb`.
2020-12-02GPU: Show Limited support message for polaris + 20.11.2 drivers.Jeroen Bakker
See T82856 for details.
2020-12-02GPU: Blacklist unsupported GPUs that crash during startup.Jeroen Bakker
Since Blender 2.91 the TeraScale 2 based cards crash during startup. This patch will show the user a screen that the platform they are using isn't supported. The GPUs have been carefully handpicked from dozens of reports. T83124, T83127, T83103, T83091, T83045, T83065, T82750, T82889, T82925, T82640, T82429, T82436, T82446.
2020-11-06Cleanup: Clang-Tidy, modernize-redundant-void-argSergey Sharybin
2020-09-12GPU: Add Image Load Store extension supportClément Foucault
This wraps the functionality used to speedup EEVEE volumetrics. This touches the rendering code of EEVEE as it should fix a mis-usage of the GL barrier. The barrier changed type and location, removing an unused barrier.
2020-09-10GL: Wrap extension support inside GLContextClément Foucault
This makes it possible to disable all the extensions when forcing workarounds. Also it will allow future options to selectively disable each extension to know which one is buggy.
2020-09-10GL: Add fallback debug layerClément Foucault
This is to improve debugging on older hardware that may not support 4.3 debug capabilities (like Macs). This avoids sprinkling glGetErrors manually. This might still be needed to find the root cause since not all functions are covered. This overrides the functions pointers that GLEW have already init. This is only enabled if using --debug-gpu option and the debug extension are not available. This also cleanup the usage of GLContext::debug_layer_support and use wrapper to set object labels.
2020-09-09Cleanup: GPU: Replace multiple checks by GLContext::debug_layer_supportClément Foucault
2020-09-08GLBackend: Fix gl error inside the mip rendering workaround detectionClément
This was caused by an incorrect mipmap size. Also add debug checks for good mesure.
2020-09-07GPUCapabilities: Isolate GL memory statisticsClément Foucault
This is part of the Vulkan task T68990 This is a simple cleanup.
2020-09-07GPU: Rename gpu_extensions to gpu_capabilitiesClément Foucault
This makes more sense as this module has more to it than just GL extensions.
2020-09-07GPUExtensions: GL backend isolationClément Foucault
This is part of the Vulkan task T68990. This commits changes a few things: - Rename extensions to capabilities (but left the file name untouched). - Cubemap mip render workaround detection is rewritten using gl commands to avoid using the GPU API before initialization. - Put all the capabilities that are only relevant for the GL backend inside GLContext as static variables. - Cleanup the names of the limit variables. - Separate all GL related workaround search inside the GL module.