In D3D we pack varyings by making a register map, and using the recommended GLSL ES algorithm to reserve register space. We use this map to assign row and column slots to each varying and then produce a semantic index value. The existing scheme had a number of bugs, and was failing several angle_end2end_tests. The new design cleans up the code somewhat and uses a different counting scheme for the semantic indexes: just sort the varyings in packing order and use a simple incrementing semantic index per varying. In SM4+, the HLSL compiler sorts and packs the varyings correctly itself, and in SM3, handle the cases we don't support by returning an error instead of a D3D compiler link error. Also refactor how we store varying information for TF Feedback/ StreamOut. Only store the necessary D3D information, instead of extra information like the name and type. This fixes several tests in GLSLTest/*. This also will allow us to fix interpolation qualifier packing and the structure packing in HLSL, which seems to work differently than the rest of the varying types. BUG=angleproject:1202 TEST=bots,dEQP-GLES3.functional.transform_feedback.* Change-Id: Ie5bfbb4f71d8bf97f39115fc46d2e61b131df639 Reviewed-on: https://chromium-review.googlesource.com/311241Reviewed-by:Geoff Lang <geofflang@chromium.org> Tested-by:
Jamie Madill <jmadill@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| renderer | Loading commit data... | |
| AttributeMap.cpp | Loading commit data... | |
| AttributeMap.h | Loading commit data... | |
| BinaryStream.h | Loading commit data... | |
| Buffer.cpp | Loading commit data... | |
| Buffer.h | Loading commit data... | |
| Caps.cpp | Loading commit data... | |
| Caps.h | Loading commit data... | |
| Compiler.cpp | Loading commit data... | |
| Compiler.h | Loading commit data... | |
| Config.cpp | Loading commit data... | |
| Config.h | Loading commit data... | |
| Config_unittest.cpp | Loading commit data... | |
| Constants.h | Loading commit data... | |
| Context.cpp | Loading commit data... | |
| Context.h | Loading commit data... | |
| Data.cpp | Loading commit data... | |
| Data.h | Loading commit data... | |
| Device.cpp | Loading commit data... | |
| Device.h | Loading commit data... | |
| Display.cpp | Loading commit data... | |
| Display.h | Loading commit data... | |
| Error.cpp | Loading commit data... | |
| Error.h | Loading commit data... | |
| Error.inl | Loading commit data... | |
| Fence.cpp | Loading commit data... | |
| Fence.h | Loading commit data... | |
| Fence_unittest.cpp | Loading commit data... | |
| Framebuffer.cpp | Loading commit data... | |
| Framebuffer.h | Loading commit data... | |
| FramebufferAttachment.cpp | Loading commit data... | |
| FramebufferAttachment.h | Loading commit data... | |
| HandleAllocator.cpp | Loading commit data... | |
| HandleAllocator.h | Loading commit data... | |
| HandleAllocator_unittest.cpp | Loading commit data... | |
| Image.cpp | Loading commit data... | |
| Image.h | Loading commit data... | |
| ImageIndex.cpp | Loading commit data... | |
| ImageIndex.h | Loading commit data... | |
| ImageIndexIterator_unittest.cpp | Loading commit data... | |
| Image_unittest.cpp | Loading commit data... | |
| IndexRangeCache.cpp | Loading commit data... | |
| IndexRangeCache.h | Loading commit data... | |
| Platform.cpp | Loading commit data... | |
| Program.cpp | Loading commit data... | |
| Program.h | Loading commit data... | |
| Program_unittest.cpp | Loading commit data... | |
| Query.cpp | Loading commit data... | |
| Query.h | Loading commit data... | |
| RefCountObject.cpp | Loading commit data... | |
| RefCountObject.h | Loading commit data... | |
| Renderbuffer.cpp | Loading commit data... | |
| Renderbuffer.h | Loading commit data... | |
| ResourceManager.cpp | Loading commit data... | |
| ResourceManager.h | Loading commit data... | |
| ResourceManager_unittest.cpp | Loading commit data... | |
| Sampler.cpp | Loading commit data... | |
| Sampler.h | Loading commit data... | |
| Shader.cpp | Loading commit data... | |
| Shader.h | Loading commit data... | |
| State.cpp | Loading commit data... | |
| State.h | Loading commit data... | |
| Surface.cpp | Loading commit data... | |
| Surface.h | Loading commit data... | |
| Surface_unittest.cpp | Loading commit data... | |
| Texture.cpp | Loading commit data... | |
| Texture.h | Loading commit data... | |
| TransformFeedback.cpp | Loading commit data... | |
| TransformFeedback.h | Loading commit data... | |
| TransformFeedback_unittest.cpp | Loading commit data... | |
| Uniform.cpp | Loading commit data... | |
| Uniform.h | Loading commit data... | |
| Version.h | Loading commit data... | |
| Version.inl | Loading commit data... | |
| VertexArray.cpp | Loading commit data... | |
| VertexArray.h | Loading commit data... | |
| VertexAttribute.cpp | Loading commit data... | |
| VertexAttribute.h | Loading commit data... | |
| VertexAttribute.inl | Loading commit data... | |
| angletypes.cpp | Loading commit data... | |
| angletypes.h | Loading commit data... | |
| angletypes.inl | Loading commit data... | |
| features.h | Loading commit data... | |
| formatutils.cpp | Loading commit data... | |
| formatutils.h | Loading commit data... | |
| histogram_macros.h | Loading commit data... | |
| queryconversions.cpp | Loading commit data... | |
| queryconversions.h | Loading commit data... | |
| validationEGL.cpp | Loading commit data... | |
| validationEGL.h | Loading commit data... | |
| validationES.cpp | Loading commit data... | |
| validationES.h | Loading commit data... | |
| validationES2.cpp | Loading commit data... | |
| validationES2.h | Loading commit data... | |
| validationES3.cpp | Loading commit data... | |
| validationES3.h | Loading commit data... | |
| validationES_unittest.cpp | Loading commit data... |