Skip to content

Commit

Permalink
Command Buffer: add getBufferParameteri64v
Browse files Browse the repository at this point in the history
BUG=429053

Review URL: https://codereview.chromium.org/1241753003

Cr-Commit-Position: refs/heads/master@{#341259}
  • Loading branch information
Richard-Yunchao authored and Commit bot committed Jul 31, 2015
1 parent 88d9f8e commit 552a9eb
Show file tree
Hide file tree
Showing 33 changed files with 663 additions and 338 deletions.
1 change: 1 addition & 0 deletions gpu/GLES2/gl2chromium_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
#define glGetAttachedShaders GLES2_GET_FUN(GetAttachedShaders)
#define glGetAttribLocation GLES2_GET_FUN(GetAttribLocation)
#define glGetBooleanv GLES2_GET_FUN(GetBooleanv)
#define glGetBufferParameteri64v GLES2_GET_FUN(GetBufferParameteri64v)
#define glGetBufferParameteriv GLES2_GET_FUN(GetBufferParameteriv)
#define glGetError GLES2_GET_FUN(GetError)
#define glGetFloatv GLES2_GET_FUN(GetFloatv)
Expand Down
17 changes: 17 additions & 0 deletions gpu/command_buffer/build_gles2_cmd_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1135,6 +1135,15 @@
'valid_es3': [
'GL_BUFFER_ACCESS_FLAGS',
'GL_BUFFER_MAPPED',
],
'invalid': [
'GL_PIXEL_PACK_BUFFER',
],
},
'BufferParameter64': {
'type': 'GLenum',
'valid': [
'GL_BUFFER_SIZE',
'GL_BUFFER_MAP_LENGTH',
'GL_BUFFER_MAP_OFFSET',
],
Expand Down Expand Up @@ -2748,6 +2757,14 @@
'decoder_func': 'DoGetBooleanv',
'gl_test_func': 'glGetBooleanv',
},
'GetBufferParameteri64v': {
'type': 'GETn',
'result': ['SizedResult<GLint64>'],
'decoder_func': 'DoGetBufferParameteri64v',
'expectation': False,
'shadowed': True,
'unsafe': True,
},
'GetBufferParameteriv': {
'type': 'GETn',
'result': ['SizedResult<GLint>'],
Expand Down
7 changes: 7 additions & 0 deletions gpu/command_buffer/client/gles2_c_lib_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,9 @@ GLint GLES2GetAttribLocation(GLuint program, const char* name) {
void GLES2GetBooleanv(GLenum pname, GLboolean* params) {
gles2::GetGLContext()->GetBooleanv(pname, params);
}
void GLES2GetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) {
gles2::GetGLContext()->GetBufferParameteri64v(target, pname, params);
}
void GLES2GetBufferParameteriv(GLenum target, GLenum pname, GLint* params) {
gles2::GetGLContext()->GetBufferParameteriv(target, pname, params);
}
Expand Down Expand Up @@ -1785,6 +1788,10 @@ extern const NameToFunc g_gles2_function_table[] = {
{
"glGetBooleanv", reinterpret_cast<GLES2FunctionPointer>(glGetBooleanv),
},
{
"glGetBufferParameteri64v",
reinterpret_cast<GLES2FunctionPointer>(glGetBufferParameteri64v),
},
{
"glGetBufferParameteriv",
reinterpret_cast<GLES2FunctionPointer>(glGetBufferParameteriv),
Expand Down
11 changes: 11 additions & 0 deletions gpu/command_buffer/client/gles2_cmd_helper_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -854,6 +854,17 @@ void GetBooleanv(GLenum pname,
}
}

void GetBufferParameteri64v(GLenum target,
GLenum pname,
uint32_t params_shm_id,
uint32_t params_shm_offset) {
gles2::cmds::GetBufferParameteri64v* c =
GetCmdSpace<gles2::cmds::GetBufferParameteri64v>();
if (c) {
c->Init(target, pname, params_shm_id, params_shm_offset);
}
}

void GetBufferParameteriv(GLenum target,
GLenum pname,
uint32_t params_shm_id,
Expand Down
7 changes: 7 additions & 0 deletions gpu/command_buffer/client/gles2_implementation.h
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,8 @@ class GLES2_IMPL_EXPORT GLES2Implementation
bool GetHelper(GLenum pname, GLint* params);
GLuint GetBoundBufferHelper(GLenum target);
bool GetBooleanvHelper(GLenum pname, GLboolean* params);
bool GetBufferParameteri64vHelper(
GLenum target, GLenum pname, GLint64* params);
bool GetBufferParameterivHelper(GLenum target, GLenum pname, GLint* params);
bool GetFloatvHelper(GLenum pname, GLfloat* params);
bool GetFramebufferAttachmentParameterivHelper(
Expand Down Expand Up @@ -827,6 +829,11 @@ class GLES2_IMPL_EXPORT GLES2Implementation
DISALLOW_COPY_AND_ASSIGN(GLES2Implementation);
};

inline bool GLES2Implementation::GetBufferParameteri64vHelper(
GLenum /* target */, GLenum /* pname */, GLint64* /* params */) {
return false;
}

inline bool GLES2Implementation::GetBufferParameterivHelper(
GLenum /* target */, GLenum /* pname */, GLint* /* params */) {
return false;
Expand Down
4 changes: 4 additions & 0 deletions gpu/command_buffer/client/gles2_implementation_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,10 @@ GLint GetAttribLocation(GLuint program, const char* name) override;

void GetBooleanv(GLenum pname, GLboolean* params) override;

void GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) override;

void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params) override;

GLenum GetError() override;
Expand Down
29 changes: 29 additions & 0 deletions gpu/command_buffer/client/gles2_implementation_impl_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,35 @@ void GLES2Implementation::GetBooleanv(GLenum pname, GLboolean* params) {
});
CheckGLError();
}
void GLES2Implementation::GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) {
GPU_CLIENT_SINGLE_THREAD_CHECK();
GPU_CLIENT_LOG("[" << GetLogPrefix() << "] glGetBufferParameteri64v("
<< GLES2Util::GetStringBufferTarget(target) << ", "
<< GLES2Util::GetStringBufferParameter64(pname) << ", "
<< static_cast<const void*>(params) << ")");
TRACE_EVENT0("gpu", "GLES2Implementation::GetBufferParameteri64v");
if (GetBufferParameteri64vHelper(target, pname, params)) {
return;
}
typedef cmds::GetBufferParameteri64v::Result Result;
Result* result = GetResultAs<Result*>();
if (!result) {
return;
}
result->SetNumResults(0);
helper_->GetBufferParameteri64v(target, pname, GetResultShmId(),
GetResultShmOffset());
WaitForCmd();
result->CopyResult(params);
GPU_CLIENT_LOG_CODE_BLOCK({
for (int32_t i = 0; i < result->GetNumResults(); ++i) {
GPU_CLIENT_LOG(" " << i << ": " << result->GetData()[i]);
}
});
CheckGLError();
}
void GLES2Implementation::GetBufferParameteriv(GLenum target,
GLenum pname,
GLint* params) {
Expand Down
18 changes: 18 additions & 0 deletions gpu/command_buffer/client/gles2_implementation_unittest_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,24 @@ TEST_F(GLES2ImplementationTest, GetBooleanv) {
EXPECT_EQ(static_cast<ResultType>(1), result);
}

TEST_F(GLES2ImplementationTest, GetBufferParameteri64v) {
struct Cmds {
cmds::GetBufferParameteri64v cmd;
};
typedef cmds::GetBufferParameteri64v::Result::Type ResultType;
ResultType result = 0;
Cmds expected;
ExpectedMemoryInfo result1 =
GetExpectedResultMemory(sizeof(uint32_t) + sizeof(ResultType));
expected.cmd.Init(123, GL_BUFFER_SIZE, result1.id, result1.offset);
EXPECT_CALL(*command_buffer(), OnFlush())
.WillOnce(SetMemory(result1.ptr, SizedResultHelper<ResultType>(1)))
.RetiresOnSaturation();
gl_->GetBufferParameteri64v(123, GL_BUFFER_SIZE, &result);
EXPECT_EQ(0, memcmp(&expected, commands_, sizeof(expected)));
EXPECT_EQ(static_cast<ResultType>(1), result);
}

TEST_F(GLES2ImplementationTest, GetBufferParameteriv) {
struct Cmds {
cmds::GetBufferParameteriv cmd;
Expand Down
3 changes: 3 additions & 0 deletions gpu/command_buffer/client/gles2_interface_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,9 @@ virtual void GetAttachedShaders(GLuint program,
GLuint* shaders) = 0;
virtual GLint GetAttribLocation(GLuint program, const char* name) = 0;
virtual void GetBooleanv(GLenum pname, GLboolean* params) = 0;
virtual void GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) = 0;
virtual void GetBufferParameteriv(GLenum target,
GLenum pname,
GLint* params) = 0;
Expand Down
3 changes: 3 additions & 0 deletions gpu/command_buffer/client/gles2_interface_stub_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@ void GetAttachedShaders(GLuint program,
GLuint* shaders) override;
GLint GetAttribLocation(GLuint program, const char* name) override;
void GetBooleanv(GLenum pname, GLboolean* params) override;
void GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) override;
void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params) override;
GLenum GetError() override;
void GetFloatv(GLenum pname, GLfloat* params) override;
Expand Down
3 changes: 3 additions & 0 deletions gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,9 @@ GLint GLES2InterfaceStub::GetAttribLocation(GLuint /* program */,
}
void GLES2InterfaceStub::GetBooleanv(GLenum /* pname */,
GLboolean* /* params */) {}
void GLES2InterfaceStub::GetBufferParameteri64v(GLenum /* target */,
GLenum /* pname */,
GLint64* /* params */) {}
void GLES2InterfaceStub::GetBufferParameteriv(GLenum /* target */,
GLenum /* pname */,
GLint* /* params */) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,9 @@ void GetAttachedShaders(GLuint program,
GLuint* shaders) override;
GLint GetAttribLocation(GLuint program, const char* name) override;
void GetBooleanv(GLenum pname, GLboolean* params) override;
void GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) override;
void GetBufferParameteriv(GLenum target, GLenum pname, GLint* params) override;
GLenum GetError() override;
void GetFloatv(GLenum pname, GLfloat* params) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,13 @@ void GLES2TraceImplementation::GetBooleanv(GLenum pname, GLboolean* params) {
gl_->GetBooleanv(pname, params);
}

