Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Unified Diff: gpu/command_buffer/build_gles2_cmd_buffer.py

Issue 862133002: Update from https://crrev.com/312398 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gpu/command_buffer/build_gles2_cmd_buffer.py
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index 922a496c2ae8d8cca742a04933789d4a50019986..38cbb494e9f7316ae51ad0f02dce7a7c26bf5107 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -598,6 +598,44 @@ _NAMED_TYPE_INFO = {
'GL_RENDERBUFFER',
],
},
+ 'Bufferiv': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_COLOR',
+ 'GL_STENCIL',
+ ],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
+ },
+ 'Bufferuiv': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_COLOR',
+ ],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
+ },
+ 'Bufferfv': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_COLOR',
+ 'GL_DEPTH',
+ ],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
+ },
+ 'Bufferfi': {
+ 'type': 'GLenum',
+ 'valid': [
+ 'GL_DEPTH_STENCIL',
+ ],
+ 'invalid': [
+ 'GL_RENDERBUFFER',
+ ],
+ },
'BufferUsage': {
'type': 'GLenum',
'valid': [
@@ -1377,6 +1415,8 @@ _PEPPER_INTERFACES = [
# for this command.
# needs_size: If True a data_size field is added to the command.
# count: The number of units per element. For PUTn or PUT types.
+# use_count_func: If True the actual data count needs to be computed; the count
+# argument specifies the maximum count.
# unit_test: If False no service side unit test will be generated.
# client_test: If False no client side unit test will be generated.
# expectation: If False the unit test will have no expected calls.
@@ -1504,6 +1544,26 @@ _FUNCTION_INFO = {
'defer_draws': True,
'trace_level': 1,
},
+ 'ClearBufferiv': {
+ 'type': 'PUT',
+ 'use_count_func': True,
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'ClearBufferuiv': {
+ 'type': 'PUT',
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'ClearBufferfv': {
+ 'type': 'PUT',
+ 'use_count_func': True,
+ 'count': 4,
+ 'unsafe': True,
+ },
+ 'ClearBufferfi': {
+ 'unsafe': True,
+ },
'ClearColor': {
'type': 'StateSet',
'state': 'ClearColor',
@@ -5624,6 +5684,10 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
file.Write(" return error::kOutOfBounds;\n")
file.Write(" }\n")
+ def __NeedsToCalcDataCount(self, func):
+ use_count_func = func.GetInfo('use_count_func')
+ return use_count_func != None and use_count_func != False
+
def WriteGLES2Implementation(self, func, file):
"""Overrriden from TypeHandler."""
impl_func = func.GetInfo('impl_func')
@@ -5635,11 +5699,16 @@ TEST_P(%(test_name)s, %(name)sInvalidArgs%(arg_index)d_%(value_index)d) {
file.Write(" GPU_CLIENT_SINGLE_THREAD_CHECK();\n")
func.WriteDestinationInitalizationValidation(file)
self.WriteClientGLCallLog(func, file)
- last_arg_name = func.GetLastOriginalArg().name
- values_str = ' << ", " << '.join(
- ["%s[%d]" % (last_arg_name, ndx) \
- for ndx in range(0, self.GetArrayCount(func))])
- file.Write(' GPU_CLIENT_LOG("values: " << %s);\n' % values_str)
+
+ if self.__NeedsToCalcDataCount(func):
+ file.Write(" size_t count = GLES2Util::Calc%sDataCount(%s);\n" %
+ (func.name, func.GetOriginalArgs()[0].name))
+ file.Write(" DCHECK_LE(count, %du);\n" % self.GetArrayCount(func))
+ else:
+ file.Write(" size_t count = %d;" % self.GetArrayCount(func))
+ file.Write(" for (size_t ii = 0; ii < count; ++ii)\n")
+ file.Write(' GPU_CLIENT_LOG("value[" << ii << "]: " << %s[ii]);\n' %
+ func.GetLastOriginalArg().name)
for arg in func.GetOriginalArgs():
arg.WriteClientSideValidationCode(file, func)
file.Write(" helper_->%sImmediate(%s);\n" %
@@ -5689,14 +5758,24 @@ TEST_F(GLES2ImplementationTest, %(name)s) {
"""Overrriden from TypeHandler."""
file.Write(" static uint32_t ComputeDataSize() {\n")
file.Write(" return static_cast<uint32_t>(\n")
- file.Write(" sizeof(%s) * %d); // NOLINT\n" %
+ file.Write(" sizeof(%s) * %d);\n" %
(self.GetArrayType(func), self.GetArrayCount(func)))
file.Write(" }\n")
file.Write("\n")
+ if self.__NeedsToCalcDataCount(func):
+ file.Write(" static uint32_t ComputeEffectiveDataSize(%s %s) {\n" %
+ (func.GetOriginalArgs()[0].type,
+ func.GetOriginalArgs()[0].name))
+ file.Write(" return static_cast<uint32_t>(\n")
+ file.Write(" sizeof(%s) * GLES2Util::Calc%sDataCount(%s));\n" %
+ (self.GetArrayType(func), func.original_name,
+ func.GetOriginalArgs()[0].name))
+ file.Write(" }\n")
+ file.Write("\n")
file.Write(" static uint32_t ComputeSize() {\n")
file.Write(" return static_cast<uint32_t>(\n")
file.Write(
- " sizeof(ValueType) + ComputeDataSize()); // NOLINT\n")
+ " sizeof(ValueType) + ComputeDataSize());\n")
file.Write(" }\n")
file.Write("\n")
@@ -5719,7 +5798,17 @@ TEST_F(GLES2ImplementationTest, %(name)s) {
for arg in args:
file.Write(" %s = _%s;\n" % (arg.name, arg.name))
file.Write(" memcpy(ImmediateDataAddress(this),\n")
- file.Write(" _%s, ComputeDataSize());\n" % last_arg.name)
+ if self.__NeedsToCalcDataCount(func):
+ file.Write(" _%s, ComputeEffectiveDataSize(%s));" %
+ (last_arg.name, func.GetOriginalArgs()[0].name))
+ file.Write("""
+ DCHECK_GE(ComputeDataSize(), ComputeEffectiveDataSize(%(arg)s));
+ char* pointer = reinterpret_cast<char*>(ImmediateDataAddress(this)) +
+ ComputeEffectiveDataSize(%(arg)s);
+ memset(pointer, 0, ComputeDataSize() - ComputeEffectiveDataSize(%(arg)s));
+""" % { 'arg': func.GetOriginalArgs()[0].name, })
+ else:
+ file.Write(" _%s, ComputeDataSize());\n" % last_arg.name)
file.Write(" }\n")
file.Write("\n")
@@ -9307,7 +9396,8 @@ def main(argv):
gen.WriteCommonUtilsImpl(
"gpu/command_buffer/common/gles2_cmd_utils_implementation_autogen.h")
gen.WriteGLES2Header("gpu/GLES2/gl2chromium_autogen.h")
- mojo_gles2_prefix = "mojo/public/c/gles2/gles2_call_visitor"
+ mojo_gles2_prefix = ("third_party/mojo/src/mojo/public/c/gles2/"
+ "gles2_call_visitor")
gen.WriteMojoGLCallVisitor(mojo_gles2_prefix + "_autogen.h")
gen.WriteMojoGLCallVisitorForExtension(
mojo_gles2_prefix + "_chromium_texture_mailbox_autogen.h",

Powered by Google App Engine
This is Rietveld 408576698