yangqiaosheng / angleproject

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

ANGLE keeps bound the previous bound shader for draw calls with no shader associated to some stages #872

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
When the state is marked as dirty with markAllStateDirty, ANGLE resets the 
applied shaders to NULL however it does not unbind them from the D3D11 pipeline.

Hence ANGLE is tricked into believing that no shader is bound to some stages 
when actually they are.

This is a problem with geometry shaders (3D texture transfer, point sprite) and 
transform feedback (with no PS associated).

For instance, dEQP functional.texture.specification.teximage3d_pbo.*_3d are 
failing because:
PixelTransfer11::copyBufferToTexture copies using a GS
PixelTransfer11::copyBufferToTexture calls markAllStateDirty
then the next draw call — which should only use a VS/PS — fails with:
ID3D11DeviceContext::DrawIndexed: Vertex Shader - Geometry Shader linkage 
error: Signatures between stages are incompatible. Semantic 'TEXCOORD' is 
defined for mismatched hardware registers between the output stage and input 
stage. [ EXECUTION ERROR #343: DEVICE_SHADER_LINKAGE_REGISTERINDEX]

Original issue reported on code.google.com by Gregory....@imgtec.com on 16 Jan 2015 at 4:57

GoogleCodeExporter commented 9 years ago
https://chromium-review.googlesource.com/#/c/241421/

Original comment by Gregory....@imgtec.com on 16 Jan 2015 at 5:00

GoogleCodeExporter commented 9 years ago

Original comment by geofflang@chromium.org on 29 Apr 2015 at 7:14