Title: [289651] branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE
- Revision
- 289651
- Author
- [email protected]
- Date
- 2022-02-11 11:58:49 -0800 (Fri, 11 Feb 2022)
Log Message
Apply patch. rdar://problem/87136345
Modified Paths
Diff
Modified: branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/ChangeLog (289650 => 289651)
--- branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/ChangeLog 2022-02-11 19:58:46 UTC (rev 289650)
+++ branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/ChangeLog 2022-02-11 19:58:49 UTC (rev 289651)
@@ -1,3 +1,25 @@
+2022-02-11 Alan Coon <[email protected]>
+
+ Apply patch. rdar://problem/87136345
+
+ 2022-02-11 Kyle Piddington <[email protected]>
+
+ Cocoa2d-HTLM5 game apepars to use wrong vertex buffer data
+ https://bugs.webkit.org/show_bug.cgi?id=236427
+ <rdar://problem/87136345>
+
+ Reviewed by Kimmo Kinnunen.
+
+ Render encoder appears to carry stale state when a vertex array's element
+ buffer is updated, but no other parts of the buffer are updated. Reassign
+ vertex buffer bindings in this case, which clears up corruption
+ (Squished rendering elements, incorrect UV's)
+
+ * src/libANGLE/renderer/metal/VertexArrayMtl.h:
+ * src/libANGLE/renderer/metal/VertexArrayMtl.mm:
+ (rx::VertexArrayMtl::syncState):
+ (rx::VertexArrayMtl::setupDraw):
+
2022-01-24 Alan Coon <[email protected]>
Cherry-pick r288105. rdar://problem/87656387
Modified: branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h (289650 => 289651)
--- branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h 2022-02-11 19:58:46 UTC (rev 289650)
+++ branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h 2022-02-11 19:58:49 UTC (rev 289651)
@@ -151,7 +151,7 @@
mtl::BufferPool mDynamicIndexData;
std::vector<uint32_t> mEmulatedInstanceAttribs;
-
+ bool mElementArrayDirty = true;
bool mVertexArrayDirty = true;
};
} // namespace rx
Modified: branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm (289650 => 289651)
--- branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm 2022-02-11 19:58:46 UTC (rev 289650)
+++ branches/safari-613.1.17.0-branch/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm 2022-02-11 19:58:49 UTC (rev 289651)
@@ -273,6 +273,7 @@
case gl::VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER:
case gl::VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER_DATA:
{
+ mElementArrayDirty = true;
break;
}
@@ -475,23 +476,38 @@
}
desc.layouts[bufferIdx].stride = mCurrentArrayBufferStrides[v];
-
- if (mCurrentArrayBuffers[v])
- {
- cmdEncoder->setVertexBuffer(mCurrentArrayBuffers[v]->getCurrentBuffer(),
- bufferOffset, bufferIdx);
- }
- else
- {
- // No buffer specified, use the client memory directly as inline constant data
- ASSERT(mCurrentArrayInlineDataSizes[v] <= mInlineDataMaxSize);
- cmdEncoder->setVertexBytes(mCurrentArrayInlineDataPointers[v],
- mCurrentArrayInlineDataSizes[v], bufferIdx);
- }
}
} // for (v)
}
+ if(dirty || mElementArrayDirty)
+ {
+ mElementArrayDirty = false;
+ const gl::ProgramExecutable *executable = glContext->getState().getProgramExecutable();
+ const gl::AttributesMask &programActiveAttribsMask =
+ executable->getActiveAttribLocationsMask();
+
+ for (uint32_t v = 0; v < mtl::kMaxVertexAttribs; ++v)
+ {
+ uint32_t bufferIdx = mtl::kVboBindingIndexStart + v;
+ uint32_t bufferOffset = static_cast<uint32_t>(mCurrentArrayBufferOffsets[v]);
+ if (mCurrentArrayBuffers[v])
+ {
+ cmdEncoder->setVertexBuffer(mCurrentArrayBuffers[v]->getCurrentBuffer(),
+ bufferOffset, bufferIdx);
+ }
+ else
+ {
+ // No buffer specified, use the client memory directly as inline constant data
+ ASSERT(mCurrentArrayInlineDataSizes[v] <= mInlineDataMaxSize);
+ cmdEncoder->setVertexBytes(mCurrentArrayInlineDataPointers[v],
+ mCurrentArrayInlineDataSizes[v], bufferIdx);
+ }
+
+ }
+ }
+
+
*vertexDescChanged = dirty;
return angle::Result::Continue;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes