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

Side by Side Diff: gpu/command_buffer/service/gles2_cmd_decoder.cc

Issue 282253002: Remove unneeded shm versions of bucket functions from command buffer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no-shm-for-immediate-commands
Patch Set: rebase (1 new added hunk) Created 6 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h"
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <list> 10 #include <list>
(...skipping 4710 matching lines...) Expand 10 before | Expand all | Expand 10 after
4721 } 4721 }
4722 Program* program = GetProgramInfoNotShader( 4722 Program* program = GetProgramInfoNotShader(
4723 program_id, "glBindAttribLocation"); 4723 program_id, "glBindAttribLocation");
4724 if (!program) { 4724 if (!program) {
4725 return; 4725 return;
4726 } 4726 }
4727 program->SetAttribLocationBinding(name, static_cast<GLint>(index)); 4727 program->SetAttribLocationBinding(name, static_cast<GLint>(index));
4728 glBindAttribLocation(program->service_id(), index, name); 4728 glBindAttribLocation(program->service_id(), index, name);
4729 } 4729 }
4730 4730
4731 error::Error GLES2DecoderImpl::HandleBindAttribLocation(
4732 uint32 immediate_data_size, const cmds::BindAttribLocation& c) {
4733 GLuint program = static_cast<GLuint>(c.program);
4734 GLuint index = static_cast<GLuint>(c.index);
4735 uint32 name_size = c.data_size;
4736 const char* name = GetSharedMemoryAs<const char*>(
4737 c.name_shm_id, c.name_shm_offset, name_size);
4738 if (name == NULL) {
4739 return error::kOutOfBounds;
4740 }
4741 std::string name_str(name, name_size);
4742 DoBindAttribLocation(program, index, name_str.c_str());
4743 return error::kNoError;
4744 }
4745
4746 error::Error GLES2DecoderImpl::HandleBindAttribLocationBucket( 4731 error::Error GLES2DecoderImpl::HandleBindAttribLocationBucket(
4747 uint32 immediate_data_size, const cmds::BindAttribLocationBucket& c) { 4732 uint32 immediate_data_size, const cmds::BindAttribLocationBucket& c) {
4748 GLuint program = static_cast<GLuint>(c.program); 4733 GLuint program = static_cast<GLuint>(c.program);
4749 GLuint index = static_cast<GLuint>(c.index); 4734 GLuint index = static_cast<GLuint>(c.index);
4750 Bucket* bucket = GetBucket(c.name_bucket_id); 4735 Bucket* bucket = GetBucket(c.name_bucket_id);
4751 if (!bucket || bucket->size() == 0) { 4736 if (!bucket || bucket->size() == 0) {
4752 return error::kInvalidArguments; 4737 return error::kInvalidArguments;
4753 } 4738 }
4754 std::string name_str; 4739 std::string name_str;
4755 if (!bucket->GetAsString(&name_str)) { 4740 if (!bucket->GetAsString(&name_str)) {
(...skipping 30 matching lines...) Expand all
4786 if (!program) { 4771 if (!program) {
4787 return; 4772 return;
4788 } 4773 }
4789 if (!program->SetUniformLocationBinding(name, location)) { 4774 if (!program->SetUniformLocationBinding(name, location)) {
4790 LOCAL_SET_GL_ERROR( 4775 LOCAL_SET_GL_ERROR(
4791 GL_INVALID_VALUE, 4776 GL_INVALID_VALUE,
4792 "glBindUniformLocationCHROMIUM", "location out of range"); 4777 "glBindUniformLocationCHROMIUM", "location out of range");
4793 } 4778 }
4794 } 4779 }
4795 4780
4796 error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUM(
4797 uint32 immediate_data_size, const cmds::BindUniformLocationCHROMIUM& c) {
4798 GLuint program = static_cast<GLuint>(c.program);
4799 GLint location = static_cast<GLint>(c.location);
4800 uint32 name_size = c.data_size;
4801 const char* name = GetSharedMemoryAs<const char*>(
4802 c.name_shm_id, c.name_shm_offset, name_size);
4803 if (name == NULL) {
4804 return error::kOutOfBounds;
4805 }
4806 std::string name_str(name, name_size);
4807 DoBindUniformLocationCHROMIUM(program, location, name_str.c_str());
4808 return error::kNoError;
4809 }
4810
4811 error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUMBucket( 4781 error::Error GLES2DecoderImpl::HandleBindUniformLocationCHROMIUMBucket(
4812 uint32 immediate_data_size, 4782 uint32 immediate_data_size,
4813 const cmds::BindUniformLocationCHROMIUMBucket& c) { 4783 const cmds::BindUniformLocationCHROMIUMBucket& c) {
4814 GLuint program = static_cast<GLuint>(c.program); 4784 GLuint program = static_cast<GLuint>(c.program);
4815 GLint location = static_cast<GLint>(c.location); 4785 GLint location = static_cast<GLint>(c.location);
4816 Bucket* bucket = GetBucket(c.name_bucket_id); 4786 Bucket* bucket = GetBucket(c.name_bucket_id);
4817 if (!bucket || bucket->size() == 0) { 4787 if (!bucket || bucket->size() == 0) {
4818 return error::kInvalidArguments; 4788 return error::kInvalidArguments;
4819 } 4789 }
4820 std::string name_str; 4790 std::string name_str;
(...skipping 1873 matching lines...) Expand 10 before | Expand all | Expand 10 after
6694 Shader* shader = GetShaderInfoNotProgram(client_id, "glShaderSource"); 6664 Shader* shader = GetShaderInfoNotProgram(client_id, "glShaderSource");
6695 if (!shader) { 6665 if (!shader) {
6696 return error::kNoError; 6666 return error::kNoError;
6697 } 6667 }
6698 // Note: We don't actually call glShaderSource here. We wait until 6668 // Note: We don't actually call glShaderSource here. We wait until
6699 // the call to glCompileShader. 6669 // the call to glCompileShader.
6700 shader->UpdateSource(str.c_str()); 6670 shader->UpdateSource(str.c_str());
6701 return error::kNoError; 6671 return error::kNoError;
6702 } 6672 }
6703 6673
6704 error::Error GLES2DecoderImpl::HandleShaderSource(
6705 uint32 immediate_data_size, const cmds::ShaderSource& c) {
6706 uint32 data_size = c.data_size;
6707 const char* data = GetSharedMemoryAs<const char*>(
6708 c.data_shm_id, c.data_shm_offset, data_size);
6709 if (!data) {
6710 return error::kOutOfBounds;
6711 }
6712 return ShaderSourceHelper(c.shader, data, data_size);
6713 }
6714
6715 error::Error GLES2DecoderImpl::HandleShaderSourceBucket( 6674 error::Error GLES2DecoderImpl::HandleShaderSourceBucket(
6716 uint32 immediate_data_size, const cmds::ShaderSourceBucket& c) { 6675 uint32 immediate_data_size, const cmds::ShaderSourceBucket& c) {
6717 Bucket* bucket = GetBucket(c.data_bucket_id); 6676 Bucket* bucket = GetBucket(c.data_bucket_id);
6718 if (!bucket || bucket->size() == 0) { 6677 if (!bucket || bucket->size() == 0) {
6719 return error::kInvalidArguments; 6678 return error::kInvalidArguments;
6720 } 6679 }
6721 return ShaderSourceHelper( 6680 return ShaderSourceHelper(
6722 c.shader, bucket->GetDataAs<const char*>(0, bucket->size() - 1), 6681 c.shader, bucket->GetDataAs<const char*>(0, bucket->size() - 1),
6723 bucket->size() - 1); 6682 bucket->size() - 1);
6724 } 6683 }
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after
7630 // longer executing commands. 7589 // longer executing commands.
7631 if (*location != -1) { 7590 if (*location != -1) {
7632 return error::kGenericError; 7591 return error::kGenericError;
7633 } 7592 }
7634 *location = program->GetAttribLocation(name_str); 7593 *location = program->GetAttribLocation(name_str);
7635 return error::kNoError; 7594 return error::kNoError;
7636 } 7595 }
7637 7596
7638 error::Error GLES2DecoderImpl::HandleGetAttribLocation( 7597 error::Error GLES2DecoderImpl::HandleGetAttribLocation(
7639 uint32 immediate_data_size, const cmds::GetAttribLocation& c) { 7598 uint32 immediate_data_size, const cmds::GetAttribLocation& c) {
7640 uint32 name_size = c.data_size;
7641 const char* name = GetSharedMemoryAs<const char*>(
7642 c.name_shm_id, c.name_shm_offset, name_size);
7643 if (!name) {
7644 return error::kOutOfBounds;
7645 }
7646 std::string name_str(name, name_size);
7647 return GetAttribLocationHelper(
7648 c.program, c.location_shm_id, c.location_shm_offset, name_str);
7649 }
7650
7651 error::Error GLES2DecoderImpl::HandleGetAttribLocationBucket(
7652 uint32 immediate_data_size, const cmds::GetAttribLocationBucket& c) {
7653 Bucket* bucket = GetBucket(c.name_bucket_id); 7599 Bucket* bucket = GetBucket(c.name_bucket_id);
7654 if (!bucket) { 7600 if (!bucket) {
7655 return error::kInvalidArguments; 7601 return error::kInvalidArguments;
7656 } 7602 }
7657 std::string name_str; 7603 std::string name_str;
7658 if (!bucket->GetAsString(&name_str)) { 7604 if (!bucket->GetAsString(&name_str)) {
7659 return error::kInvalidArguments; 7605 return error::kInvalidArguments;
7660 } 7606 }
7661 return GetAttribLocationHelper( 7607 return GetAttribLocationHelper(
7662 c.program, c.location_shm_id, c.location_shm_offset, name_str); 7608 c.program, c.location_shm_id, c.location_shm_offset, name_str);
(...skipping 26 matching lines...) Expand all
7689 // longer executing commands. 7635 // longer executing commands.
7690 if (*location != -1) { 7636 if (*location != -1) {
7691 return error::kGenericError; 7637 return error::kGenericError;
7692 } 7638 }
7693 *location = program->GetUniformFakeLocation(name_str); 7639 *location = program->GetUniformFakeLocation(name_str);
7694 return error::kNoError; 7640 return error::kNoError;
7695 } 7641 }
7696 7642
7697 error::Error GLES2DecoderImpl::HandleGetUniformLocation( 7643 error::Error GLES2DecoderImpl::HandleGetUniformLocation(
7698 uint32 immediate_data_size, const cmds::GetUniformLocation& c) { 7644 uint32 immediate_data_size, const cmds::GetUniformLocation& c) {
7699 uint32 name_size = c.data_size;
7700 const char* name = GetSharedMemoryAs<const char*>(
7701 c.name_shm_id, c.name_shm_offset, name_size);
7702 if (!name) {
7703 return error::kOutOfBounds;
7704 }
7705 std::string name_str(name, name_size);
7706 return GetUniformLocationHelper(
7707 c.program, c.location_shm_id, c.location_shm_offset, name_str);
7708 }
7709
7710 error::Error GLES2DecoderImpl::HandleGetUniformLocationBucket(
7711 uint32 immediate_data_size, const cmds::GetUniformLocationBucket& c) {
7712 Bucket* bucket = GetBucket(c.name_bucket_id); 7645 Bucket* bucket = GetBucket(c.name_bucket_id);
7713 if (!bucket) { 7646 if (!bucket) {
7714 return error::kInvalidArguments; 7647 return error::kInvalidArguments;
7715 } 7648 }
7716 std::string name_str; 7649 std::string name_str;
7717 if (!bucket->GetAsString(&name_str)) { 7650 if (!bucket->GetAsString(&name_str)) {
7718 return error::kInvalidArguments; 7651 return error::kInvalidArguments;
7719 } 7652 }
7720 return GetUniformLocationHelper( 7653 return GetUniformLocationHelper(
7721 c.program, c.location_shm_id, c.location_shm_offset, name_str); 7654 c.program, c.location_shm_id, c.location_shm_offset, name_str);
(...skipping 3154 matching lines...) Expand 10 before | Expand all | Expand 10 after
10876 } 10809 }
10877 } 10810 }
10878 10811
10879 // Include the auto-generated part of this file. We split this because it means 10812 // Include the auto-generated part of this file. We split this because it means
10880 // we can easily edit the non-auto generated parts right here in this file 10813 // we can easily edit the non-auto generated parts right here in this file
10881 // instead of having to edit some template or the code generator. 10814 // instead of having to edit some template or the code generator.
10882 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h" 10815 #include "gpu/command_buffer/service/gles2_cmd_decoder_autogen.h"
10883 10816
10884 } // namespace gles2 10817 } // namespace gles2
10885 } // namespace gpu 10818 } // namespace gpu
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698