Clear error logs when starting a new link process
This patch intends to fix a bug in logging link errors.
OpenGL ES requires glGetProgramInfoLog return a string
that contains information about last link or validation
attempt on a program object (GLES 2.0 Chapter 6.1.8,
GLES 3.0 Chapter 6.1.12). So all the link error logs
should be cleared when a new link process is begun.
This patch also removes several redundant allocations
of mLazyStream in ProgramD3D::compileProgramExecutables.
Calling "<<" on InfoLog objects will initialize its
member mLazyStream from heap, so we will skip using "<<"
if there is actually nothing to output.
BUG=angleproject:2295
TEST=angle_end2end_tests
Change-Id: Ib81fffd3d05919a8ebccd9145ff780548ca86a70
Reviewed-on: https://chromium-review.googlesource.com/848324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index 9699e7e..80ae30b 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1600,9 +1600,18 @@
WaitableEvent::WaitMany(&waitEvents);
- infoLog << vertexTask.getInfoLog().str();
- infoLog << pixelTask.getInfoLog().str();
- infoLog << geometryTask.getInfoLog().str();
+ if (!vertexTask.getInfoLog().empty())
+ {
+ infoLog << vertexTask.getInfoLog().str();
+ }
+ if (!pixelTask.getInfoLog().empty())
+ {
+ infoLog << pixelTask.getInfoLog().str();
+ }
+ if (!geometryTask.getInfoLog().empty())
+ {
+ infoLog << geometryTask.getInfoLog().str();
+ }
ANGLE_TRY(vertexTask.getError());
ANGLE_TRY(pixelTask.getError());