Commit da5777cf by Geoff Lang

Create an Error object to represent GL errors.

BUG=angle:520 Change-Id: I1a54e6f308b5b0f310c725a7771af737a77ecd42 Reviewed-on: https://chromium-review.googlesource.com/209619Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent ef9d63ec
...@@ -247,6 +247,7 @@ ...@@ -247,6 +247,7 @@
<ClCompile Include="..\..\src\common\debug.cpp"/> <ClCompile Include="..\..\src\common\debug.cpp"/>
<ClCompile Include="..\..\src\common\event_tracer.cpp"/> <ClCompile Include="..\..\src\common\event_tracer.cpp"/>
<ClCompile Include="..\..\src\common\utilities.cpp"/> <ClCompile Include="..\..\src\common\utilities.cpp"/>
<ClCompile Include="..\..\src\common\angleutils.cpp"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="..\..\src\libEGL\libEGL.rc"/> <ResourceCompile Include="..\..\src\libEGL\libEGL.rc"/>
......
...@@ -114,6 +114,9 @@ ...@@ -114,6 +114,9 @@
<ClInclude Include="..\..\src\common\angleutils.h"> <ClInclude Include="..\..\src\common\angleutils.h">
<Filter>src\common</Filter> <Filter>src\common</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\..\src\common\angleutils.cpp">
<Filter>src\common</Filter>
</ClCompile>
<ClInclude Include="..\..\include\angle_gl.h"> <ClInclude Include="..\..\include\angle_gl.h">
<Filter>include</Filter> <Filter>include</Filter>
</ClInclude> </ClInclude>
......
...@@ -228,6 +228,7 @@ ...@@ -228,6 +228,7 @@
<ClInclude Include="..\..\src\libGLESv2\validationES3.h"/> <ClInclude Include="..\..\src\libGLESv2\validationES3.h"/>
<ClInclude Include="..\..\src\libGLESv2\Program.h"/> <ClInclude Include="..\..\src\libGLESv2\Program.h"/>
<ClInclude Include="..\..\src\libGLESv2\HandleAllocator.h"/> <ClInclude Include="..\..\src\libGLESv2\HandleAllocator.h"/>
<ClInclude Include="..\..\src\libGLESv2\Error.h"/>
<ClInclude Include="..\..\src\libGLESv2\ResourceManager.h"/> <ClInclude Include="..\..\src\libGLESv2\ResourceManager.h"/>
<ClInclude Include="..\..\src\libGLESv2\DynamicHLSL.h"/> <ClInclude Include="..\..\src\libGLESv2\DynamicHLSL.h"/>
<ClInclude Include="..\..\src\libGLESv2\VertexAttribute.h"/> <ClInclude Include="..\..\src\libGLESv2\VertexAttribute.h"/>
...@@ -248,6 +249,7 @@ ...@@ -248,6 +249,7 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\copyimage.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\copyimage.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\BufferImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\BufferImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\copyvertex.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\copyvertex.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\VertexArrayImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\imageformats.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\imageformats.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\QueryImpl.h"/>
...@@ -257,7 +259,6 @@ ...@@ -257,7 +259,6 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\generatemip.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\generatemip.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\RenderTarget.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\vertexconversion.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\vertexconversion.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\VertexArrayImpl.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\IndexBuffer.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\IndexBuffer.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\HLSLCompiler.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\HLSLCompiler.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ImageD3D.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\ImageD3D.h"/>
...@@ -291,7 +292,6 @@ ...@@ -291,7 +292,6 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2d11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2d11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr3dui11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr3dui11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlef3dps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlef3dps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughlumalpha2d11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughlumalpha2d11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrg2dui11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrg2dui11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrgb3d11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrgb3d11ps.h"/>
...@@ -311,6 +311,7 @@ ...@@ -311,6 +311,7 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11vs.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11vs.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrgba2di11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrgba2di11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2dui11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2dui11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\buffertotexture11_ps_4i.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\buffertotexture11_ps_4i.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrg3dui11ps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughrg3dui11ps.h"/>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlei2dps.h"/> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlei2dps.h"/>
...@@ -387,6 +388,7 @@ ...@@ -387,6 +388,7 @@
<ClInclude Include="..\..\include\EGL\eglplatform.h"/> <ClInclude Include="..\..\include\EGL\eglplatform.h"/>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\..\src\libGLESv2\Error.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\validationES2.cpp"/> <ClCompile Include="..\..\src\libGLESv2\validationES2.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\precompiled.cpp"/> <ClCompile Include="..\..\src\libGLESv2\precompiled.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\DynamicHLSL.cpp"/> <ClCompile Include="..\..\src\libGLESv2\DynamicHLSL.cpp"/>
...@@ -395,7 +397,6 @@ ...@@ -395,7 +397,6 @@
<ClCompile Include="..\..\src\libGLESv2\formatutils.cpp"/> <ClCompile Include="..\..\src\libGLESv2\formatutils.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Fence.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Fence.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\validationES.cpp"/> <ClCompile Include="..\..\src\libGLESv2\validationES.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Renderbuffer.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Program.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Program.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\ResourceManager.cpp"/> <ClCompile Include="..\..\src\libGLESv2\ResourceManager.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\angletypes.cpp"/> <ClCompile Include="..\..\src\libGLESv2\angletypes.cpp"/>
...@@ -415,6 +416,7 @@ ...@@ -415,6 +416,7 @@
<ClCompile Include="..\..\src\libGLESv2\Shader.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Shader.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Uniform.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Uniform.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\main.cpp"/> <ClCompile Include="..\..\src\libGLESv2\main.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Renderbuffer.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Sampler.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Sampler.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Framebuffer.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Framebuffer.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\Texture.cpp"/> <ClCompile Include="..\..\src\libGLESv2\Texture.cpp"/>
...@@ -457,13 +459,13 @@ ...@@ -457,13 +459,13 @@
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\VertexBuffer9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\VertexBuffer9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Fence9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Fence9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Image9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Image9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\renderer9_utils.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\TextureStorage9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\TextureStorage9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Renderer9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Renderer9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\RenderTarget9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\RenderTarget9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\formatutils9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\formatutils9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Buffer9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Buffer9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\ShaderExecutable9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\ShaderExecutable9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\renderer9_utils.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\SwapChain9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\SwapChain9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Blit9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Blit9.cpp"/>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\IndexBuffer9.cpp"/> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\IndexBuffer9.cpp"/>
...@@ -474,6 +476,7 @@ ...@@ -474,6 +476,7 @@
<ClCompile Include="..\..\src\common\mathutil.cpp"/> <ClCompile Include="..\..\src\common\mathutil.cpp"/>
<ClCompile Include="..\..\src\common\debug.cpp"/> <ClCompile Include="..\..\src\common\debug.cpp"/>
<ClCompile Include="..\..\src\common\blocklayout.cpp"/> <ClCompile Include="..\..\src\common\blocklayout.cpp"/>
<ClCompile Include="..\..\src\common\angleutils.cpp"/>
<ClCompile Include="..\..\src\third_party\systeminfo\SystemInfo.cpp"/> <ClCompile Include="..\..\src\third_party\systeminfo\SystemInfo.cpp"/>
<ClCompile Include="..\..\src\third_party\murmurhash\MurmurHash3.cpp"/> <ClCompile Include="..\..\src\third_party\murmurhash\MurmurHash3.cpp"/>
</ItemGroup> </ItemGroup>
......
...@@ -69,6 +69,9 @@ ...@@ -69,6 +69,9 @@
<ClInclude Include="..\..\src\libGLESv2\Shader.h"> <ClInclude Include="..\..\src\libGLESv2\Shader.h">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\..\src\libGLESv2\Error.cpp">
<Filter>src\libGLESv2</Filter>
</ClCompile>
<ClCompile Include="..\..\src\libGLESv2\validationES2.cpp"> <ClCompile Include="..\..\src\libGLESv2\validationES2.cpp">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClCompile> </ClCompile>
...@@ -120,9 +123,6 @@ ...@@ -120,9 +123,6 @@
<ClCompile Include="..\..\src\libGLESv2\validationES.cpp"> <ClCompile Include="..\..\src\libGLESv2\validationES.cpp">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\libGLESv2\Renderbuffer.cpp">
<Filter>src\libGLESv2</Filter>
</ClCompile>
<ClInclude Include="..\..\src\libGLESv2\Uniform.h"> <ClInclude Include="..\..\src\libGLESv2\Uniform.h">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClInclude> </ClInclude>
...@@ -192,6 +192,9 @@ ...@@ -192,6 +192,9 @@
<ClInclude Include="..\..\src\libGLESv2\HandleAllocator.h"> <ClInclude Include="..\..\src\libGLESv2\HandleAllocator.h">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\Error.h">
<Filter>src\libGLESv2</Filter>
</ClInclude>
<ClInclude Include="..\..\src\libGLESv2\ResourceManager.h"> <ClInclude Include="..\..\src\libGLESv2\ResourceManager.h">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClInclude> </ClInclude>
...@@ -231,6 +234,9 @@ ...@@ -231,6 +234,9 @@
<ClCompile Include="..\..\src\libGLESv2\main.cpp"> <ClCompile Include="..\..\src\libGLESv2\main.cpp">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\libGLESv2\Renderbuffer.cpp">
<Filter>src\libGLESv2</Filter>
</ClCompile>
<ClInclude Include="..\..\src\libGLESv2\main.h"> <ClInclude Include="..\..\src\libGLESv2\main.h">
<Filter>src\libGLESv2</Filter> <Filter>src\libGLESv2</Filter>
</ClInclude> </ClInclude>
...@@ -294,6 +300,9 @@ ...@@ -294,6 +300,9 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\copyvertex.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\copyvertex.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\VertexArrayImpl.h">
<Filter>src\libGLESv2\renderer</Filter>
</ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\SwapChain.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
...@@ -324,9 +333,6 @@ ...@@ -324,9 +333,6 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\vertexconversion.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\vertexconversion.h">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\VertexArrayImpl.h">
<Filter>src\libGLESv2\renderer</Filter>
</ClInclude>
<ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp"> <ClCompile Include="..\..\src\libGLESv2\renderer\Renderer.cpp">
<Filter>src\libGLESv2\renderer</Filter> <Filter>src\libGLESv2\renderer</Filter>
</ClCompile> </ClCompile>
...@@ -519,9 +525,6 @@ ...@@ -519,9 +525,6 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlef3dps.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\swizzlef3dps.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11ps.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughlumalpha2d11ps.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughlumalpha2d11ps.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude> </ClInclude>
...@@ -579,6 +582,9 @@ ...@@ -579,6 +582,9 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2dui11ps.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\passthroughr2dui11ps.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\clearfloat11ps.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\buffertotexture11_ps_4i.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d11\shaders\compiled\buffertotexture11_ps_4i.h">
<Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d11\shaders\compiled</Filter>
</ClInclude> </ClInclude>
...@@ -699,9 +705,6 @@ ...@@ -699,9 +705,6 @@
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Renderer9.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Renderer9.h">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClInclude> </ClInclude>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\renderer9_utils.cpp">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClCompile>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Blit9.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Blit9.h">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClInclude> </ClInclude>
...@@ -735,6 +738,9 @@ ...@@ -735,6 +738,9 @@
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\ShaderExecutable9.cpp"> <ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\ShaderExecutable9.cpp">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\libGLESv2\renderer\d3d\d3d9\renderer9_utils.cpp">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClCompile>
<ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Query9.h"> <ClInclude Include="..\..\src\libGLESv2\renderer\d3d\d3d9\Query9.h">
<Filter>src\libGLESv2\renderer\d3d\d3d9</Filter> <Filter>src\libGLESv2\renderer\d3d\d3d9</Filter>
</ClInclude> </ClInclude>
...@@ -822,6 +828,9 @@ ...@@ -822,6 +828,9 @@
<ClCompile Include="..\..\src\common\blocklayout.cpp"> <ClCompile Include="..\..\src\common\blocklayout.cpp">
<Filter>src\common</Filter> <Filter>src\common</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\..\src\common\angleutils.cpp">
<Filter>src\common</Filter>
</ClCompile>
<ClInclude Include="..\..\src\third_party\systeminfo\SystemInfo.h"> <ClInclude Include="..\..\src\third_party\systeminfo\SystemInfo.h">
<Filter>src\third_party\systeminfo</Filter> <Filter>src\third_party\systeminfo</Filter>
</ClInclude> </ClInclude>
......
//
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
#include "common/angleutils.h"
#include <vector>
std::string FormatString(const std::string &fmt, va_list vararg)
{
static std::vector<char> buffer(512);
// Attempt to just print to the current buffer
int len = vsnprintf(&buffer[0], buffer.size(), fmt.c_str(), vararg);
if (len < 0 || static_cast<size_t>(len) >= buffer.size())
{
// Buffer was not large enough, calculate the required size and resize the buffer
len = vsnprintf(NULL, 0, fmt.c_str(), vararg);
buffer.resize(len + 1);
// Print again
vsnprintf(&buffer[0], buffer.size(), fmt.c_str(), vararg);
}
return std::string(buffer.data(), len);
}
std::string FormatString(const std::string &fmt, ...)
{
va_list vararg;
va_start(vararg, fmt);
std::string result = FormatString(fmt, vararg);
va_end(vararg);
return result;
}
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <string> #include <string>
#include <set> #include <set>
#include <sstream> #include <sstream>
#include <cstdarg>
// A macro to disallow the copy constructor and operator= functions // A macro to disallow the copy constructor and operator= functions
// This must be used in the private: declarations for a class // This must be used in the private: declarations for a class
...@@ -131,6 +132,9 @@ inline std::string Str(int i) ...@@ -131,6 +132,9 @@ inline std::string Str(int i)
return strstr.str(); return strstr.str();
} }
std::string FormatString(const std::string &fmt, va_list vararg);
std::string FormatString(const std::string &fmt, ...);
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define snprintf _snprintf #define snprintf _snprintf
#endif #endif
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "common/debug.h" #include "common/debug.h"
#include "common/platform.h" #include "common/platform.h"
#include "common/angleutils.h"
#include <stdarg.h> #include <stdarg.h>
#include <vector> #include <vector>
...@@ -25,22 +26,7 @@ typedef void (*PerfOutputFunction)(unsigned int, const wchar_t*); ...@@ -25,22 +26,7 @@ typedef void (*PerfOutputFunction)(unsigned int, const wchar_t*);
static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const char *format, va_list vararg) static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const char *format, va_list vararg)
{ {
#if defined(ANGLE_ENABLE_PERF) || defined(ANGLE_ENABLE_TRACE) #if defined(ANGLE_ENABLE_PERF) || defined(ANGLE_ENABLE_TRACE)
static std::vector<char> asciiMessageBuffer(512); std::string formattedMessage = FormatString(format, vararg);
// Attempt to just print to the current buffer
int len = vsnprintf(&asciiMessageBuffer[0], asciiMessageBuffer.size(), format, vararg);
if (len < 0 || static_cast<size_t>(len) >= asciiMessageBuffer.size())
{
// Buffer was not large enough, calculate the required size and resize the buffer
len = vsnprintf(NULL, 0, format, vararg);
asciiMessageBuffer.resize(len + 1);
// Print again
vsnprintf(&asciiMessageBuffer[0], asciiMessageBuffer.size(), format, vararg);
}
// NULL terminate the buffer to be safe
asciiMessageBuffer[len] = '\0';
#endif #endif
#if defined(ANGLE_ENABLE_PERF) #if defined(ANGLE_ENABLE_PERF)
...@@ -48,12 +34,12 @@ static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const c ...@@ -48,12 +34,12 @@ static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const c
{ {
// The perf function only accepts wide strings, widen the ascii message // The perf function only accepts wide strings, widen the ascii message
static std::wstring wideMessage; static std::wstring wideMessage;
if (wideMessage.capacity() < asciiMessageBuffer.size()) if (wideMessage.capacity() < formattedMessage.length())
{ {
wideMessage.reserve(asciiMessageBuffer.size()); wideMessage.reserve(formattedMessage.size());
} }
wideMessage.assign(asciiMessageBuffer.begin(), asciiMessageBuffer.begin() + len); wideMessage.assign(formattedMessage.begin(), formattedMessage.end());
perfFunc(0, wideMessage.c_str()); perfFunc(0, wideMessage.c_str());
} }
...@@ -70,7 +56,7 @@ static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const c ...@@ -70,7 +56,7 @@ static void output(bool traceFileDebugOnly, PerfOutputFunction perfFunc, const c
static std::ofstream file(TRACE_OUTPUT_FILE, std::ofstream::app); static std::ofstream file(TRACE_OUTPUT_FILE, std::ofstream::app);
if (file) if (file)
{ {
file.write(&asciiMessageBuffer[0], len); file.write(formattedMessage.c_str(), formattedMessage.length());
file.flush(); file.flush();
} }
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
'../include/angle_gl.h', '../include/angle_gl.h',
'common/RefCountObject.cpp', 'common/RefCountObject.cpp',
'common/RefCountObject.h', 'common/RefCountObject.h',
'common/angleutils.cpp',
'common/angleutils.h', 'common/angleutils.h',
'common/debug.cpp', 'common/debug.cpp',
'common/debug.h', 'common/debug.h',
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
'../include/angle_gl.h', '../include/angle_gl.h',
'common/RefCountObject.cpp', 'common/RefCountObject.cpp',
'common/RefCountObject.h', 'common/RefCountObject.h',
'common/angleutils.cpp',
'common/angleutils.h', 'common/angleutils.h',
'common/blocklayout.cpp', 'common/blocklayout.cpp',
'common/blocklayout.h', 'common/blocklayout.h',
...@@ -49,6 +50,8 @@ ...@@ -49,6 +50,8 @@
'libGLESv2/Context.h', 'libGLESv2/Context.h',
'libGLESv2/DynamicHLSL.cpp', 'libGLESv2/DynamicHLSL.cpp',
'libGLESv2/DynamicHLSL.h', 'libGLESv2/DynamicHLSL.h',
'libGLESv2/Error.cpp',
'libGLESv2/Error.h',
'libGLESv2/Fence.cpp', 'libGLESv2/Fence.cpp',
'libGLESv2/Fence.h', 'libGLESv2/Fence.h',
'libGLESv2/Float16ToFloat32.cpp', 'libGLESv2/Float16ToFloat32.cpp',
......
...@@ -104,12 +104,6 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere ...@@ -104,12 +104,6 @@ Context::Context(int clientVersion, const gl::Context *shareContext, rx::Rendere
mTransformFeedbackZero.set(new TransformFeedback(0)); mTransformFeedbackZero.set(new TransformFeedback(0));
bindTransformFeedback(0); bindTransformFeedback(0);
mInvalidEnum = false;
mInvalidValue = false;
mInvalidOperation = false;
mOutOfMemory = false;
mInvalidFramebufferOperation = false;
mHasBeenCurrent = false; mHasBeenCurrent = false;
mContextLost = false; mContextLost = false;
mResetStatus = GL_NO_ERROR; mResetStatus = GL_NO_ERROR;
...@@ -1871,71 +1865,28 @@ void Context::sync(bool block) ...@@ -1871,71 +1865,28 @@ void Context::sync(bool block)
mRenderer->sync(block); mRenderer->sync(block);
} }
void Context::recordInvalidEnum() void Context::recordError(const Error &error)
{
mInvalidEnum = true;
}
void Context::recordInvalidValue()
{
mInvalidValue = true;
}
void Context::recordInvalidOperation()
{
mInvalidOperation = true;
}
void Context::recordOutOfMemory()
{
mOutOfMemory = true;
}
void Context::recordInvalidFramebufferOperation()
{ {
mInvalidFramebufferOperation = true; if (error.isError())
{
mErrors.insert(error.getCode());
}
} }
// Get one of the recorded errors and clear its flag, if any. // Get one of the recorded errors and clear its flag, if any.
// [OpenGL ES 2.0.24] section 2.5 page 13. // [OpenGL ES 2.0.24] section 2.5 page 13.
GLenum Context::getError() GLenum Context::getError()
{ {
if (mInvalidEnum) if (mErrors.empty())
{
mInvalidEnum = false;
return GL_INVALID_ENUM;
}
if (mInvalidValue)
{
mInvalidValue = false;
return GL_INVALID_VALUE;
}
if (mInvalidOperation)
{
mInvalidOperation = false;
return GL_INVALID_OPERATION;
}
if (mOutOfMemory)
{ {
mOutOfMemory = false; return GL_NO_ERROR;
return GL_OUT_OF_MEMORY;
} }
else
if (mInvalidFramebufferOperation)
{ {
mInvalidFramebufferOperation = false; GLenum error = *mErrors.begin();
mErrors.erase(mErrors.begin());
return GL_INVALID_FRAMEBUFFER_OPERATION; return error;
} }
return GL_NO_ERROR;
} }
GLenum Context::getResetStatus() GLenum Context::getResetStatus()
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "common/angleutils.h" #include "common/angleutils.h"
#include "common/RefCountObject.h" #include "common/RefCountObject.h"
#include "libGLESv2/Caps.h" #include "libGLESv2/Caps.h"
#include "libGLESv2/Error.h"
#include "libGLESv2/HandleAllocator.h" #include "libGLESv2/HandleAllocator.h"
#include "libGLESv2/angletypes.h" #include "libGLESv2/angletypes.h"
#include "libGLESv2/Constants.h" #include "libGLESv2/Constants.h"
...@@ -196,11 +197,7 @@ class Context ...@@ -196,11 +197,7 @@ class Context
void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances); void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instances);
void sync(bool block); // flush/finish void sync(bool block); // flush/finish
void recordInvalidEnum(); void recordError(const Error &error);
void recordInvalidValue();
void recordInvalidOperation();
void recordOutOfMemory();
void recordInvalidFramebufferOperation();
GLenum getError(); GLenum getError();
GLenum getResetStatus(); GLenum getResetStatus();
...@@ -316,11 +313,8 @@ class Context ...@@ -316,11 +313,8 @@ class Context
BindingPointer<Texture> mIncompleteTextures[TEXTURE_TYPE_COUNT]; BindingPointer<Texture> mIncompleteTextures[TEXTURE_TYPE_COUNT];
// Recorded errors // Recorded errors
bool mInvalidEnum; typedef std::set<GLenum> ErrorSet;
bool mInvalidValue; ErrorSet mErrors;
bool mInvalidOperation;
bool mOutOfMemory;
bool mInvalidFramebufferOperation;
// Current/lost context flags // Current/lost context flags
bool mHasBeenCurrent; bool mHasBeenCurrent;
......
//
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Error.cpp: Implements the gl::Error class which encapsulates an OpenGL error
// and optional error message.
#include "libGLESv2/Error.h"
#include "common/angleutils.h"
#include <cstdarg>
namespace gl
{
Error::Error(GLenum errorCode)
: mCode(errorCode),
mMessage()
{
}
Error::Error(GLenum errorCode, const std::string &msg, ...)
: mCode(errorCode),
mMessage()
{
va_list vararg;
va_start(vararg, msg);
mMessage = Format(msg, vararg);
va_end(vararg);
}
Error::Error(const Error &other)
: mCode(other.mCode),
mMessage(other.mMessage)
{
}
Error &Error::operator=(const Error &other)
{
mCode = other.mCode;
mMessage = other.mMessage;
return *this;
}
}
//
// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Error.h: Defines the gl::Error class which encapsulates an OpenGL error
// and optional error message.
#ifndef LIBGLESV2_ERROR_H_
#define LIBGLESV2_ERROR_H_
#include "angle_gl.h"
#include <string>
namespace gl
{
class Error
{
public:
explicit Error(GLenum errorCode);
Error(GLenum errorCode, const std::string &msg, ...);
Error(const Error &other);
Error &operator=(const Error &other);
GLenum getCode() const { return mCode; }
bool isError() const { return (mCode != GL_NO_ERROR); }
const std::string &getMessage() const { return mMessage; }
private:
GLenum mCode;
std::string mMessage;
};
}
#endif // LIBGLESV2_ERROR_H_
...@@ -145,33 +145,26 @@ egl::Display *getDisplay() ...@@ -145,33 +145,26 @@ egl::Display *getDisplay()
void error(GLenum errorCode) void error(GLenum errorCode)
{ {
gl::Context *context = glGetCurrentContext(); gl::Context *context = glGetCurrentContext();
context->recordError(Error(errorCode));
if (context) switch (errorCode)
{ {
switch (errorCode) case GL_INVALID_ENUM:
{ TRACE("\t! Error generated: invalid enum\n");
case GL_INVALID_ENUM: break;
context->recordInvalidEnum(); case GL_INVALID_VALUE:
TRACE("\t! Error generated: invalid enum\n"); TRACE("\t! Error generated: invalid value\n");
break; break;
case GL_INVALID_VALUE: case GL_INVALID_OPERATION:
context->recordInvalidValue(); TRACE("\t! Error generated: invalid operation\n");
TRACE("\t! Error generated: invalid value\n"); break;
break; case GL_OUT_OF_MEMORY:
case GL_INVALID_OPERATION: TRACE("\t! Error generated: out of memory\n");
context->recordInvalidOperation(); break;
TRACE("\t! Error generated: invalid operation\n"); case GL_INVALID_FRAMEBUFFER_OPERATION:
break; TRACE("\t! Error generated: invalid framebuffer operation\n");
case GL_OUT_OF_MEMORY: break;
context->recordOutOfMemory(); default: UNREACHABLE();
TRACE("\t! Error generated: out of memory\n");
break;
case GL_INVALID_FRAMEBUFFER_OPERATION:
context->recordInvalidFramebufferOperation();
TRACE("\t! Error generated: invalid framebuffer operation\n");
break;
default: UNREACHABLE();
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment