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
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2019-10-02 15:13:41 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-10-02 17:56:22 +0300
commitf8f28dc7841a7509727d93f05a941db82746dbd1 (patch)
tree6e64f5892acfb28ba047e04d9a7c91cb434c39f7
parentd596a6368cc62d198dd33dadd1cd0831d0de3dee (diff)
Workaround for NVidia broken driver
This disable the indirect drawcall on all Nvidia hardware. This has to be until nvidia fixes their drivers or instruct us how to correctly fix the issue. Related to T70011 Various display issues on NVIDIA after draw call batching.
-rw-r--r--source/blender/editors/space_node/drawnode.c4
-rw-r--r--source/blender/gpu/intern/gpu_batch.c5
2 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index 3beb12fbb2a..f7c772ef145 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -3890,9 +3890,7 @@ static void nodelink_batch_draw(SpaceNode *snode)
void nodelink_batch_start(SpaceNode *UNUSED(snode))
{
- /* TODO: partial workaround for NVIDIA driver bug on recent GTX/RTX cards,
- * that breaks instancing when using indirect draw-call (see T70011). */
- g_batch_link.enabled = !GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_ANY);
+ g_batch_link.enabled = true;
}
void nodelink_batch_end(SpaceNode *snode)
diff --git a/source/blender/gpu/intern/gpu_batch.c b/source/blender/gpu/intern/gpu_batch.c
index 2620ba49799..c08680d7d14 100644
--- a/source/blender/gpu/intern/gpu_batch.c
+++ b/source/blender/gpu/intern/gpu_batch.c
@@ -718,8 +718,11 @@ void GPU_draw_primitive(GPUPrimType prim_type, int v_count)
#if 0
# define USE_MULTI_DRAW_INDIRECT 0
#else
+/* TODO: partial workaround for NVIDIA driver bug on recent GTX/RTX cards,
+ * that breaks instancing when using indirect draw-call (see T70011). */
# define USE_MULTI_DRAW_INDIRECT \
- (GL_ARB_multi_draw_indirect && GPU_arb_base_instance_is_supported())
+ (GL_ARB_multi_draw_indirect && GPU_arb_base_instance_is_supported() && \
+ !GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_ANY, GPU_DRIVER_OFFICIAL))
#endif
typedef struct GPUDrawCommand {