summaryrefslogtreecommitdiffstats
path: root/gpu
Commit message (Collapse)AuthorAgeFilesLines
* Do not rely on a texture's internalformat matching formatoetuaho@nvidia.com2014-02-208-36/+107
| | | | | | | | | | | | | After recently implemented support for rendering to 32-bit floating point textures on ES3, texture's internal format and format do not necessarily always match. Fix the command decoder code that relied on them matching. BUG=329605 TEST=gpu_unittests, WebGL conformance tests Review URL: https://codereview.chromium.org/168983005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@252268 0039d316-1c4b-4281-b951-d872f2087c98
* Hide X11 dependencies when use_x11=0.kalyan.kondapally@intel.com2014-02-191-1/+1
| | | | | | | | | | When using a non X11 build with Ozone, we still have dependencies on X11. This patch tries to hide X11 and related dependencies when use_x11=0 Review URL: https://codereview.chromium.org/148643002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251981 0039d316-1c4b-4281-b951-d872f2087c98
* Fix initializing the compiler parameters before modifying them.nicolascapens@chromium.org2014-02-181-1/+2
| | | | | | | | | BUG=342525 R=zmo@chromium.org Review URL: https://codereview.chromium.org/157363007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251786 0039d316-1c4b-4281-b951-d872f2087c98
* Fix typos in function names in GL errors in command decoderoetuaho@nvidia.com2014-02-171-12/+12
| | | | | | | | | BUG=none TEST=none Review URL: https://codereview.chromium.org/164373006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251659 0039d316-1c4b-4281-b951-d872f2087c98
* Move multisampling control from gpu blacklist to driver bug workaround list.zmo@chromium.org2014-02-158-94/+84
| | | | | | | | | BUG=330785 TEST=bots Review URL: https://codereview.chromium.org/135273002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251591 0039d316-1c4b-4281-b951-d872f2087c98
* Rename base::ScopedPtrAlignedFree to AlignedFreeDeleter.viettrungluu@chromium.org2014-02-151-1/+1
| | | | | | | | | | | | | | | (The new name is consistent with base::FreeDeleter.) Also, update comments to refer to scoped_ptr rather than the deprecated scoped_ptr_malloc, and convert scoped_ptr_malloc<..., ScopedPtrAlignedFree> to scoped_Ptr<..., AlignedFreeDeleter>. R=brettw@chromium.org, dalecurtis@chromium.org, piman@chromium.org, brettw TBR=piman, tyoshino Review URL: https://codereview.chromium.org/167663002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251586 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Generate mailboxes on client sidepiman@chromium.org2014-02-1519-117/+119
| | | | | | | | | | | | | | | | | | | Because mailboxes are now just a random number, we don't need to round-trip to the gpu process to generate them, which lets us get rid of IPCs, layers, etc. It also means generating a mailbox can't fail any more (even on a lost context), so, removing some code paths and associated tests. I'm adding a debug-only verification to ensure the mailboxes are generated from the crypto-random function (in debug, we burn a byte to compute a mini XOR-check as a sentinel for "we went through the Generate function"). It's not a secure check, but should hit incorrect/unsafe usage. BUG=None Review URL: https://codereview.chromium.org/165393003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251570 0039d316-1c4b-4281-b951-d872f2087c98
* Fix (or tag) uses of explicit '64' instead of GL_MAILBOX_SIZE_CHROMIUMpiman@chromium.org2014-02-153-8/+8
| | | | | | | | | | | | | | That way we can easily change the size later. Security says 64 may be overkill. BUG=None Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=251306 R=danakj@chromium.org Review URL: https://codereview.chromium.org/138763009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251453 0039d316-1c4b-4281-b951-d872f2087c98
* Use gpu::Mailbox instead of std:string in IPCspiman@chromium.org2014-02-152-6/+11
| | | | | | | | | | | | | | | - easier to read - safer since gpu::Mailbox is constant size and checked in the ParamTraits BUG=None Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=251207 R=danakj@chromium.org, jschuh@chromium.org Review URL: https://codereview.chromium.org/148003006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251451 0039d316-1c4b-4281-b951-d872f2087c98
* Implement support for rendering to 32-bit float textures on ES3oetuaho@nvidia.com2014-02-1417-143/+617
| | | | | | | | | | | | | | | | | On ES2 with OES_texture_float/OES_texture_half_float support, it is only possible to render to 16-bit half float textures using EXT_color_buffer_half_float. There's no support for rendering to 32-bit float textures in ES2 extensions. On ES3, rendering to some 32-bit float texture formats is exposed with EXT_color_buffer_float, but one must use the sized internal formats specified in ES3 core to do that. To expose this, a new command buffer extension is added which enables clients to directly use the sized internal format GL_RGBA32F. A similar extension is also added to expose GL_RGB32F on desktop GL platforms for the sake of consistency. These extensions are available whenever rendering to float textures is available. To support the current version of ANGLE, format conversions back to unsized internal formats are added to ui/gl. Tests are added to cover this functionality. The new tests also add coverage for the handling of 32-bit float formats on ES2 and on desktop GL that existed before this patch. BUG=329605 TEST=gpu_unittests, WebGL conformance tests Review URL: https://codereview.chromium.org/139013008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251329 0039d316-1c4b-4281-b951-d872f2087c98
* Revert of Fix (or tag) uses of explicit '64' instead of ↵nkostylev@chromium.org2014-02-143-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GL_MAILBOX_SIZE_CHROMIUM (https://codereview.chromium.org/138763009/) Reason for revert: FAILED: c++ -MMD -MF obj/cc/layers/cc_unittests.texture_layer_unittest.o.d -DV8_DEPRECATION_WARNINGS -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCOMPONENT_BUILD -DTOOLKIT_VIEWS=1 -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_NSS=1 -DUSE_X11=1 -DOS_CHROMEOS=1 -DUSE_XI2_MT=2 -DIMAGE_LOADER_EXTENSION=1 -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DENABLE_HIDPI=1 -DUSE_UDEV -DENABLE_EGLIMAGE=1 -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_GOOGLE_NOW=1 -DCLD_VERSION=2 -DENABLE_FULL_PRINTING=1 -DENABLE_PRINTING=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_MANAGED_USERS=1 -DENABLE_MDNS=1 -DGTEST_HAS_POSIX_RE=0 -DGL_GLEXT_PROTOTYPES -DSKIA_DLL -DGR_GL_IGNORE_ES3_MSAA=0 -DSK_ENABLE_INST_COUNT=0 -DSK_SUPPORT_GPU=1 '-DGR_GL_CUSTOM_SETUP_HEADER="GrGLConfig_chrome.h"' -DSK_ENABLE_LEGACY_API_ALIASING=1 -DSK_ATTR_DEPRECATED=SK_NOTHING_ARG1 -DSK_USE_POSIX_THREADS -DSK_DEFERRED_CANVAS_USES_FACTORIES=1 -DUNIT_TEST -DGTEST_HAS_RTTI=0 -DU_USING_ICU_NAMESPACE=0 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -D_FORTIFY_SOURCE=2 -I../../cc/test -I../../cc -I../.. -I../../third_party/khronos -I../../gpu -I../../skia/config -I../../third_party/skia/src/core -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/pdf -I../../third_party/skia/include/gpu -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../skia/ext -I../../testing/gmock/include -I../../testing/gtest/include -I../../third_party/icu/source/i18n -I../../third_party/icu/source/common -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -O2 -fno-ident -fdata-sections -ffunction-sections -funwind-tables -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare -c ../../cc/layers/texture_layer_unittest.cc -o obj/cc/layers/cc_unittests.texture_layer_unittest.o In file included from ../../testing/gmock/include/gmock/gmock-spec-builders.h:71:0, from ../../testing/gmock/include/gmock/gmock-generated-function-mockers.h:43, from ../../testing/gmock/include/gmock/gmock.h:61, from ../../cc/layers/texture_layer_unittest.cc:33: ../../testing/gmock/include/gmock/gmock-matchers.h: In member function 'bool testing::internal::EqMatcher<Rhs>::Impl<Lhs>::MatchAndExplain(Lhs, testing::MatchResultListener*) const [with Lhs = const gpu::Mailbox&, Rhs = gpu::Mailbox]': ../../cc/layers/texture_layer_unittest.cc:2173:1: instantiated from here ../../testing/gmock/include/gmock/gmock-matchers.h:784:1: error: no match for 'operator==' in 'lhs == ((const testing::internal::EqMatcher<gpu::Mailbox>::Impl<const gpu::Mailbox&>*)this)->testing::internal::EqMatcher<gpu::Mailbox>::Impl<const gpu::Mailbox&>::rhs_' ../../testing/gmock/include/gmock/gmock-matchers.h:784:1: note: candidate is: ../../testing/gtest/include/gtest/internal/gtest-linked_ptr.h:213:6: note: template<class T> bool testing::internal::operator==(T*, const testing::internal::linked_ptr<T>&) ../../testing/gmock/include/gmock/gmock-matchers.h:784:1: error: control reaches end of non-void function [-Werror=return-type] Original issue's description: > Fix (or tag) uses of explicit '64' instead of GL_MAILBOX_SIZE_CHROMIUM > > That way we can easily change the size later. Security says 64 may be overkill. > > BUG=None > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=251306 TBR=danakj@chromium.org,piman@chromium.org NOTREECHECKS=true NOTRY=true BUG=None Review URL: https://codereview.chromium.org/166853002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251309 0039d316-1c4b-4281-b951-d872f2087c98
* Fix (or tag) uses of explicit '64' instead of GL_MAILBOX_SIZE_CHROMIUMpiman@chromium.org2014-02-143-8/+8
| | | | | | | | | | That way we can easily change the size later. Security says 64 may be overkill. BUG=None Review URL: https://codereview.chromium.org/138763009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251306 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 251207 "Use gpu::Mailbox instead of std:string in IPCs"blundell@chromium.org2014-02-142-11/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | Speculative revert to determine whether it is causing the below WebViewTest.AutoSizeSW failure on the Linux Test bots (e.g., http://build.chromium.org/p/chromium.linux/builders/Linux%20Tests%20%28dbg%29%281%29/builds/30888/steps/browser_tests/logs/AutoSizeSW): FATAL:texture_layer.cc(141)] Check failed: !mailbox.IsValid() || !holder_ref_ || !mailbox.Equals(holder_ref_->holder()->mailbox()). This failure also appeared on the trybot run for this CL. > Use gpu::Mailbox instead of std:string in IPCs > > - easier to read > - safer since gpu::Mailbox is constant size and checked in the ParamTraits > > BUG=None > > Review URL: https://codereview.chromium.org/148003006 TBR=piman@chromium.org Review URL: https://codereview.chromium.org/163433008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251281 0039d316-1c4b-4281-b951-d872f2087c98
* Use gpu::Mailbox instead of std:string in IPCspiman@chromium.org2014-02-142-6/+11
| | | | | | | | | | | - easier to read - safer since gpu::Mailbox is constant size and checked in the ParamTraits BUG=None Review URL: https://codereview.chromium.org/148003006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251207 0039d316-1c4b-4281-b951-d872f2087c98
* Fix video in android webviewboliu@chromium.org2014-02-131-1/+1
| | | | | | | | | | Fix mistake introduced in r247334. Webview needs more tests. BUG= Review URL: https://codereview.chromium.org/162523002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251022 0039d316-1c4b-4281-b951-d872f2087c98
* Support multiple service instances with GLInProcessContextsievers@chromium.org2014-02-134-221/+110
| | | | | | | | | | | | | | | For example, it supports running two GPU threads. This simplifies the scheduling/queuing logic in InProcessCommandBuffer a bit and moves the non-thread/queue implementation out to WebView by allowing for passing in a InProcessCommandBuffer::Service instance when creating a context. BUG=332146 Review URL: https://codereview.chromium.org/143023005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250984 0039d316-1c4b-4281-b951-d872f2087c98
* Explicitly disable all attribs and reset all attrib divisors before drawing ↵bajones@chromium.org2014-02-124-1/+24
| | | | | | | | | | | in CopyTextureCHROMIUM BUG=342439, 304927 R=kbr@chromium.org, zmo@chromium.org Review URL: https://codereview.chromium.org/157033009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250827 0039d316-1c4b-4281-b951-d872f2087c98
* gpu: Use a single container for GLInProcessContext share groupsievers@chromium.org2014-02-123-74/+31
| | | | | | | | | | | | | | | Instead of having two global containers for GLInProcessContext and InProcessCommandBuffer, use a single one for the former and pass in the service-side share group while we are holding the lock anyways. This makes it simpler to support multiple service threads. BUG=332146 Review URL: https://codereview.chromium.org/158133004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250765 0039d316-1c4b-4281-b951-d872f2087c98
* Enable mac driver bug workaround init_varyings_without_static_use.zmo@chromium.org2014-02-123-1/+16
| | | | | | | | | | BUG=322760 TEST=webgl conformance tests R=kbr@chromium.org,bajones@chromium.org Review URL: https://codereview.chromium.org/143823020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250683 0039d316-1c4b-4281-b951-d872f2087c98
* Reduce cost of glBind* on contexts without bind_generates_resource.vmiura@chromium.org2014-02-123-102/+44
| | | | | | | | | | | | | | | | | | | | | Contexts without bind_generates_resource utilize StrictIdHandler. Binding ungenerated Ids is an error on StrictIdHandler, but there were still calls made to IdAllocator::MarkAsUsed, which has the overhead of taking a lock and doing a std::map lookup. - Changed to generate GL error on service side instead of DCHECK on client side. - StrictIdHandler::MarkAsUsedForBind becomes no-op. - Merged lock functionality of ThreadSafeIdHandlerWrapper up into the base handlers to reduce indirection and use finer grained locking. - Removed unused SharedIdHandler class. BUG=244968 Review URL: https://codereview.chromium.org/154263011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250681 0039d316-1c4b-4281-b951-d872f2087c98
* Optimize CommandBufferHelper::GetSpace().vmiura@chromium.org2014-02-123-62/+351
| | | | | | | | | | | | | | | | | | | | | | | Previously GetSpace() did various calls: - usable() - Check if buffer is usable. - AllocateRingBuffer() - Allocate buffer if not already allocated. - WaitForAvailableEntries() - Yet more checks. This change shortcuts most calls, reducing to checks on immediate_entry_count_ and commands_issued_ only, maintaining the old behavior in terms of internal flushing. immediate_entry_count_ is 0 if the buffer is unusable or unallocated, otherwise is limited to min(immediate free space, force flush limit). commands_issued_ is counted on non-Android platforms, and checks for force flush condition every kCommandsPerFlushCheck commands. BUG=340362 Review URL: https://codereview.chromium.org/141133010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250582 0039d316-1c4b-4281-b951-d872f2087c98
* Don't initialize GL again in AcceleratedSurface::Initialize()danakj@chromium.org2014-02-111-0/+1
| | | | | | | | | | | | | | GL is initialized in content::SupportsCoreAnimationPlugins() so initializing it again hits DCHECKs and breaks things. Depend on the initialization to occur in SupportsCoreAnimationPlugins() only, and ensure that it only happens there once. R=piman BUG=340954 Review URL: https://codereview.chromium.org/131433004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250316 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up dependencies on X11 librariesjamesr@chromium.org2014-02-111-0/+1
| | | | | | | | | | | | | | This converts the remaining targets that depend on X11 libraries over to depending on targets from build/linux/system.gyp instead of adding the libraries manually to the link line. This ensures that the link line is generated with pkg-config and makes the dependencies a bit tighter by getting rid of the all_dependent_settings entry in ui/ui.gyp BUG=339518 Review URL: https://codereview.chromium.org/151713003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250311 0039d316-1c4b-4281-b951-d872f2087c98
* Stop using HMAC for gpu mailboxespiman@chromium.org2014-02-089-161/+60
| | | | | | | | | | | | | | | | | | | | For a long time, we've been using HMAC to sign the mailbox names on the GPU process. However, we don't actually need the mailbox names to be guaranteed to be generated by the GPU process, we only need to ensure they're unguessable. The HMAC signature and verification has several costs: - the cost to sign the mailbox - the cost to verify the mailbox - the initialization cost (e.g. starting NSS in the GPU process) We can actually save all that cost, by just making the mailbox names (crypto-)random. BUG=311259 Review URL: https://codereview.chromium.org/157243002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249922 0039d316-1c4b-4281-b951-d872f2087c98
* Remove some unneeded include_rules allowing #includes from native_client/mseaborn@chromium.org2014-02-071-1/+0
| | | | | | | | | | BUG= https://code.google.com/p/nativeclient/issues/detail?id=2832 TEST= run checkdeps R=piman@chromium.org, thakis@chromium.org Review URL: https://codereview.chromium.org/140203005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249818 0039d316-1c4b-4281-b951-d872f2087c98
* Use validating form of IPC enum macros for gpu_messages.htsepez@chromium.org2014-02-072-1/+3
| | | | | | | | | | | This is part of a long-running background task to remove the remaining uses of the unchecked IPC_ENUM_TRAITS() macro. BUG=246708 Review URL: https://codereview.chromium.org/143573003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249652 0039d316-1c4b-4281-b951-d872f2087c98
* Makes sure command buffer's CopyTextureCHROMIUM doesn't leak uninitialized ↵zmo@chromium.org2014-02-072-1/+38
| | | | | | | | | | | | textures. BUG=322770 TEST=context-attribute-preserve-drawing-buffer.html on mac R=bajones@chromium.org Review URL: https://codereview.chromium.org/133443012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249584 0039d316-1c4b-4281-b951-d872f2087c98
* Add a gpu driver bug workaround to count in all varyings in packing check.zmo@chromium.org2014-02-077-18/+88
| | | | | | | | | | | | This is to workaround a Mesa driver bug. BUG=333885 TEST=gpu_unittests, test as mentioned in the bug report R=bajones@chromium.org, kbr@chromium.org Review URL: https://codereview.chromium.org/153173002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249547 0039d316-1c4b-4281-b951-d872f2087c98
* Hookup clear_uniforms_before_first_program_use workaround with implementation.zmo@chromium.org2014-02-0610-48/+98
| | | | | | | | | | | | Right now it's hardwired in command buffer. BUG=340516 TEST=gpu_unittests, webgl conformance tests R=bajones@chromium.org, kbr@chromium.org Review URL: https://codereview.chromium.org/147593011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249460 0039d316-1c4b-4281-b951-d872f2087c98
* Use sstream over sprintfboliu@chromium.org2014-02-062-9/+11
| | | | | | | | | | | gcc warns about sprintf being unsafe in some cases. Also snprintf is not available under windows. BUG= Review URL: https://codereview.chromium.org/152843003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@249365 0039d316-1c4b-4281-b951-d872f2087c98
* Test that glDiscardFramebufferEXT binds to the correct functionoetuaho@nvidia.com2014-02-051-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | MockGLInterface::GetGLProcAddress used to return the same mock function for different versions of a GL function. This prevented any detailed testing of the GL bindings in the GPU unit tests. This patch changes the logic so that MockGLInterface::GetGLProcAddress returns a different mock function for each different valid function name, so that the function pointer can be checked to ensure that the bindings were done correctly. However, the different mock versions of the same GL function still redirect to the same MockGLInterface member function. This preserves hiding the intricacies of the GL bindings from unit tests that are not interested in them. Initially, this is used to make sure that glInvalidateFramebuffer is bound on GLES3, and glDiscardFramebufferEXT is bound on GLES2 when the extension is present. BUG=322489 TEST=gpu_unittests Review URL: https://codereview.chromium.org/148763004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248959 0039d316-1c4b-4281-b951-d872f2087c98
* Add Mavericks to test config.zmo@chromium.org2014-02-044-5/+14
| | | | | | | | | | BUG=338160 TEST=gpu_unittests on 10.9 bots R=kbr@chromium.org Review URL: https://codereview.chromium.org/141753015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248647 0039d316-1c4b-4281-b951-d872f2087c98
* Add gpu::MailboxHolder to hold state for a gpu::Mailboxsheu@chromium.org2014-02-035-5/+82
| | | | | | | | | | | | | | | | | | | | | | | | gpu::Mailbox by itself can hold only a texture id, but in common usage it comes with texture target and syncpoint information for cross-context sharing. To reduce repetition of this pattern, gpu::MailboxHolder holds: * a gpu::Mailbox * a GL texture target * a syncpoint index Refactor other classes to use a gpu::MailboxHolder instead of separate gpu::Mailbox and associated state. Syncpoints are created with uint32 indices; make sure all uses of syncpoints use the appropriate type. BUG=None TEST=local build, unittests on CrOS snow, desktop Linux TBR=piman@chromium.org, enn@chromium.orge, cevans@chromium.org, scherkus@chromium.org Review URL: https://codereview.chromium.org/132233041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248612 0039d316-1c4b-4281-b951-d872f2087c98
* Ensure GL initialization only happens once, and provide common init pathdanakj@chromium.org2014-02-036-30/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently tests initialize GL by calling into methods that should be internal to the gl bindings code. Instead, everyone should go through GLSurface::InitializeOneOff. Also GLSurface::InitializeOneOff early outs if it was already called, leading to a pattern of initializing GL all over the place just in case and not having a clear idea of where it should be set up. Instead, DCHECK that it is not called more than once, and move calls to this method to be during process startup for unit test suites instead of mid-test. This adds two test variants of InitializeOneOff for tests to call, that set up OSMesa or Mock GL bindings, via GLSurface::InitializeOneOff. R=ben@chromium.org, piman@chromium.org, sievers@chromium.org, piman, sievers BUG=270918 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=247793 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=248049 Review URL: https://codereview.chromium.org/135213003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248557 0039d316-1c4b-4281-b951-d872f2087c98
* Add GPU bots to the default set of try jobs in ui/gl/ and gpu/.danakj@chromium.org2014-02-031-0/+17
| | | | | | | | | R=kbr@chromium.org, piman@chromium.org, piman BUG=270918 Review URL: https://codereview.chromium.org/151593002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248541 0039d316-1c4b-4281-b951-d872f2087c98
* Mark GL2FixedTests_blend_input_run as failingvangelis@chromium.org2014-01-311-0/+2
| | | | | | | | | BUG=339911 TBR=zmo Review URL: https://codereview.chromium.org/145023019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248284 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 248049 "Ensure GL initialization only happens once, and p..."kbr@chromium.org2014-01-316-20/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Caused content_gl_tests to start failing on all Mac Release GPU bots. See Issue 339658 for details. > Ensure GL initialization only happens once, and provide common init path > > Currently tests initialize GL by calling into methods that should be > internal to the gl bindings code. Instead, everyone should go through > GLSurface::InitializeOneOff. > > Also GLSurface::InitializeOneOff early outs if it was already called, > leading to a pattern of initializing GL all over the place just in case > and not having a clear idea of where it should be set up. Instead, DCHECK > that it is not called more than once, and move calls to this method to > be during process startup for unit test suites instead of mid-test. > > This adds two test variants of InitializeOneOff for tests to call, that > set up OSMesa or Mock GL bindings, via GLSurface::InitializeOneOff. > > R=piman, sievers > BUG=270918 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=247793 > > Review URL: https://codereview.chromium.org/135213003 TBR=danakj@chromium.org BUG=270918,339658 Review URL: https://codereview.chromium.org/151003002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248093 0039d316-1c4b-4281-b951-d872f2087c98
* Ensure GL initialization only happens once, and provide common init pathdanakj@chromium.org2014-01-306-30/+20
| | | | | | | | | | | | | | | | | | | | | | | | Currently tests initialize GL by calling into methods that should be internal to the gl bindings code. Instead, everyone should go through GLSurface::InitializeOneOff. Also GLSurface::InitializeOneOff early outs if it was already called, leading to a pattern of initializing GL all over the place just in case and not having a clear idea of where it should be set up. Instead, DCHECK that it is not called more than once, and move calls to this method to be during process startup for unit test suites instead of mid-test. This adds two test variants of InitializeOneOff for tests to call, that set up OSMesa or Mock GL bindings, via GLSurface::InitializeOneOff. R=piman, sievers BUG=270918 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=247793 Review URL: https://codereview.chromium.org/135213003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@248049 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 247966 "Remove unnecessary dependency from gpu/ to libui.dll"xhwang@chromium.org2014-01-301-0/+1
| | | | | | | | | | | | | | | | | | | > Remove unnecessary dependency from gpu/ to libui.dll > > The command buffer uses ui/gfx/ types and ui/gl/ bindings, but those are > separate components from ui/ui.gyp:ui. libui.dll pulls in a bunch of dependencies > (like net/) that the command buffer doesn't need. > > R=piman > > Review URL: https://codereview.chromium.org/137203006 BUG=339518 TBR=jamesr@chromium.org Review URL: https://codereview.chromium.org/131143006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247974 0039d316-1c4b-4281-b951-d872f2087c98
* Remove unnecessary dependency from gpu/ to libui.dlljamesr@chromium.org2014-01-301-1/+0
| | | | | | | | | | | | The command buffer uses ui/gfx/ types and ui/gl/ bindings, but those are separate components from ui/ui.gyp:ui. libui.dll pulls in a bunch of dependencies (like net/) that the command buffer doesn't need. R=piman Review URL: https://codereview.chromium.org/137203006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247966 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup: Remove std::string("") usage and fix lint errors.thestig@chromium.org2014-01-301-1/+1
| | | | | | | | TBR=oshima@chromium.org,stevenjb@chromium.org,bajones@chromium.org,rch@chromium.org Review URL: https://codereview.chromium.org/149573004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247844 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 247793 "Ensure GL initialization only happens once, and p..."yoz@chromium.org2014-01-306-20/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | due to new static initializers in gl_bindings_autogen_gl.cc > Ensure GL initialization only happens once, and provide common init path > > Currently tests initialize GL by calling into methods that should be > internal to the gl bindings code. Instead, everyone should go through > GLSurface::InitializeOneOff. > > Also GLSurface::InitializeOneOff early outs if it was already called, > leading to a pattern of initializing GL all over the place just in case > and not having a clear idea of where it should be set up. Instead, DCHECK > that it is not called more than once, and move calls to this method to > be during process startup for unit test suites instead of mid-test. > > This adds two test variants of InitializeOneOff for tests to call, that > set up OSMesa or Mock GL bindings, via GLSurface::InitializeOneOff. > > R=piman, sievers > BUG=270918 > > Review URL: https://codereview.chromium.org/135213003 TBR=danakj@chromium.org Review URL: https://codereview.chromium.org/149953003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247811 0039d316-1c4b-4281-b951-d872f2087c98
* Ensure GL initialization only happens once, and provide common init pathdanakj@chromium.org2014-01-306-30/+20
| | | | | | | | | | | | | | | | | | | | | | Currently tests initialize GL by calling into methods that should be internal to the gl bindings code. Instead, everyone should go through GLSurface::InitializeOneOff. Also GLSurface::InitializeOneOff early outs if it was already called, leading to a pattern of initializing GL all over the place just in case and not having a clear idea of where it should be set up. Instead, DCHECK that it is not called more than once, and move calls to this method to be during process startup for unit test suites instead of mid-test. This adds two test variants of InitializeOneOff for tests to call, that set up OSMesa or Mock GL bindings, via GLSurface::InitializeOneOff. R=piman, sievers BUG=270918 Review URL: https://codereview.chromium.org/135213003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247793 0039d316-1c4b-4281-b951-d872f2087c98
* Android: Always update SurfaceTexture when usedsievers@chromium.org2014-01-291-29/+44
| | | | | | | | | | | | This basically causes it to get updated from glCopyTextureCHROMIUM() also which is used with canvas/webgl. BUG=309162 Review URL: https://codereview.chromium.org/148513004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247699 0039d316-1c4b-4281-b951-d872f2087c98
* Don't allow glBindTexImage2D() with GL_TEXTURE_CUBE_MAPsievers@chromium.org2014-01-292-0/+17
| | | | | | | | | | We are using the same validators as for glBindTexture(), so we need to filter this out manually. (Using the texImage2D()/TextureTarget validator is not really better either, because it would not allow GL_TEXTURE_RECTANGLE_ARB.) Review URL: https://codereview.chromium.org/141703013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247542 0039d316-1c4b-4281-b951-d872f2087c98
* add a human-readable explanation to allow the trace to show why the command ↵humper@google.com2014-01-282-0/+3
| | | | | | | | | | buffer was synchronously flushed; This is handy to track down why we're experiencing long command buffer flushes on Android sometimes with GPU rasterization BUG= Review URL: https://codereview.chromium.org/132243002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247514 0039d316-1c4b-4281-b951-d872f2087c98
* Fix regression with r247334sievers@google.com2014-01-281-18/+22
| | | | | | | | | | GetLevelImage() does not handle GL_TEXTURE_CUBE_MAP. TBR=reveman@chromium.org Review URL: https://codereview.chromium.org/132333014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247382 0039d316-1c4b-4281-b951-d872f2087c98
* [gpu] Remove StreamTexture(Manager) concept from command decodersievers@google.com2014-01-2751-1157/+311
| | | | | | | | | | | | | Instead add a simple GpuControl interface to attach a GLImage-wrapped SurfaceTexture ref to a texture which will provide the necessary hooks. BUG=282700,309162 R=palmer@chromium.org, piman@chromium.org, reveman@chromium.org Review URL: https://codereview.chromium.org/147463002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247334 0039d316-1c4b-4281-b951-d872f2087c98
* Remove Windows accelerated surface support.jbauman@chromium.org2014-01-274-18/+0
| | | | | | | | | | Presentation now only happens directly from the GPU process, so this code isn't used anymore. BUG=325947 Review URL: https://codereview.chromium.org/140173004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247312 0039d316-1c4b-4281-b951-d872f2087c98
* Encapsulate functionality of the mock GL interface to MockGLInterfaceoetuaho@nvidia.com2014-01-2517-41/+44
| | | | | | | | | | | | | | | | | Previously, the mock GL interface was split into two classes, GLInterface and MockGLInterface, and related functionality existed also outside these classes. Grouping the functionality under MockGLInterface and removing the ability to read the static GLInterface* from outside makes this part of the code more self-contained and easier to understand. The comment explaining the role of MockGLInterface is also fixed: the interface is not the desktop GL interface, but rather an union of different GL interfaces. Also clean up unused autogenerated egl/glx/osmesa/wgl headers. Only the gl interface header is currently being used for mocking. The commit doesn't introduce functional changes, but only refactors existing functionality. BUG=none TEST=gpu_unittests Review URL: https://codereview.chromium.org/132823009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@247086 0039d316-1c4b-4281-b951-d872f2087c98