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

Side by Side Diff: Source/core/html/canvas/WebGLRenderingContext.cpp

Issue 135893002: Make attrib missing buffer message clearer. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 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 unified diff | Download patch
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContext.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 1775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 state.enabled = false; 1786 state.enabled = false;
1787 1787
1788 // If the disabled index is the current maximum, trace backwards to find the new max enabled attrib index 1788 // If the disabled index is the current maximum, trace backwards to find the new max enabled attrib index
1789 if (m_onePlusMaxEnabledAttribIndex == index + 1) { 1789 if (m_onePlusMaxEnabledAttribIndex == index + 1) {
1790 findNewMaxEnabledAttribIndex(); 1790 findNewMaxEnabledAttribIndex();
1791 } 1791 }
1792 1792
1793 m_context->disableVertexAttribArray(index); 1793 m_context->disableVertexAttribArray(index);
1794 } 1794 }
1795 1795
1796 bool WebGLRenderingContext::validateRenderingState() 1796 bool WebGLRenderingContext::validateRenderingState(const char* functionName)
1797 { 1797 {
1798 if (!m_currentProgram) 1798 if (!m_currentProgram) {
1799 synthesizeGLError(GL_INVALID_OPERATION, functionName, "no valid shader p rogram in use");
1799 return false; 1800 return false;
1801 }
1800 1802
1801 // Look in each enabled vertex attrib and check if they've been bound to a b uffer. 1803 // Look in each enabled vertex attrib and check if they've been bound to a b uffer.
1802 for (unsigned i = 0; i < m_onePlusMaxEnabledAttribIndex; ++i) { 1804 for (unsigned i = 0; i < m_onePlusMaxEnabledAttribIndex; ++i) {
1803 const WebGLVertexArrayObjectOES::VertexAttribState& state = m_boundVerte xArrayObject->getVertexAttribState(i); 1805 const WebGLVertexArrayObjectOES::VertexAttribState& state = m_boundVerte xArrayObject->getVertexAttribState(i);
1804 if (state.enabled 1806 if (state.enabled
1805 && (!state.bufferBinding || !state.bufferBinding->object())) 1807 && (!state.bufferBinding || !state.bufferBinding->object())) {
1808 synthesizeGLError(GL_INVALID_OPERATION, functionName, String::format ("attribute %d is enabled but has no buffer bound", i).utf8().data());
1806 return false; 1809 return false;
1810 }
1807 } 1811 }
1808 1812
1809 return true; 1813 return true;
1810 } 1814 }
1811 1815
1812 bool WebGLRenderingContext::validateWebGLObject(const char* functionName, WebGLO bject* object) 1816 bool WebGLRenderingContext::validateWebGLObject(const char* functionName, WebGLO bject* object)
1813 { 1817 {
1814 if (!object || !object->object()) { 1818 if (!object || !object->object()) {
1815 synthesizeGLError(GL_INVALID_VALUE, functionName, "no object or object d eleted"); 1819 synthesizeGLError(GL_INVALID_VALUE, functionName, "no object or object d eleted");
1816 return false; 1820 return false;
(...skipping 3395 matching lines...) Expand 10 before | Expand all | Expand 10 after
5212 if (first < 0 || count < 0) { 5216 if (first < 0 || count < 0) {
5213 synthesizeGLError(GL_INVALID_VALUE, functionName, "first or count < 0"); 5217 synthesizeGLError(GL_INVALID_VALUE, functionName, "first or count < 0");
5214 return false; 5218 return false;
5215 } 5219 }
5216 5220
5217 if (!count) { 5221 if (!count) {
5218 markContextChanged(); 5222 markContextChanged();
5219 return false; 5223 return false;
5220 } 5224 }
5221 5225
5222 if (!validateRenderingState()) { 5226 if (!validateRenderingState(functionName)) {
5223 synthesizeGLError(GL_INVALID_OPERATION, functionName, "attribs not setup correctly");
5224 return false; 5227 return false;
5225 } 5228 }
5226 5229
5227 const char* reason = "framebuffer incomplete"; 5230 const char* reason = "framebuffer incomplete";
5228 if (m_framebufferBinding && !m_framebufferBinding->onAccess(graphicsContext3 D(), &reason)) { 5231 if (m_framebufferBinding && !m_framebufferBinding->onAccess(graphicsContext3 D(), &reason)) {
5229 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason ); 5232 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason );
5230 return false; 5233 return false;
5231 } 5234 }
5232 5235
5233 return true; 5236 return true;
(...skipping 29 matching lines...) Expand all
5263 if (!count) { 5266 if (!count) {
5264 markContextChanged(); 5267 markContextChanged();
5265 return false; 5268 return false;
5266 } 5269 }
5267 5270
5268 if (!m_boundVertexArrayObject->boundElementArrayBuffer()) { 5271 if (!m_boundVertexArrayObject->boundElementArrayBuffer()) {
5269 synthesizeGLError(GL_INVALID_OPERATION, functionName, "no ELEMENT_ARRAY_ BUFFER bound"); 5272 synthesizeGLError(GL_INVALID_OPERATION, functionName, "no ELEMENT_ARRAY_ BUFFER bound");
5270 return false; 5273 return false;
5271 } 5274 }
5272 5275
5273 if (!validateRenderingState()) { 5276 if (!validateRenderingState(functionName)) {
5274 synthesizeGLError(GL_INVALID_OPERATION, functionName, "attribs not setup correctly");
5275 return false; 5277 return false;
5276 } 5278 }
5277 5279
5278 const char* reason = "framebuffer incomplete"; 5280 const char* reason = "framebuffer incomplete";
5279 if (m_framebufferBinding && !m_framebufferBinding->onAccess(graphicsContext3 D(), &reason)) { 5281 if (m_framebufferBinding && !m_framebufferBinding->onAccess(graphicsContext3 D(), &reason)) {
5280 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason ); 5282 synthesizeGLError(GL_INVALID_FRAMEBUFFER_OPERATION, functionName, reason );
5281 return false; 5283 return false;
5282 } 5284 }
5283 5285
5284 return true; 5286 return true;
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
5639 if (m_textureUnits[i].m_texture2DBinding 5641 if (m_textureUnits[i].m_texture2DBinding
5640 || m_textureUnits[i].m_textureCubeMapBinding) { 5642 || m_textureUnits[i].m_textureCubeMapBinding) {
5641 m_onePlusMaxNonDefaultTextureUnit = i + 1; 5643 m_onePlusMaxNonDefaultTextureUnit = i + 1;
5642 return; 5644 return;
5643 } 5645 }
5644 } 5646 }
5645 m_onePlusMaxNonDefaultTextureUnit = 0; 5647 m_onePlusMaxNonDefaultTextureUnit = 0;
5646 } 5648 }
5647 5649
5648 } // namespace WebCore 5650 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/canvas/WebGLRenderingContext.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698