WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch for landing
bug-236427-20220211104908.patch (text/plain), 4.68 KB, created by
Kyle Piddington
on 2022-02-11 10:49:09 PST
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Kyle Piddington
Created:
2022-02-11 10:49:09 PST
Size:
4.68 KB
patch
obsolete
>Subversion Revision: 289637 >diff --git a/Source/ThirdParty/ANGLE/ChangeLog b/Source/ThirdParty/ANGLE/ChangeLog >index d10f043c7c7872bec69f25c36c6d6e3d1664ce12..8f41686051a33794e6ee2e8cb8515defba983f23 100644 >--- a/Source/ThirdParty/ANGLE/ChangeLog >+++ b/Source/ThirdParty/ANGLE/ChangeLog >@@ -1,3 +1,21 @@ >+2022-02-11 Kyle Piddington <kpiddington@apple.com> >+ >+ Cocoa2d-HTLM5 game apepars to use wrong vertex buffer data >+ https://bugs.webkit.org/show_bug.cgi?id=236427 >+ <rdar://problem/87136345> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-02-03 Michael Saboff <msaboff@apple.com> > > WebKit projects have incorrect install name for the frameworks for Catalyst builds with the system content path >diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h >index 86e6a28363e1f0afa05810e072b05104655bb4b4..f57ae66407822a84eac22c7e80a70600c340f615 100644 >--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h >+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.h >@@ -151,7 +151,7 @@ class VertexArrayMtl : public VertexArrayImpl > mtl::BufferPool mDynamicIndexData; > > std::vector<uint32_t> mEmulatedInstanceAttribs; >- >+ bool mElementArrayDirty = true; > bool mVertexArrayDirty = true; > }; > } // namespace rx >diff --git a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm >index ba0c505618dab13fe989bb8524a20dc5c54d6369..682b7118e5e2513dbe74140a3b49f91b61fa1d36 100644 >--- a/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm >+++ b/Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/VertexArrayMtl.mm >@@ -273,6 +273,7 @@ angle::Result VertexArrayMtl::syncState(const gl::Context *context, > case gl::VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER: > case gl::VertexArray::DIRTY_BIT_ELEMENT_ARRAY_BUFFER_DATA: > { >+ mElementArrayDirty = true; > break; > } > >@@ -475,23 +476,38 @@ angle::Result VertexArrayMtl::setupDraw(const gl::Context *glContext, > } > > 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;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 236427
:
451486
|
451719
|
451726
|
451732