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

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

Issue 2468123002: Change BufferManager::RequestBufferAccess signatures to avoid sprintfs. (Closed)
Patch Set: Created 4 years, 1 month 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/buffer_manager.h" 5 #include "gpu/command_buffer/service/buffer_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <limits> 9 #include <limits>
10 10
(...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 } 751 }
752 752
753 Buffer* BufferManager::RequestBufferAccess(ContextState* context_state, 753 Buffer* BufferManager::RequestBufferAccess(ContextState* context_state,
754 GLenum target, 754 GLenum target,
755 GLintptr offset, 755 GLintptr offset,
756 GLsizeiptr size, 756 GLsizeiptr size,
757 const char* func_name) { 757 const char* func_name) {
758 DCHECK(context_state); 758 DCHECK(context_state);
759 ErrorState* error_state = context_state->GetErrorState(); 759 ErrorState* error_state = context_state->GetErrorState();
760 760
761 std::string msg_tag = base::StringPrintf("bound to target 0x%04x", target);
762 Buffer* buffer = GetBufferInfoForTarget(context_state, target); 761 Buffer* buffer = GetBufferInfoForTarget(context_state, target);
763 if (!RequestBufferAccess(error_state, buffer, func_name, msg_tag.c_str())) { 762 if (!RequestBufferAccess(error_state, buffer, func_name,
763 "bound to target 0x%04x", target)) {
764 return nullptr; 764 return nullptr;
765 } 765 }
766 if (!buffer->CheckRange(offset, size)) { 766 if (!buffer->CheckRange(offset, size)) {
767 std::string msg = base::StringPrintf( 767 std::string msg = base::StringPrintf(
768 "%s : offset/size out of range", msg_tag.c_str()); 768 "bound to target 0x%04x : offset/size out of range", target);
769 ERRORSTATE_SET_GL_ERROR( 769 ERRORSTATE_SET_GL_ERROR(
770 error_state, GL_INVALID_VALUE, func_name, msg.c_str()); 770 error_state, GL_INVALID_VALUE, func_name, msg.c_str());
771 return nullptr; 771 return nullptr;
772 } 772 }
773 return buffer; 773 return buffer;
774 } 774 }
775 775
776 Buffer* BufferManager::RequestBufferAccess(ContextState* context_state, 776 Buffer* BufferManager::RequestBufferAccess(ContextState* context_state,
777 GLenum target, 777 GLenum target,
778 const char* func_name) { 778 const char* func_name) {
779 DCHECK(context_state); 779 DCHECK(context_state);
780 ErrorState* error_state = context_state->GetErrorState(); 780 ErrorState* error_state = context_state->GetErrorState();
781 781
782 std::string msg_tag = base::StringPrintf("bound to target 0x%04x", target);
783 Buffer* buffer = GetBufferInfoForTarget(context_state, target); 782 Buffer* buffer = GetBufferInfoForTarget(context_state, target);
784 return RequestBufferAccess( 783 return RequestBufferAccess(
785 error_state, buffer, func_name, msg_tag.c_str()) ? buffer : nullptr; 784 error_state, buffer, func_name,
785 "bound to target 0x%04x", target) ? buffer : nullptr;
786 } 786 }
787 787
788 bool BufferManager::RequestBufferAccess(ErrorState* error_state, 788 bool BufferManager::RequestBufferAccess(ErrorState* error_state,
789 Buffer* buffer, 789 Buffer* buffer,
790 const char* func_name, 790 const char* func_name,
791 const char* message_tag) { 791 const char* error_message_format, ...) {
792 DCHECK(error_state); 792 DCHECK(error_state);
793 793
794 if (!buffer || buffer->IsDeleted()) { 794 va_list varargs;
795 std::string msg = base::StringPrintf("%s : no buffer", message_tag); 795 va_start(varargs, error_message_format);
796 ERRORSTATE_SET_GL_ERROR(error_state, GL_INVALID_OPERATION, func_name, 796 bool result = RequestBufferAccessV(error_state, buffer, func_name,
797 msg.c_str()); 797 error_message_format, varargs);
798 return false; 798 va_end(varargs);
799 } 799 return result;
800 if (buffer->GetMappedRange()) {
801 std::string msg = base::StringPrintf("%s : buffer is mapped", message_tag);
802 ERRORSTATE_SET_GL_ERROR(error_state, GL_INVALID_OPERATION, func_name,
803 msg.c_str());
804 return false;
805 }
806 return true;
807 } 800 }
808 801
809 bool BufferManager::RequestBufferAccess(ErrorState* error_state, 802 bool BufferManager::RequestBufferAccess(ErrorState* error_state,
810 Buffer* buffer, 803 Buffer* buffer,
811 GLintptr offset, 804 GLintptr offset,
812 GLsizeiptr size, 805 GLsizeiptr size,
813 const char* func_name, 806 const char* func_name,
814 const char* message_tag) { 807 const char* error_message_format,
815 if (!RequestBufferAccess(error_state, buffer, func_name, message_tag)) { 808 ...) {
809 va_list varargs;
810 va_start(varargs, error_message_format);
811 bool request = RequestBufferAccessV(
812 error_state, buffer, func_name, error_message_format, varargs);
813 if (!request) {
814 va_end(varargs);
816 return false; 815 return false;
817 } 816 }
818 if (!buffer->CheckRange(offset, size)) { 817 if (!buffer->CheckRange(offset, size)) {
818 std::string message_tag = base::StringPrintV(error_message_format, varargs);
piman 2016/11/02 17:27:41 According to http://en.cppreference.com/w/cpp/util
Ken Russell (switch to Gerrit) 2016/11/02 18:29:01 If it was used in RequestBufferAccessV, that meant
819 va_end(varargs);
819 std::string msg = base::StringPrintf( 820 std::string msg = base::StringPrintf(
820 "%s : offset/size out of range", message_tag); 821 "%s : offset/size out of range", message_tag.c_str());
821 ERRORSTATE_SET_GL_ERROR( 822 ERRORSTATE_SET_GL_ERROR(
822 error_state, GL_INVALID_OPERATION, func_name, msg.c_str()); 823 error_state, GL_INVALID_OPERATION, func_name, msg.c_str());
823 return false; 824 return false;
824 } 825 }
826 va_end(varargs);
825 return true; 827 return true;
826 } 828 }
827 829
828 bool BufferManager::RequestBuffersAccess( 830 bool BufferManager::RequestBuffersAccess(
829 ErrorState* error_state, 831 ErrorState* error_state,
830 const IndexedBufferBindingHost* bindings, 832 const IndexedBufferBindingHost* bindings,
831 const std::vector<GLsizeiptr>& variable_sizes, 833 const std::vector<GLsizeiptr>& variable_sizes,
832 GLsizei count, 834 GLsizei count,
833 const char* func_name, 835 const char* func_name,
834 const char* message_tag) { 836 const char* message_tag) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
869 void BufferManager::IncreaseMappedBufferCount() { 871 void BufferManager::IncreaseMappedBufferCount() {
870 DCHECK_GT(std::numeric_limits<uint32_t>::max(), mapped_buffer_count_); 872 DCHECK_GT(std::numeric_limits<uint32_t>::max(), mapped_buffer_count_);
871 mapped_buffer_count_++; 873 mapped_buffer_count_++;
872 } 874 }
873 875
874 void BufferManager::DecreaseMappedBufferCount() { 876 void BufferManager::DecreaseMappedBufferCount() {
875 DCHECK_LT(0u, mapped_buffer_count_); 877 DCHECK_LT(0u, mapped_buffer_count_);
876 mapped_buffer_count_--; 878 mapped_buffer_count_--;
877 } 879 }
878 880
881 bool BufferManager::RequestBufferAccessV(ErrorState* error_state,
882 Buffer* buffer,
883 const char* func_name,
884 const char* error_message_format,
885 va_list varargs) {
886 DCHECK(error_state);
887
888 if (!buffer || buffer->IsDeleted()) {
889 std::string message_tag = base::StringPrintV(error_message_format, varargs);
890 std::string msg = base::StringPrintf("%s : no buffer", message_tag.c_str());
891 ERRORSTATE_SET_GL_ERROR(error_state, GL_INVALID_OPERATION, func_name,
892 msg.c_str());
893 return false;
894 }
895 if (buffer->GetMappedRange()) {
896 std::string message_tag = base::StringPrintV(error_message_format, varargs);
897 std::string msg = base::StringPrintf("%s : buffer is mapped",
898 message_tag.c_str());
899 ERRORSTATE_SET_GL_ERROR(error_state, GL_INVALID_OPERATION, func_name,
900 msg.c_str());
901 return false;
902 }
903 return true;
904 }
905
879 } // namespace gles2 906 } // namespace gles2
880 } // namespace gpu 907 } // namespace gpu
OLDNEW
« no previous file with comments | « gpu/command_buffer/service/buffer_manager.h ('k') | gpu/command_buffer/service/vertex_attrib_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698