Newer drivers have bug fixes that help Blender function correctly. On Windows drivers are provided by the graphics card manufacturer (Intel). Windows update automatically installs graphics drivers, or your computer manufacturer may provide its own version of the graphics drivers. Render Errors ¶. Besides the native C4D Save options in the render settings, you can use any Arnold driver to save the render output. For example, add an Arnold Driver (Plugins C4DtoA Arnold Driver) to the scene and select the driverdeepexr in the combo box. The following built-in output drivers are available in Arnold. If Windows can't find a driver for your video card and the device didn't come with driver software, you can look for a driver on the manufacturer's website. You can usually find driver updates in the support section of the website. Click Start, click Control Panel, and then click.
-->The DxgkDdiRender function generates a direct memory access (DMA) buffer from the command buffer that the user-mode display driver passed.
Syntax
Parameters
hContext
[in] A handle to the device context for the DMA and command buffers. The display miniport driver's DxgkDdiCreateContext function previously returned this handle in the hContext member of the DXGKARG_CREATECONTEXT structure that the pCreateContext parameter of DxgkDdiCreateContext points to.
If the driver does not support context creation, the Microsoft DirectX graphics kernel subsystem replaces the handle to the context with a handle to the device. The display miniport driver's DxgkDdiCreateDevice function previously returned the device handle in the hDevice member of the DXGKARG_CREATEDEVICE structure that the pCreateDevice parameter of DxgkDdiCreateDevice points to.
pRender
[in/out] A pointer to a DXGKARG_RENDER structure that contains information about the DMA and command buffers.
Return value
DxgkDdiRender returns one of the following values:
Return code | Description |
---|---|
STATUS_SUCCESS | The entire command buffer was translated. |
STATUS_NO_MEMORY | DxgkDdiRender could not allocate memory that was required for it to complete. |
STATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER | The current DMA buffer is depleted. |
STATUS_PRIVILEGED_INSTRUCTION | DxgkDdiRender detected nonprivileged instructions (that is, instructions that access memory beyond the privilege of the current central processing unit [CPU] process). |
STATUS_ILLEGAL_INSTRUCTION | DxgkDdiRender detected instructions that graphics hardware could not support. |
STATUS_INVALID_PARAMETER | DxgkDdiRender detected instruction parameters that graphics hardware could not support; however, the graphics hardware can support the instructions themselves. The driver is not required to return this error code. Instead, it can return STATUS_ILLEGAL_INSTRUCTION when it detects unsupported instruction parameters. |
STATUS_INVALID_USER_BUFFER | DxgkDdiRender detected data or instruction underrun or overrun. That is, the driver received less or more instructions or data than expected. The driver is not required to return this error code. Instead, it can return STATUS_ILLEGAL_INSTRUCTION when it detects data or instruction underrun or overrun. |
STATUS_INVALID_HANDLE | DxgkDdiRender detected an invalid handle in the command buffer. |
STATUS_GRAPHICS_DRIVER_MISMATCH | The display miniport driver is not compatible with the user-mode display driver that initiated the call to DxgkDdiRender (that is, submitted the command buffer). |
STATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE | The display miniport driver detected an error in the DMA stream. The graphics context device is placed in a lost state if the driver returns this error code. |
Remarks
The DirectX graphics kernel subsystem calls the display miniport driver's DxgkDdiRender function to generate a DMA buffer from the command buffer that the user-mode display driver passed. When the display miniport driver translates from the command buffer to the DMA buffer, the driver should also validate the command buffer to ensure that the command buffer does not contain any privileged commands or commands that can be used to access memory that does not belong to the process. In addition to the output DMA buffer, the display miniport driver should also generate a list of output patch locations. The video memory manager uses this list to split and patch DMA buffers appropriately.
Both the command buffer pCommand and the input patch-location list pPatchLocationListIn that the user-mode display driver generates are allocated from the user-mode address space and are passed to the display miniport driver untouched. The display miniport driver must use __try/__except
code on any access to the buffer and list and must validate the content of the buffer and list before copying the content to the respective kernel buffers (that is, before copying the content of the pCommand member to the pDmaBuffer member and the content of the pPatchLocationListIn member to the pPatchLocationListOut member, which are all members of the DXGKARG_RENDER structure that the pRender parameter points to).
Here's an example of how display miniport drivers should access these buffers using __try
and __except
logic. AllocationListIn points to the user-mode buffer.
Note
Access to the kernel buffers does not require protection from try/except
code.
The display miniport driver is not required to use information that the user-mode display driver provides if recreating the information is more optimal. For example, if pPatchLocationListIn is empty because the user-mode display driver did not provide an input patch-location list, the display miniport driver can generate the content of pPatchLocationListOut based on the content of the command buffer instead.
The allocation list that the user-mode display driver provides is validated, copied, and converted into a kernel-mode allocation list during the kernel transition. The DirectX graphics kernel subsystem converts each D3DDDI_ALLOCATIONLIST element into a DXGK_ALLOCATIONLIST element by converting the D3DKMT_HANDLE-typed handle that the user-mode display driver provides into a device-specific handle, which the display miniport driver's DxgkDdiOpenAllocation function returns. The index of each allocation and the write status of the allocation (that is, the setting of the WriteOperation bit-field flag) remains constant during the conversion.
In addition to the device-specific handle, the DirectX graphics kernel subsystem provides the display miniport driver with the last known GPU segment address for each allocation. If allocation index N is currently paged out, the DirectX graphics kernel subsystem sets the SegmentId member of the Nth element of the pAllocationList member of DXGKARG_RENDER to zero. If the SegmentId member of the Nth element of the allocation list is not set to zero, the display miniport driver must pre-patch the generated DMA buffer with the provided segment address information. The driver must pre-patch when requested because the DirectX graphics kernel subsystem might not call the DxgkDdiPatch function on a DMA buffer that the driver should have properly pre-patched.
Note
Even though the driver's DxgkDdiRender function pre-patches the DMA buffer, the driver must still insert all of the references to allocations into the output patch-location list that the pPatchLocationListOut member of DXGKARG_RENDER specifies. This list must contain all of the references because the addresses of the allocations might change before the DMA buffer is submitted to the GPU; therefore, the DirectX graphics kernel subsystem will call the DxgkDdiPatch function to repatch the DMA buffer.
To unbind an allocation, the display miniport driver can specify an element in the allocation list that references a NULL handle and then can use a patch-location element that references that NULL allocation. Typically, the driver should use the first element of the allocation list (element 0) as the NULL element.
When the display miniport driver translates a command buffer to a DMA buffer, the display miniport driver and user-mode display driver should perform the following actions for the following situations:
In guaranteed contract DMA mode (for more information, see Using the Guaranteed Contract DMA Buffer Model), the user-mode display driver must guarantee enough resources for the translation command. If enough resources do not exist for the translation, the display miniport driver must reject the DMA buffer.
The user-mode display driver should always split up commands that might translate to more than the size of a single DMA buffer because the display miniport driver's DxgkDdiRender function cannot handle a single command that is larger than the size of the DMA buffer and that cannot be split.
DxgkDdiRender should be made pageable.
Support for the DxgkDdiRenderKm function was added beginning with Windows 7 for display adapters that support GDI Hardware Acceleration.
Requirements
Minimum supported client | Available starting in Windows Vista |
Target Platform | Desktop |
Header | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |
See also
Blender uses of OpenGL for the 3D Viewport and user interface.The graphics card (GPU) and driver have a big impact on Blender’s behavior and performance.
This section lists possible solutions for graphics glitches, problems with Eevee and Cycles,and crashes related to your GPU.
Drivers¶
Upgrading to the latest graphics drivers often solves problems.Newer drivers have bug fixes that help Blender function correctly.
On Windows drivers are provided by the graphics card manufacturer (Intel).Windows update automatically installs graphics drivers, oryour computer manufacturer may provide its own version of the graphics drivers.
However these are not always the latest version or may have been corrupted in some way.We recommend to always use the official drivers.
Laptops¶
Laptops often have two GPUs for power saving purposes.One slower onboard GPU (typically Intel) and one faster dedicated GPU for a better performance (AMD or Nvidia).
For the best performance the dedicated GPU should be used for Blender.Which GPU to use for which application can be configured in your graphics driver settings.
If there is a graphics glitch or crash specific to the onboard GPU, then using the dedicated GPU can help avoid that.Or vice versa, if the dedicated GPU causes issues, then using the onboard graphics can help.
Compatibility¶
In some cases Blender may crash on startup. Running Blender in compatibility modecan help in fixing this issue. To enable compatibility mode, RMB onthe Blender executable and select Properties ‣ Compatibilityand enable Run this program in compatibility mode.Confirm the changes with Apply.
Common Problems¶
Unsupported Graphics Driver Error¶
This means your graphics card and driver do not have the minimum required OpenGL 3.3 version needed by Blender.
Installing the latest driver can help upgrade the OpenGL version,though some graphics cards are simply too old to run the latest Blender.Using Blender 2.79 or earlier is the only option then.
Crash on Startup¶
Try running Blender from the command line,to see if any helpful error messages are printed.
On Windows, graphics drivers can sometimes get corrupted.In this case it can help to uninstall all graphics drivers (there may be multiple from Intel, AMD and Nvidia) andperform a clean installation with drivers from the manufacturer’s website.
Poor Performance¶
Update your graphics drivers (see above).
On laptops, make sure you are using a dedicated GPU (see above).
Try lowering quality settings in Preferences ‣ System ‣ Memory & Limits.
Try undoing settings in your graphics drivers, if you made any changes there.
Drivers Render Download
Render Errors¶
Detected Microsoft Basic Render Driver
See Eevee andCycles documentation respectively.
Wrong Selection in 3D Viewport¶
See Invalid Selection, Disable Anti-Aliasing.
Virtual Machines¶
Running Blender inside a virtual machine is known to have problemswhen OpenGL drawing calls are forwarded to the host operating system.
Disable Microsoft Basic Render Driver
To resolve this, configure the system to use PCI passthrough.
Drivers Render Background
Information¶
Basic Rendering Driver
To find out which graphics card and driver Blender is using,use Help ‣ Save System Info inside Blender.The OpenGL section will have information about your graphics card, vendor and driver version.