summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/build_gles2_cmd_buffer.py
diff options
context:
space:
mode:
authorgman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-06 13:06:50 +0000
committergman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-06 13:06:50 +0000
commit790aae08d87e585e3efe036f9e2e1fe7a5e501e4 (patch)
tree22d2be6f6f0813c8844e16c381ed4bf87bfc8666 /gpu/command_buffer/build_gles2_cmd_buffer.py
parent80d88e55fda2fe9546bc1b0d135f3c989afb91f4 (diff)
downloadchromium_src-790aae08d87e585e3efe036f9e2e1fe7a5e501e4.zip
chromium_src-790aae08d87e585e3efe036f9e2e1fe7a5e501e4.tar.gz
chromium_src-790aae08d87e585e3efe036f9e2e1fe7a5e501e4.tar.bz2
Use client side arrays for GL_STREAM_DRAW attributes
Certain GPU/drivers are slow when using constantly changing vertex buffers. They also run out of memory as the pipeline the buffers so while a buffer is in used being drawn to they can't delete it immediately when you upload new data to the buffer. This is an attempt to work around that issue seemlessly by using client side arrays for buffers marked as GL_STREAM_DRAW BUG=178093 Review URL: https://chromiumcodereview.appspot.com/12494005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@186416 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/build_gles2_cmd_buffer.py')
-rwxr-xr-xgpu/command_buffer/build_gles2_cmd_buffer.py21
1 files changed, 18 insertions, 3 deletions
diff --git a/gpu/command_buffer/build_gles2_cmd_buffer.py b/gpu/command_buffer/build_gles2_cmd_buffer.py
index e826abd..a408db7 100755
--- a/gpu/command_buffer/build_gles2_cmd_buffer.py
+++ b/gpu/command_buffer/build_gles2_cmd_buffer.py
@@ -1176,6 +1176,7 @@ _PEPPER_INTERFACES = [
# when they can not be automatically determined.
# pepper_interface: The pepper interface that is used for this extension
# invalid_test: False if no invalid test needed.
+# shadowed: True = the value is shadowed so no glGetXXX call will be made.
_FUNCTION_INFO = {
'ActiveTexture': {
@@ -1563,7 +1564,13 @@ _FUNCTION_INFO = {
'decoder_func': 'DoGetBooleanv',
'gl_test_func': 'glGetBooleanv',
},
- 'GetBufferParameteriv': {'type': 'GETn', 'result': ['SizedResult<GLint>']},
+ 'GetBufferParameteriv': {
+ 'type': 'GETn',
+ 'result': ['SizedResult<GLint>'],
+ 'decoder_func': 'DoGetBufferParameteriv',
+ 'expectation': False,
+ 'shadowed': True,
+ },
'GetError': {
'type': 'Is',
'decoder_func': 'GetGLError',
@@ -4345,11 +4352,19 @@ class GETnHandler(TypeHandler):
if (result->size != 0) {
return error::kInvalidArguments;
}
- CopyRealGLErrorsToWrapper();
"""
+ shadowed = func.GetInfo('shadowed')
+ if not shadowed:
+ file.Write(" CopyRealGLErrorsToWrapper();\n");
file.Write(code)
func.WriteHandlerImplementation(file)
- code = """ GLenum error = glGetError();
+ if shadowed:
+ code = """ result->SetNumResults(num_values);
+ return error::kNoError;
+}
+"""
+ else:
+ code = """ GLenum error = glGetError();
if (error == GL_NO_ERROR) {
result->SetNumResults(num_values);
} else {