diff options
author | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2022-02-26 00:04:10 +0300 |
---|---|---|
committer | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2022-02-26 00:04:10 +0300 |
commit | a911f075d7aa823b215d4e7baf91ea4f5bd6099c (patch) | |
tree | 3d7c8cdfd02962c480b2f209ac88e9606fe38eba /source/blender/draw | |
parent | 72a286760f3f2e759839c63a2a1b588aeca17e9d (diff) |
Fix T93123: viewport lags with custom attributes
The check to see if newly requested attributes are not already in the
cache was not taking into account the possibility that we do not have
new requested attributes (`num_requests == 0`). In this case, if
`attr_used` already had attributes, but `attr_requested` is empty, we
would consider the cache as dirty, and needlessly rebuild the attribute
VBOs.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_mesh.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c index 71f13fe9423..a47fd0c9067 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.c +++ b/source/blender/draw/intern/draw_cache_impl_mesh.c @@ -355,11 +355,7 @@ static void drw_mesh_attributes_merge(DRW_MeshAttributes *dst, /* Return true if all requests in b are in a. */ static bool drw_mesh_attributes_overlap(DRW_MeshAttributes *a, DRW_MeshAttributes *b) { - if (a->num_requests != b->num_requests) { - return false; - } - - for (int i = 0; i < a->num_requests; i++) { + for (int i = 0; i < b->num_requests; i++) { if (!has_request(a, b->requests[i])) { return false; } |