Index: gpu/command_buffer/service/program_manager.cc |
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc |
index 2d8202d58f7f4199cbe69ef844bccf3e8c77db1a..75960843ba1c236f719d381e03062f7fe31cc9c7 100644 |
--- a/gpu/command_buffer/service/program_manager.cc |
+++ b/gpu/command_buffer/service/program_manager.cc |
@@ -1620,8 +1620,13 @@ bool Program::GetTransformFeedbackVaryings( |
uint32_t header_size = sizeof(TransformFeedbackVaryingsHeader); |
bucket->SetSize(header_size); // In case we fail. |
+ GLenum transform_feedback_buffer_mode = 0; |
+ GLint param = 0; |
+ glGetProgramiv(program, GL_TRANSFORM_FEEDBACK_BUFFER_MODE, ¶m); |
+ transform_feedback_buffer_mode = static_cast<GLenum>(param); |
+ |
uint32_t num_transform_feedback_varyings = 0; |
- GLint param = GL_FALSE; |
+ param = GL_FALSE; |
// We assume program is a valid program service id. |
glGetProgramiv(program, GL_LINK_STATUS, ¶m); |
if (param == GL_TRUE) { |
@@ -1630,6 +1635,9 @@ bool Program::GetTransformFeedbackVaryings( |
num_transform_feedback_varyings = static_cast<uint32_t>(param); |
} |
if (num_transform_feedback_varyings == 0) { |
+ TransformFeedbackVaryingsHeader* header = |
+ bucket->GetDataAs<TransformFeedbackVaryingsHeader*>(0, header_size); |
+ header->transform_feedback_buffer_mode = transform_feedback_buffer_mode; |
return true; |
} |
@@ -1683,6 +1691,7 @@ bool Program::GetTransformFeedbackVaryings( |
DCHECK(data); |
// Copy over data for the header and entries. |
+ header->transform_feedback_buffer_mode = transform_feedback_buffer_mode; |
header->num_transform_feedback_varyings = num_transform_feedback_varyings; |
memcpy(entries, &varyings[0], entry_size); |