Changeset 52700 in webkit
- Timestamp:
- Jan 3, 2010 6:40:02 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r52697 r52700 1 2010-01-03 Kenneth Russell <kbr@google.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Index validation code must always copy client data 6 https://bugs.webkit.org/show_bug.cgi?id=32748 7 8 Client data must always be copied during bufferData and 9 bufferSubData calls, because otherwise the data the GL uses to 10 draw may differ from that checked by the index validation code. 11 12 * fast/canvas/webgl/index-validation-copies-indices-expected.txt: Added. 13 * fast/canvas/webgl/index-validation-copies-indices.html: Added. 14 1 15 2010-01-03 Jakub Wieczorek <faw217@gmail.com> 2 16 -
trunk/WebCore/ChangeLog
r52699 r52700 1 2010-01-03 Kenneth Russell <kbr@google.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Index validation code must always copy client data 6 https://bugs.webkit.org/show_bug.cgi?id=32748 7 8 Client data must always be copied during bufferData and 9 bufferSubData calls, because otherwise the data the GL uses to 10 draw may differ from that checked by the index validation code. 11 12 Test: fast/canvas/webgl/index-validation-copies-indices.html 13 14 * html/canvas/WebGLBuffer.cpp: 15 (WebCore::WebGLBuffer::WebGLBuffer): 16 (WebCore::WebGLBuffer::associateBufferData): 17 (WebCore::WebGLBuffer::associateBufferSubData): 18 * html/canvas/WebGLBuffer.h: 19 1 20 2010-01-03 Adam Barth <abarth@webkit.org> 2 21 -
trunk/WebCore/html/canvas/WebGLBuffer.cpp
r52205 r52700 47 47 , m_elementArrayBufferByteLength(0) 48 48 , m_arrayBufferByteLength(0) 49 , m_elementArrayBufferCloned(false)50 49 , m_nextAvailableCacheEntry(0) 51 50 { … … 90 89 clearCachedMaxIndices(); 91 90 m_elementArrayBufferByteLength = array->byteLength(); 92 m_elementArrayBuffer = array->buffer(); 93 m_elementArrayBufferCloned = false; 91 // We must always clone the incoming data because client-side 92 // modifications without calling bufferData or bufferSubData 93 // must never be able to change the validation results. 94 m_elementArrayBuffer = WebGLArrayBuffer::create(array->buffer().get()); 94 95 return true; 95 96 } … … 118 119 if (uoffset > m_elementArrayBufferByteLength || array->byteLength() > m_elementArrayBufferByteLength - uoffset) 119 120 return false; 120 121 // If we already have a buffer, we need to clone it and add the new data122 if (m_elementArrayBuffer && !m_elementArrayBufferCloned) {123 m_elementArrayBuffer = WebGLArrayBuffer::create(m_elementArrayBuffer.get());124 m_elementArrayBufferCloned = true;125 }126 121 127 122 memcpy(static_cast<unsigned char*>(m_elementArrayBuffer->data()) + offset, array->baseAddress(), array->byteLength()); -
trunk/WebCore/html/canvas/WebGLBuffer.h
r52205 r52700 68 68 unsigned m_elementArrayBufferByteLength; 69 69 unsigned m_arrayBufferByteLength; 70 bool m_elementArrayBufferCloned;71 70 72 71 // Optimization for index validation. For each type of index
Note: See TracChangeset
for help on using the changeset viewer.