Commit 09be185d by Manh Nguyen Committed by Commit Bot

Fill in missing GL methods and fix crashes for MultiviewDrawTest

Implements the capture of the following methods 1.glDrawArraysIndirect 2.glDrawElementsIndirect 3.glGetQueryObjectuivEXT Fix glVertexAttribPointer replay compilation error Bug: angleproject:4692 Bug: angleproject:4693 Change-Id: Id8b10354bad6b90beeb93837dcdb602ba8292659 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2233398 Commit-Queue: Manh Nguyen <nguyenmh@google.com> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent b9a9b82d
...@@ -475,7 +475,7 @@ void WriteCppReplayForCall(const CallCapture &call, ...@@ -475,7 +475,7 @@ void WriteCppReplayForCall(const CallCapture &call,
callOut << ", "; callOut << ", ";
} }
if (param.arrayClientPointerIndex != -1) if (param.arrayClientPointerIndex != -1 && param.value.voidConstPointerVal != nullptr)
{ {
callOut << "gClientArrays[" << param.arrayClientPointerIndex << "]"; callOut << "gClientArrays[" << param.arrayClientPointerIndex << "]";
} }
......
...@@ -38,7 +38,11 @@ void CaptureDrawArraysIndirect_indirect(const State &glState, ...@@ -38,7 +38,11 @@ void CaptureDrawArraysIndirect_indirect(const State &glState,
const void *indirect, const void *indirect,
ParamCapture *paramCapture) ParamCapture *paramCapture)
{ {
UNIMPLEMENTED(); // DrawArraysIndirect requires that all data sourced for the command,
// including the DrawArraysIndirectCommand structure, be in buffer objects,
// and may not be called when the default vertex array object is bound.
// Indirect pointer is automatically captured in capture_gles_3_1_autogen.cpp
assert(!isCallValid || glState.getTargetBuffer(gl::BufferBinding::DrawIndirect));
} }
void CaptureDrawElementsIndirect_indirect(const State &glState, void CaptureDrawElementsIndirect_indirect(const State &glState,
...@@ -48,7 +52,11 @@ void CaptureDrawElementsIndirect_indirect(const State &glState, ...@@ -48,7 +52,11 @@ void CaptureDrawElementsIndirect_indirect(const State &glState,
const void *indirect, const void *indirect,
ParamCapture *paramCapture) ParamCapture *paramCapture)
{ {
UNIMPLEMENTED(); // DrawElementsIndirect requires that all data sourced for the command,
// including the DrawElementsIndirectCommand structure, be in buffer objects,
// and may not be called when the default vertex array object is bound
// Indirect pointer is automatically captured in capture_gles_3_1_autogen.cpp
assert(!isCallValid || glState.getTargetBuffer(gl::BufferBinding::DrawIndirect));
} }
void CaptureGenProgramPipelines_pipelinesPacked(const State &glState, void CaptureGenProgramPipelines_pipelinesPacked(const State &glState,
......
...@@ -2364,7 +2364,7 @@ void CaptureGetQueryObjectuivEXT_params(const State &glState, ...@@ -2364,7 +2364,7 @@ void CaptureGetQueryObjectuivEXT_params(const State &glState,
GLuint *params, GLuint *params,
ParamCapture *paramCapture) ParamCapture *paramCapture)
{ {
UNIMPLEMENTED(); paramCapture->readBufferSizeBytes = sizeof(GLuint);
} }
void CaptureGetQueryivEXT_params(const State &glState, void CaptureGetQueryivEXT_params(const State &glState,
......
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