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-09-22Cycles: Cleanup in oneAPI math includes and definitionsWerner, Stefan
Now explicitly including math.h first before #defining funcitons. This avoids undefined behavior and improves compatibility with different SYCL compilers and backends.
2022-09-06Fix T100824: Cycles GPU render broken on macOS 13 Beta and Apple siliconBrecht Van Lommel
The recent revert of Apple silicon inlining changes to avoid long compile times worked on macOS 12, but in macOS 13 Beta it results in render errors. This may be a compiler bug and perhaps get fixed in time, but try to be on the safe side and ensure Blender 3.3.0 works regardless. This brings part of the inlining back, which brings improved performance but also longer compiler times again. Compile time is around 2min now, where the previous full inlining was about 5-7min. Patch by Michael Jones. Differential Revision: https://developer.blender.org/D15897
2022-09-06Cleanup: spelling in comments, formatting, move comments into headersCampbell Barton
2022-09-02Cleanup: refactoring of kernel film function names and organizationBrecht Van Lommel
2022-08-31Merge branch 'blender-v3.3-release'Xavier Hallade
2022-08-31Cycles: Enforce Windows driver version requirements for syclXavier Hallade
sycl/L0 runtime reports compute-runtime version since Intel graphics driver 101.3268 on Windows, when querying driver version from sycl. Prior to this driver, it was 0. Now we can bump minimum requirement to this one and filter-out devices returning 0. Maniphest Tasks: T100648
2022-08-29Merge branch 'blender-v3.3-release'Nikita Sirgienko
2022-08-29Cycles: Remove "return" and "assert" from oneAPI kernel codeNikita Sirgienko
2022-08-29Merge branch 'blender-v3.3-release'Nikita Sirgienko
2022-08-29Cycles: Increased minimum supported driver for Windows in oneAPINikita Sirgienko
2022-08-25Merge branch 'blender-v3.3-release'Sergey Sharybin
2022-08-25Fix Cycles oneAPI for a newer DPC++ compiler versionSergey Sharybin
2022-08-18Merge branch 'blender-v3.3-release'Brecht Van Lommel
2022-08-18Cycles: disable Metal inlining optimization on Apple GPUsBrecht Van Lommel
This gave a 1.1x speedup, however also leads to very long compile times that make it seems like Blender has stopped working. This can be brought back in the future behind an option that users can explicitly enabled. Fix T100102 Ref D14923, D14763, T92212
2022-08-15Merge branch 'blender-v3.3-release'Brecht Van Lommel
2022-08-13Fix Cycles MetalRT compile errorBrecht Van Lommel
2022-08-09Cleanup: make vector types make/print functions consistent between CPU and GPUBrecht Van Lommel
Now all the same ones are available on CPU and GPU, which was previously not possible due to lack of operator overloadng in OpenCL. Print functions are no-ops on some GPUs. Ref D15535
2022-08-08Merge branch 'blender-v3.3-release'Germano Cavalcante
2022-08-08Fix: Error in oneAPI image code for texture access with clip extensionNikita Sirgienko
2022-08-05Merge branch 'blender-v3.3-release'Brecht Van Lommel
2022-08-05Fix T99201: Cycles render difference with 3D hair curves between OptiX and ↵Brecht Van Lommel
Emrbee It should consistently use the Cycles pirmitive ID for self intersection detection, not the one from the OptiX or Embree acceleration structure. Differential Revision: https://developer.blender.org/D15632
2022-08-01Merge branch 'blender-v3.3-release'Bastien Montagne
2022-08-01Cycles: Resolve recent performance regression in oneAPI implementation for ↵Nikita Sirgienko
Intel® Arc™ GPUs Recently, performance with oneAPI have regressed due some recent changes in Blender itself. This commit's changes is resolving this and also improve compilation time for oneAPI backend first execution (or Blender compilation time in case of AoT). Regression have appeared after 5152c7c152e and not related to the changes itself, but increase of kernels complexity introduced with it. Changes in this commit is marking some Blender functions as noinlined for oneAPI backend, which helps GPU compiler to deal with this complexity without any negative side-effects on performance.
2022-07-28Cleanup: simplifications and consistency for vector typesBrecht Van Lommel
* OneAPI: remove separate float3 definition * OneAPI: disable operator[] to match other GPUs * OneAPI: make int3 compact to match other GPUs * Use #pragma once * Add __KERNEL_NATIVE_VECTOR_TYPES__ to simplify checks * Remove unused vector3
2022-07-27Cycles: switch Cycles triangle barycentric convention to match Embree/OptiXBrecht Van Lommel
Simplifies intersection code a little and slightly improves precision regarding self intersection. The parametric texture coordinate in shader nodes is still the same as before for compatibility.
2022-07-27Fix broken BVH2 on CPU after recent changesBrecht Van Lommel
Runtime switching between Embree and BVH2 got lost.
2022-07-27Cycles oneAPI: simplify num_concurrent_states selectionXavier Hallade
The number of Execution Units and resident "threads" (simd width * threads per EUs) are now exposed and used to select the number of states using a simplified heuristic.
2022-07-26Cleanup: spelling in commentsCampbell Barton
2022-07-26Fix Cycles Metal build errors after recent changesBrecht Van Lommel
float8 is a reserved type in Metal, but is not implemented. So rename to float8_t for now. Also move back intersection handlers to kernel.metal, they can't be in the class that encapsulates the other Metal kernel functions.
2022-07-25Cleanup: remove __KERNEL_CPU__Brecht Van Lommel
This was tested in some places to check if code was being compiled for the CPU, however this is only defined in the kernel. Checking __KERNEL_GPU__ always works.
2022-07-25Cleanup: move device BVH code to kernel/device/*/bvh.hBrecht Van Lommel
Having the OptiX/MetalRT/Embree/MetalRT implementations all in one file with many #ifdefs became too confusing. Instead split it up per device, and also move it together with device specific hit/filter/intersect functions and associated data types.
2022-07-25Cycles: simplify handling of ray distance in GPU renderingBrecht Van Lommel
All our intersections functions now work with unnormalized ray direction, which means we no longer need to transform ray distance between world and object space, they can all remain in world space. There doesn't seem to be any real performance difference one way or the other, but it does simplify the code.
2022-07-15Cycles: refactor rays to have start and end distance, fix precision issuesBrecht Van Lommel
For transparency, volume and light intersection rays, adjust these distances rather than the ray start position. This way we increment the start distance by the smallest possible float increment to avoid self intersections, and be sure it works as the distance compared to be will be exactly the same as before, due to the ray start position and direction remaining the same. Fix T98764, T96537, hair ray tracing precision issues. Differential Revision: https://developer.blender.org/D15455
2022-07-15Fix Cycles MetalRT error after recent specialization changesBrecht Van Lommel
2022-07-15Cycles: Apple Silicon optimization to specialize intersection kernelsMichael Jones
The Metal backend now compiles and caches a second set of kernels which are optimized for scene contents, enabled for Apple Silicon. The implementation supports doing this both for intersection and shading kernels. However this is currently only enabled for intersection kernels that are quick to compile, and already give a good speedup. Enabling this for shading kernels would be faster still, however this also causes a long wait times and would need a good user interface to control this. M1 Max samples per minute (macOS 13.0): PSO_GENERIC PSO_SPECIALIZED_INTERSECT PSO_SPECIALIZED_SHADE barbershop_interior 83.4 89.5 93.7 bmw27 1486.1 1671.0 1825.8 classroom 175.2 196.8 206.3 fishy_cat 674.2 704.3 719.3 junkshop 205.4 212.0 257.7 koro 310.1 336.1 342.8 monster 376.7 418.6 424.1 pabellon 273.5 325.4 339.8 sponza 830.6 929.6 1142.4 victor 86.7 96.4 96.3 wdas_cloud 111.8 112.7 183.1 Code contributed by Jason Fielder, Morteza Mostajabodaveh and Michael Jones Differential Revision: https://developer.blender.org/D14645
2022-07-12Cycles: fix and enable JIT oneAPI CentOS7 builds for drivers 23570+Xavier Hallade
The current specific CentOS7 workaround we have for AoT, which is to disable __FAST_MATH__ by using -fhonor-nans, now also fixes the compilation issue for JIT as well since at least driver 23570.
2022-07-08Cycles: enable oneAPI in Linux release buildsXavier Hallade
with a very high min-driver version requirement, placeholder until JIT CentOS runtime compilation issue gets fixed in a defined version. min-driver version check can be worked around by setting CYCLES_ONEAPI_ALL_DEVICES environment variable.
2022-07-06Cycles oneAPI: Remove direct dependency on Level-ZeroXavier Hallade
We used it only to access device id for explicitly allowing Arc GPUs. It made the backend require ze_loader.dll which could be problematic if we end up using direct linking. I've replaced filtering based on PCI device id by using other HW properties instead (EUs, threads per EU), that are now available through Level-Zero.
2022-07-06Cleanup: fix comments in oneAPI kernel.cppXavier Hallade
2022-07-06Cycles: Improve an occupancy for Intel GPUsNikita Sirgienko
Initially oneAPI implementation have waited after each memory operation, even if there was no need for this. Now, the implementation will wait only if it is really necessary - it have improved performance noticeble for some scenes and a bit for the rest of them.
2022-07-01Cycles: fix support for multiple Intel GPUsXavier Hallade
Identical Intel GPUs ended up with the same id. Added PCI BDF to the id to make it unique.
2022-07-01Cleanup: add missing license headers in Cycles oneAPI implementationXavier Hallade
2022-06-30Cleanup: spelling in commentsCampbell Barton
2022-06-29Cycles: Add support for rendering on Intel GPUs using oneAPIXavier Hallade
This patch adds a new Cycles device with similar functionality to the existing GPU devices. Kernel compilation and runtime interaction happen via oneAPI DPC++ compiler and SYCL API. This implementation is primarly focusing on Intel® Arc™ GPUs and other future Intel GPUs. The first supported drivers are 101.1660 on Windows and 22.10.22597 on Linux. The necessary tools for compilation are: - A SYCL compiler such as oneAPI DPC++ compiler or https://github.com/intel/llvm - Intel® oneAPI Level Zero which is used for low level device queries: https://github.com/oneapi-src/level-zero - To optionally generate prebuilt graphics binaries: Intel® Graphics Compiler All are included in Linux precompiled libraries on svn: https://svn.blender.org/svnroot/bf-blender/trunk/lib The same goes for Windows precompiled binaries but for the graphics compiler, available as "Intel® Graphics Offline Compiler for OpenCL™ Code" from https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html, for which path can be set as OCLOC_INSTALL_DIR. Being based on the open SYCL standard, this implementation could also be extended to run on other compatible non-Intel hardware in the future. Reviewed By: sergey, brecht Differential Revision: https://developer.blender.org/D15254 Co-authored-by: Nikita Sirgienko <nikita.sirgienko@intel.com> Co-authored-by: Stefan Werner <stefan.werner@intel.com>
2022-06-28Cycles: enable Vega GPU/APU supportSayak Biswas
Enables Vega and Vega II GPUs as well as Vega APU, using changes in HIP code to support 64-bit waves and a new HIP SDK version. Tested with Radeon WX9100, Radeon VII GPUs and Ryzen 7 PRO 5850U with Radeon Graphics APU. Ref T96740, T91571 Differential Revision: https://developer.blender.org/D15242
2022-06-20Cleanup: renaming and consistency for kernel dataBrecht Van Lommel
* Rename "texture" to "data array". This has not used textures for a long time, there are just global memory arrays now. (On old CUDA GPUs there was a cache for textures but not global memory, so we used to put all data in textures.) * For CUDA and HIP, put globals in KernelParams struct like other devices. * Drop __ prefix for data array names, no possibility for naming conflict now that these are in a struct.
2022-06-07Cycles: Useful Metal backend debug & profiling functionalityMichael Jones
This patch adds some useful debugging & profiling env vars to the Metal backend: - `CYCLES_METAL_PROFILING`: output a per-kernel timing report at the end of the render - `CYCLES_METAL_DEBUG`: enable per-dispatch tracing (very verbose) - `CYCLES_DEBUG_METAL_CAPTURE_KERNEL`: enable programatic .gputrace capture for a specified kernel index Here's an example of the timing report with `CYCLES_METAL_PROFILING` enabled: ``` --------------------------------------------------------------------------------------------------- Kernel name Total threads Dispatches Avg. T/D Time Time% --------------------------------------------------------------------------------------------------- integrator_init_from_camera 657,407,232 161 4,083,274 0.24s 0.51% integrator_intersect_closest 1,629,288,440 681 2,392,494 15.18s 32.12% integrator_intersect_shadow 751,652,291 470 1,599,260 5.80s 12.28% integrator_shade_background 304,612,074 263 1,158,220 1.16s 2.45% integrator_shade_surface 1,159,764,041 676 1,715,627 20.57s 43.52% integrator_shade_shadow 598,885,847 418 1,432,741 1.27s 2.69% integrator_queued_paths_array 2,969,650,130 805 3,689,006 0.35s 0.74% integrator_queued_shadow_paths_array 593,936,619 379 1,567,115 0.14s 0.29% integrator_terminated_paths_array 22,205,417 155 143,260 0.05s 0.10% integrator_sorted_paths_array 2,517,140,043 676 3,723,579 1.65s 3.50% integrator_compact_paths_array 648,912,748 155 4,186,533 0.03s 0.07% integrator_compact_states 20,872,687 155 134,662 0.14s 0.29% integrator_terminated_shadow_paths_array 374,100,675 438 854,111 0.16s 0.33% integrator_compact_shadow_paths_array 503,768,657 438 1,150,156 0.05s 0.10% integrator_compact_shadow_states 37,664,941 202 186,460 0.23s 0.50% integrator_reset 25,165,824 6 4,194,304 0.06s 0.12% film_convert_combined_half_rgba 3,110,400 6 518,400 0.00s 0.01% prefix_sum 676 676 1 0.19s 0.40% --------------------------------------------------------------------------------------------------- 6,760 47.27s 100.00% --------------------------------------------------------------------------------------------------- ``` Reviewed By: brecht Differential Revision: https://developer.blender.org/D15044
2022-05-31Merge branch 'blender-v3.2-release'Brecht Van Lommel
2022-05-31Fix Cycles MNEE not working for MetalBrecht Van Lommel
Move MNEE to own kernel, separate from shader ray-tracing. This does introduce the limitation that a shader can't use both MNEE and AO/bevel, but that seems like the better trade-off for now. We can experiment with bigger kernel organization changes later. Differential Revision: https://developer.blender.org/D15070
2022-05-24Cleanup: make formatJacques Lucke