yangqiaosheng / angleproject

Automatically exported from code.google.com/p/angleproject
Other
0 stars 0 forks source link

Indexed and generic transform feedback buffer bindings should be tracked per-XFB object. #763

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
We currently use the same transform feedback buffer bindings for all objects, 
but according to the ES 3.0.4 spec, a new transform feedback object " is a new 
state vector, comprising all the state and with the same initial values listed 
in table 6.24." This state table includes the indexed buffer binding points for 
XFB objects, as well as the generic transform feedback buffer binding. This is 
spelled out more explicitly on the OpenGL wiki 
(https://www.opengl.org/wiki/Transform_Feedback) and in the specification for 
ARB_transform_feedback2 
(https://www.opengl.org/registry/specs/ARB/transform_feedback2.txt), which 
introduced transform feedback objects to the GL ecosystem.

Also to be considered during this fix-- while the ES 3.0 core spec does not 
explicitly address whether a single buffer can be bound to multiple XFB 
objects, saying only "Buffers should not be bound or in use for both transform 
feedback and other purposes in the GL. Specifically, if a buffer object is 
simultaneously bound to a transform feedback buffer binding point and elsewhere 
in the GL, any writes to or reads from the buffer generate undefined values," 
it is more explicitly stated in the issue list for ARB_transform_feedback2 that 
the specification language intends binding a single buffer object to multiple 
XFB objects to be allowable (see issue 14 of the extension spec, linked above). 
No language to contradict this was introduced in the ES 3.0 spec, so we can 
assume that the same intention holds.

Original issue reported on code.google.com by shannonw...@chromium.org on 29 Sep 2014 at 10:43

GoogleCodeExporter commented 9 years ago

Original comment by shannonw...@chromium.org on 29 Sep 2014 at 10:44

GoogleCodeExporter commented 9 years ago

Original comment by geofflang@chromium.org on 27 Mar 2015 at 4:19

GoogleCodeExporter commented 9 years ago
Project: angle/angle
Branch : master
Author : Geoff Lang <geofflang@chromium.org>
Commit : bb0a0bbd3f4e1869377a3bdeaf5a3b339e697133

Code-Review  0 : Alexis Hétu, Geoff Lang, Shannon Woods
Code-Review  +2: Jamie Madill
Verified     0 : Alexis Hétu, Jamie Madill, Shannon Woods
Verified     +1: Geoff Lang
Commit Queue   : Chumped
Change-Id      : I12fa57de9263eb0cb5ff1840cf44b0a8f2a40912
Reviewed-at    : https://chromium-review.googlesource.com/263721

Rename TransformFeedback members to match the spec.

BUG=angleproject:763

src/libANGLE/State.cpp
src/libANGLE/TransformFeedback.cpp
src/libANGLE/TransformFeedback.h
src/libANGLE/TransformFeedback_unittest.cpp
src/libANGLE/validationES.cpp
src/libGLESv2/entry_points_gles_3_0.cpp

Original comment by bugdroid1@chromium.org on 15 Apr 2015 at 6:08

GoogleCodeExporter commented 9 years ago
Project: angle/angle
Branch : master
Author : Geoff Lang <geofflang@chromium.org>
Commit : 045536bfed29c4c04c148c5f2f675d229831b3b1

Code-Review  0 : Alexis Hétu, Geoff Lang, Shannon Woods
Code-Review  +2: Jamie Madill
Verified     0 : Alexis Hétu, Jamie Madill, Shannon Woods
Verified     +1: Geoff Lang
Commit Queue   : Chumped
Change-Id      : I76565f68fa8145da29713de2a517a39a8d50a24b
Reviewed-at    : https://chromium-review.googlesource.com/263061

Store current transform feedback buffer bindings in the object itself.

BUG=angleproject:763

src/libANGLE/Context.cpp
src/libANGLE/RefCountObject.h
src/libANGLE/State.cpp
src/libANGLE/State.h
src/libANGLE/TransformFeedback.cpp
src/libANGLE/TransformFeedback.h
src/libANGLE/TransformFeedback_unittest.cpp
src/libANGLE/renderer/BufferImpl_mock.h
src/libANGLE/renderer/TransformFeedbackImpl.h
src/libANGLE/renderer/TransformFeedbackImpl_mock.h
src/libANGLE/renderer/d3d/RendererD3D.cpp
src/libANGLE/renderer/d3d/TransformFeedbackD3D.cpp
src/libANGLE/renderer/d3d/TransformFeedbackD3D.h
src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp
src/libANGLE/renderer/gl/TransformFeedbackGL.cpp
src/libANGLE/renderer/gl/TransformFeedbackGL.h
src/tests/angle_unittests.gypi
src/tests/end2end_tests/TransformFeedbackTest.cpp

Original comment by bugdroid1@chromium.org on 15 Apr 2015 at 6:12