diff options
author | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2022-05-03 19:00:12 +0300 |
---|---|---|
committer | Kévin Dietrich <kevin.dietrich@mailoo.org> | 2022-05-03 19:02:10 +0300 |
commit | 947f8ba300090027304680c624c6257c41417a6b (patch) | |
tree | dba89119d7a20b72c6db67036e44af095176a8da /source/blender/draw/intern/draw_subdivision.h | |
parent | 5962db093f2f1fcf735ceaaa1ba6bbd25efc397f (diff) |
Fix T96338: GPU subdiv crash switching to UV editing
The crash is caused as the data for the UV editor is requested before
the data for the mesh as a separate draw update. Since building the UV
stretch angle buffer requires the position buffer, the latter is not
created yet in this case.
To fix this, create a local position buffer from the subdivision data. An
alternate fix was considered to remove the dependency on the position
buffer by interpolating on the GPU the coarse stretch angle buffer but
this did work. Maybe this will be revisited.
Diffstat (limited to 'source/blender/draw/intern/draw_subdivision.h')
-rw-r--r-- | source/blender/draw/intern/draw_subdivision.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_subdivision.h b/source/blender/draw/intern/draw_subdivision.h index e5f64a99092..267a98f2d37 100644 --- a/source/blender/draw/intern/draw_subdivision.h +++ b/source/blender/draw/intern/draw_subdivision.h @@ -13,6 +13,7 @@ struct BMesh; struct GPUIndexBuf; struct GPUUniformBuf; struct GPUVertBuf; +struct GPUVertFormat; struct Mesh; struct MeshBatchCache; struct MeshBufferCache; @@ -284,6 +285,10 @@ void draw_subdiv_build_edituv_stretch_angle_buffer(const DRWSubdivCache *cache, int uvs_offset, struct GPUVertBuf *stretch_angles); +/** Return the format used for the positions and normals VBO. + */ +struct GPUVertFormat *draw_subdiv_get_pos_nor_format(); + #ifdef __cplusplus } #endif |