void GLES2TraceImplementation::GetBufferParameteri64v(GLenum target,
GLenum pname,
GLint64* params) {
TRACE_EVENT_BINARY_EFFICIENT0("gpu", "GLES2Trace::GetBufferParameteri64v");
gl_->GetBufferParameteri64v(target, pname, params);
}

void GLES2TraceImplementation::GetBufferParameteriv(GLenum target,
GLenum pname,
GLint* params) {
Expand Down
1 change: 1 addition & 0 deletions gpu/command_buffer/cmd_buffer_functions.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ GL_APICALL void GL_APIENTRY glGetActiveUniformsiv (GLidProgram program,
GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLidProgram program, GLsizeiNotNegative maxcount, GLsizeiOptional* count, GLuint* shaders);
GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLidProgram program, const char* name);
GL_APICALL void GL_APIENTRY glGetBooleanv (GLenumGLState pname, GLboolean* params);
GL_APICALL void GL_APIENTRY glGetBufferParameteri64v (GLenumBufferTarget target, GLenumBufferParameter64 pname, GLint64* params);
GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenumBufferTarget target, GLenumBufferParameter pname, GLint* params);
GL_APICALL GLenum GL_APIENTRY glGetError (void);
GL_APICALL void GL_APIENTRY glGetFloatv (GLenumGLState pname, GLfloat* params);
Expand Down
56 changes: 56 additions & 0 deletions gpu/command_buffer/common/gles2_cmd_format_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -4156,6 +4156,62 @@ static_assert(offsetof(GetBooleanv, params_shm_id) == 8,
static_assert(offsetof(GetBooleanv, params_shm_offset) == 12,
"offset of GetBooleanv params_shm_offset should be 12");

struct GetBufferParameteri64v {
typedef GetBufferParameteri64v ValueType;
static const CommandId kCmdId = kGetBufferParameteri64v;
static const cmd::ArgFlags kArgFlags = cmd::kFixed;
static const uint8 cmd_flags = CMD_FLAG_SET_TRACE_LEVEL(3);

typedef SizedResult<GLint64> Result;

static uint32_t ComputeSize() {
return static_cast<uint32_t>(sizeof(ValueType)); // NOLINT
}

void SetHeader() { header.SetCmd<ValueType>(); }

void Init(GLenum _target,
GLenum _pname,
uint32_t _params_shm_id,
uint32_t _params_shm_offset) {
SetHeader();
target = _target;
pname = _pname;
params_shm_id = _params_shm_id;
params_shm_offset = _params_shm_offset;
}

void* Set(void* cmd,
GLenum _target,
GLenum _pname,
uint32_t _params_shm_id,
uint32_t _params_shm_offset) {
static_cast<ValueType*>(cmd)
->Init(_target, _pname, _params_shm_id, _params_shm_offset);
return NextCmdAddress<ValueType>(cmd);
}

gpu::CommandHeader header;
uint32_t target;
uint32_t pname;
uint32_t params_shm_id;
uint32_t params_shm_offset;
};

static_assert(sizeof(GetBufferParameteri64v) == 20,
"size of GetBufferParameteri64v should be 20");
static_assert(offsetof(GetBufferParameteri64v, header) == 0,
"offset of GetBufferParameteri64v header should be 0");
static_assert(offsetof(GetBufferParameteri64v, target) == 4,
"offset of GetBufferParameteri64v target should be 4");
static_assert(offsetof(GetBufferParameteri64v, pname) == 8,
"offset of GetBufferParameteri64v pname should be 8");
static_assert(offsetof(GetBufferParameteri64v, params_shm_id) == 12,
"offset of GetBufferParameteri64v params_shm_id should be 12");
static_assert(
offsetof(GetBufferParameteri64v, params_shm_offset) == 16,
"offset of GetBufferParameteri64v params_shm_offset should be 16");

struct GetBufferParameteriv {
typedef GetBufferParameteriv ValueType;
static const CommandId kCmdId = kGetBufferParameteriv;
Expand Down
16 changes: 16 additions & 0 deletions gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
Original file line number Diff line number Diff line change
Expand Up @@ -1310,6 +1310,22 @@ TEST_F(GLES2FormatTest, GetBooleanv) {
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}

TEST_F(GLES2FormatTest, GetBufferParameteri64v) {
cmds::GetBufferParameteri64v& cmd =
*GetBufferAs<cmds::GetBufferParameteri64v>();
void* next_cmd =
cmd.Set(&cmd, static_cast<GLenum>(11), static_cast<GLenum>(12),
static_cast<uint32_t>(13), static_cast<uint32_t>(14));
EXPECT_EQ(static_cast<uint32_t>(cmds::GetBufferParameteri64v::kCmdId),
cmd.header.command);
EXPECT_EQ(sizeof(cmd), cmd.header.size * 4u);
EXPECT_EQ(static_cast<GLenum>(11), cmd.target);
EXPECT_EQ(static_cast<GLenum>(12), cmd.pname);
EXPECT_EQ(static_cast<uint32_t>(13), cmd.params_shm_id);
EXPECT_EQ(static_cast<uint32_t>(14), cmd.params_shm_offset);
CheckBytesWrittenMatchesExpectedSize(next_cmd, sizeof(cmd));
}

TEST_F(GLES2FormatTest, GetBufferParameteriv) {
cmds::GetBufferParameteriv& cmd = *GetBufferAs<cmds::GetBufferParameteriv>();
void* next_cmd =
Expand Down
Loading

0 comments on commit 552a9eb

Please sign in to comment.