summaryrefslogtreecommitdiffstats
path: root/gpu
Commit message (Collapse)AuthorAgeFilesLines
* Fix obsolete dependencies that create needless recompiling. jeanluc@chromium.org2011-03-091-1/+0
| | | | | | | | BUG=71130 Review URL: http://codereview.chromium.org/6529025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77462 0039d316-1c4b-4281-b951-d872f2087c98
* Reland r76840 with fix for webkit_gpu dependencies.apatrick@chromium.org2011-03-083-195/+0
| | | | | | | | | | | | | | Removed GPU plugin. Pepper 3D v2 does not use the GPU plugin. It is integrated with the accelerated compositor. TEST=PPAPI 3D v2 still works, trybots BUG=none Review URL: http://codereview.chromium.org/6635026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77228 0039d316-1c4b-4281-b951-d872f2087c98
* Complete the revert of r76825 attempted in r76845.apatrick@chromium.org2011-03-042-0/+175
| | | | | | | | | | Drover did not add the deleted gpu_plugin directory. TEST=none BUG=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76846 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 76840 - Removed GPU plugin.jcivelli@chromium.org2011-03-041-0/+20
| | | | | | | | | | | | | | Pepper 3D v2 does not use the GPU plugin. It is integrated with the accelerated compositor. TEST=PPAPI 3D v2 still works, trybots BUG=none Review URL: http://codereview.chromium.org/6588090 TBR=apatrick@chromium.org Review URL: http://codereview.chromium.org/6614030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76845 0039d316-1c4b-4281-b951-d872f2087c98
* Removed GPU plugin.apatrick@chromium.org2011-03-033-195/+0
| | | | | | | | | | | Pepper 3D v2 does not use the GPU plugin. It is integrated with the accelerated compositor. TEST=PPAPI 3D v2 still works, trybots BUG=none Review URL: http://codereview.chromium.org/6588090 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76840 0039d316-1c4b-4281-b951-d872f2087c98
* Support caching resources in GLES2 calls in NaCl.neb@chromium.org2011-03-021-1/+1
| | | | | | | | | BUG=none TEST=NaCl GLES2 generated bindings use fast lookups. Review URL: http://codereview.chromium.org/6580018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76590 0039d316-1c4b-4281-b951-d872f2087c98
* Moved creation of GPU command buffer shared memory into the browser process.apatrick@chromium.org2011-02-287-20/+63
| | | | | | | | | | | This is to allow the GPU process to be sandboxed on all platforms. TEST=try, run WebGL app on win and mac. BUG=none Review URL: http://codereview.chromium.org/6588029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76307 0039d316-1c4b-4281-b951-d872f2087c98
* Check for excessive dimensions.cevans@chromium.org2011-02-251-0/+7
| | | | | | | | | BUG=72173 TEST=none Review URL: http://codereview.chromium.org/6576032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76028 0039d316-1c4b-4281-b951-d872f2087c98
* Moved creation of GPU transfer buffers into the browser process.apatrick@chromium.org2011-02-247-16/+67
| | | | | | | | | | | | | Transfer buffer creation was previously done in the GPU process. This is one step required to sandbox the GPU process. Rather than the GPU process opening a renderer process's handle by PID, which can't been done when sandboxed on Windows, the browser process passes the handle to the GPU process via the renderer process. TEST=try BUG=none Review URL: http://codereview.chromium.org/6557006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75980 0039d316-1c4b-4281-b951-d872f2087c98
* Fixed command-line flag to make the gpu demos work again. We now need ↵alokp@chromium.org2011-02-221-2/+2
| | | | | | | | --enable-accelerated-plugins. --enable-accelerated-layers is not needed anymore. Review URL: http://codereview.chromium.org/6546071 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75644 0039d316-1c4b-4281-b951-d872f2087c98
* In r74071, the number of outstanding SwapBuffer/CopyTextureToParentTexture ↵senorblanco@chromium.org2011-02-151-1/+1
| | | | | | | | | | | calls was changed from 2 to 1. Although this reduced jank slightly, it also regressed performance on accelerated 2D canvas by up to 60%. This change restores it to 2. Although this reintroduces a slight amount of jank, we'll have to live with that until we come up with a better solution. BUG=68735 TEST=see bug Review URL: http://codereview.chromium.org/6526017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74984 0039d316-1c4b-4281-b951-d872f2087c98
* Fix small incompatibility issues with Visual Studio 2010.jeanluc@chromium.org2011-02-141-2/+1
| | | | | | | | | BUG=25628 TEST=Compile all.sln cleanly Review URL: http://codereview.chromium.org/6512012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74778 0039d316-1c4b-4281-b951-d872f2087c98
* Share PPAPI out-of-process plugins between renderer processes.brettw@chromium.org2011-02-1312-20/+29
| | | | | | | | | | | | | This provides the hook-up for plugin sharing but not shutdown or cleanup from errors. There is still a lot of work to do cleaning up in the plugin and the browser when a renderer dies, or cleaning up in the renderer and browser when a plugin dies. Currently, even the normal exit case crashes in the browser. But fixing it in this patch would be too complicated to write or review, so I'm going to do shutdown & error handling in a followup. Review URL: http://codereview.chromium.org/6486034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74766 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes to allow building with -pedantic.neb@chromium.org2011-02-112-2/+2
| | | | | | | | | | | NaCl builds the CommandBuffer sources with -pedantic. BUG=NaCl:1420 TEST=Compiling NaCl's SDK succeeds without removing -pedantic. Review URL: http://codereview.chromium.org/6507009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74697 0039d316-1c4b-4281-b951-d872f2087c98
* Continuing with the out-of-lining of test code.erg@google.com2011-02-111-2/+2
| | | | | | | | | BUG=none TEST=compiles Review URL: http://codereview.chromium.org/6485015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74660 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes issue that if we don't simulate a disabledgman@chromium.org2011-02-091-4/+7
| | | | | | | | | | | | | vertex attrib 0 (as in the case of running on top of OpenGL ES 2.0 or ANGLE) then we actually have to disable it. TEST=updated webgl conformance tests. BUG=71960 Review URL: http://codereview.chromium.org/6456016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74323 0039d316-1c4b-4281-b951-d872f2087c98
* Autogenerator for NaCl OpenGL ES implementation.neb@chromium.org2011-02-091-3/+59
| | | | | | | | | BUG=none TEST=run build_gles2_cmd_buffer.py --alternate-mode=nacl_ppapi Review URL: http://codereview.chromium.org/6246160 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74247 0039d316-1c4b-4281-b951-d872f2087c98
* Reapply parts of 73222.neb@chromium.org2011-02-091-2/+17
| | | | | | | | | | | Add the ability to autogenerate GLES2 implementation as part of the build. BUG=none TEST=run build_gles2_cmd_buffer --output-dir=something Review URL: http://codereview.chromium.org/6417002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74241 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 73222 - Make target running GLES2 autogen script.gavinp@chromium.org2011-02-081-17/+2
| | | | | | | | | | | | | | | | | | | | Also lays groundwork for rebuilding Pepper OpenGL ES bindings as part of the build. BUG=none TEST=run "make ppapi_gles_bindings" or "make ppapi_gles_implementation". Review URL: http://codereview.chromium.org/5212006 TBR=neb@chromium.org This change was causing just building to create merge conflicts in clean repos. Either these targets shouldn't be part of standard build targets like "chrome" or "unit_tests", or we shouldn't have build targets which generate output into the working tree... Review URL: http://codereview.chromium.org/6461001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74161 0039d316-1c4b-4281-b951-d872f2087c98
* Implemented GPU process side flow control.apatrick@chromium.org2011-02-086-8/+75
| | | | | | | | | | | | Only one frame of GL calls are allowed to be pending presentation at a time. This reduced "jitter" for both ANGLE and GL. Also tuned client side flow control for minimal "jitter". Finally, I made the GPU scheduler prioritise command buffers directed at a window (i.e. the compositor's contexts) over those directed at offscreen targets. TEST=trybots, watch fish in WebGL Aquarium and see if they jitter with and without vsync lock enabled, scientific experiments on gman BUG=none Review URL: http://codereview.chromium.org/6250166 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74071 0039d316-1c4b-4281-b951-d872f2087c98
* More out-of-lining of test code, along with a bunch of GMOCK objects.erg@google.com2011-02-085-18/+41
| | | | | | | | | | | Most notably, rename various mock_objects.h files in remoting/ because after deinlining, there were compile failures. This fixes Windows compiling because you can't have two implementation files with the same name in a project, even if they are in different directories. (The output from one compile will clobber the others!) BUG=none TEST=compiles Review URL: http://codereview.chromium.org/6250198 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@74059 0039d316-1c4b-4281-b951-d872f2087c98
* Change includes of gfx/* to ui/gfx/*sail@chromium.org2011-02-055-6/+6
| | | | | | | | | BUG=71063 TEST=compiled Review URL: http://codereview.chromium.org/6312156 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73890 0039d316-1c4b-4281-b951-d872f2087c98
* Remove support for client side arrays from client side gpugman@chromium.org2011-02-054-109/+79
| | | | | | | | | | | | | | | | | | | | | | | | | code used by Chromium and WebGL so that you can't use it by accident. It's stil enabled for Pepper, the conformance tests and the unit tests. Note that bug 71717 was a bug in WebGL. The same call to glDrawElements with the same parameters would have also crashed real OpenGL. The reason it didn't with --in-process-webgl is because some checks were used with that flag that were not without. Mo is fixing that side. Also, I made it so the the GLES2Implementation class is always the same. Otherwise code calling it needed to have the same flags. BUG=71717 TEST=none Review URL: http://codereview.chromium.org/6410092 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73878 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for OSX attrib 0 issue.gman@chromium.org2011-02-042-15/+24
| | | | | | | | | TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/6246093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73834 0039d316-1c4b-4281-b951-d872f2087c98
* Move src/gfx/ to src/ui/gfxsail@chromium.org2011-02-021-1/+1
| | | | | | | | | | | To reduce the size of this change I've left stub header files in src/gfx/. Once all includes have been updated I'll delete the stub files. BUG=71063 TEST=Still doing test builds. Review URL: http://codereview.chromium.org/6246027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73530 0039d316-1c4b-4281-b951-d872f2087c98
* Implement proxy for 3d-related interfacespiman@google.com2011-02-025-4/+169
| | | | | | | | | BUG=none TEST=Pepper Flash Review URL: http://codereview.chromium.org/6400007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73472 0039d316-1c4b-4281-b951-d872f2087c98
* Make target running GLES2 autogen script.neb@chromium.org2011-01-311-6/+19
| | | | | | | | | | | Also lays groundwork for rebuilding Pepper OpenGL ES bindings as part of the build. BUG=none TEST=run "make ppapi_gles_bindings" or "make ppapi_gles_implementation". Review URL: http://codereview.chromium.org/5212006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73222 0039d316-1c4b-4281-b951-d872f2087c98
* Remove obsolete files from 'sources'. This causes needless work on ↵jeanluc@chromium.org2011-01-311-1/+1
| | | | | | | | | | | incremental builds in VS2010. BUG=71130 TEST=Check that Chrome builds. Review URL: http://codereview.chromium.org/6386019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73190 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 73121 - Remove obsolete files from 'sources'. This causes needless ↵nsylvain@chromium.org2011-01-311-1/+1
| | | | | | | | | | | | | | | | | | work on incremental builds in VS2010. This is breaking clobber builds with this error : e:\b\build\slave\google-chrome-rel-win\build\src\chrome_frame\iids.cc(6) : fatal error C1083: Cannot open include file: 'chrome_tab.h': No such file or directory BUG=71130 TEST=Check that Chrome builds. Review URL: http://codereview.chromium.org/6307018 TBR=jeanluc@chromium.org Review URL: http://codereview.chromium.org/6347032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73124 0039d316-1c4b-4281-b951-d872f2087c98
* Remove obsolete files from 'sources'. This causes needless work on ↵jeanluc@chromium.org2011-01-301-1/+1
| | | | | | | | | | | incremental builds in VS2010. BUG=71130 TEST=Check that Chrome builds. Review URL: http://codereview.chromium.org/6307018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73121 0039d316-1c4b-4281-b951-d872f2087c98
* Fix TexSubImage2D and CompressedTexSubImage2D to check that format and typegman@chromium.org2011-01-2910-57/+80
| | | | | | | | | | | | | | match the texture they are going to update. Also fix the info_log and source stuff so they handle NULL strings vs empty strings. TEST=unit tests and ran gles2 conformance tests BUG=71135,71073,71109 Review URL: http://codereview.chromium.org/6250036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73056 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for jankiness in some accelerated 2D canvas demos: If there is already ↵senorblanco@chromium.org2011-01-263-5/+16
| | | | | | | | | | | a pending call to CopyTextureToParentTextureCHROMIUM, the second will block until the first is consumed (same fix as was done to SwapBuffers for WebGL). [Patch by gman; I just typed. :)] BUG=68735 TEST=see bug Review URL: http://codereview.chromium.org/6373013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72713 0039d316-1c4b-4281-b951-d872f2087c98
* Exposed GL_NV_fence bindings to GPU process.apatrick@chromium.org2011-01-261-0/+14
| | | | | | | | | TEST=try, call GL_NV_fence functions BUG=none Review URL: http://codereview.chromium.org/6313013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72667 0039d316-1c4b-4281-b951-d872f2087c98
* Fix compile warnings that break NaCl build.neb@chromium.org2011-01-263-4/+4
| | | | | | | | | BUG=none TEST=compiles Review URL: http://codereview.chromium.org/6393006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72614 0039d316-1c4b-4281-b951-d872f2087c98
* Fix GL_CHROMIUM_framebuffer_multisample to accept the correct enums.kbr@chromium.org2011-01-264-2/+31
| | | | | | | | | | | | | | Add support for GL_OES_rgb8_rgba8. Update feature_info unit tests. Tested with the accelerated 2D canvas in WebKit with multisampling turned on. BUG=none TEST=gpu_unittests Review URL: http://codereview.chromium.org/6268016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72595 0039d316-1c4b-4281-b951-d872f2087c98
* Get correct backbuffer format when context is on screen.gman@chromium.org2011-01-212-2/+12
| | | | | | | | | TEST=none BUG=67873 Review URL: http://codereview.chromium.org/6359009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72233 0039d316-1c4b-4281-b951-d872f2087c98
* Refactor and improve gpu_info_collector: collect information on linux;zmo@google.com2011-01-211-2/+17
| | | | | | | | | | | | | collect extra information (driver_vendor, gl_renderer, etc.) on Mac/linux. Note that this CL takes some code from rlp's long outstandingCL (with her permission). BUG=49579 TEST=unittest Review URL: http://codereview.chromium.org/6346007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72055 0039d316-1c4b-4281-b951-d872f2087c98
* Fix for gl programs. An unsuccessful link should reportgman@chromium.org2011-01-203-8/+19
| | | | | | | | | | | the link is unsuccessful but not replace the old program. TEST=webgl conformance tests pass BUG=none Review URL: http://codereview.chromium.org/6242006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71882 0039d316-1c4b-4281-b951-d872f2087c98
* Fix to allow the gles2 conformance tests to rungman@chromium.org2011-01-192-4/+25
| | | | | | | | | TEST=ran the conformance tests BUG=none Review URL: http://codereview.chromium.org/6282008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71849 0039d316-1c4b-4281-b951-d872f2087c98
* Make CommandBuffer::Flush asynchronous, and add CommandBuffer::FlushSync ↵piman@google.com2011-01-149-23/+59
| | | | | | | | | | | | | with former semantics. Also force a flush when the buffer is getting full. BUG=none TEST=gpu_unittests, some webgl content, some 3d css content, pepper flash Review URL: http://codereview.chromium.org/6316002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71514 0039d316-1c4b-4281-b951-d872f2087c98
* Make glVertexAttribPointer return INVALID_OPERATION for offsetsgman@chromium.org2011-01-072-6/+147
| | | | | | | | | | | and strides that do not match type. TEST=unit tests BUG=none Review URL: http://codereview.chromium.org/5991012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70800 0039d316-1c4b-4281-b951-d872f2087c98
* Fix Clang bot due to use of EXPECT_EQ(false ...)enne@chromium.org2011-01-051-16/+16
| | | | | | | | | BUG=none TEST=gpu_unittests Review URL: http://codereview.chromium.org/6008011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70541 0039d316-1c4b-4281-b951-d872f2087c98
* Fix glIsFoo() functions for non-bound objects in command buffer.enne@chromium.org2011-01-059-36/+218
| | | | | | | | | BUG=62617 TEST=LayoutTests/fast/canvas/webgl/is-object.html Review URL: http://codereview.chromium.org/4723003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70517 0039d316-1c4b-4281-b951-d872f2087c98
* Move lots of GMock stuff out of line.erg@google.com2011-01-055-24/+67
| | | | | | | | | | | | | | Nico did some treemapping of our build time on Mac, and (surprise!) gmock unittests dominated. Gmock works with several large, heavy templates, and previous patches that out of line the ctors/dtors have significantly sped up compilation (e.g.GLMock) and have reduced thrashing. Nico says I should plug this again: http://www.chromium.org/developers/coding-style/cpp-dos-and-donts BUG=none TEST=none Review URL: http://codereview.chromium.org/6056008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70516 0039d316-1c4b-4281-b951-d872f2087c98
* Make Graphics3D::SwapBuffers take a completion callbackpiman@google.com2011-01-051-10/+20
| | | | | | | | | BUG=none TEST=with demo_simple_vertex_shader, rate control works Review URL: http://codereview.chromium.org/5944001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70474 0039d316-1c4b-4281-b951-d872f2087c98
* Move base/thread.h to base/threading, fix up callers to use the new location.brettw@chromium.org2011-01-011-1/+1
| | | | | | | | TEST=it compiles BUG=none Review URL: http://codereview.chromium.org/6028009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70345 0039d316-1c4b-4281-b951-d872f2087c98
* Added ppapi::Surface3D. This CL completes the new Pepper3D interface. The ↵alokp@chromium.org2010-12-281-4/+10
| | | | | | | | implementation is still incomplete but all gpu demos still work! Review URL: http://codereview.chromium.org/6047008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70229 0039d316-1c4b-4281-b951-d872f2087c98
* Added ppapi::Context3D interface. The API has already been reviewed. I am ↵alokp@chromium.org2010-12-232-20/+24
| | | | | | | | adding the new API incrementally so as not to break the demos. Review URL: http://codereview.chromium.org/6062003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70037 0039d316-1c4b-4281-b951-d872f2087c98
* Make CopyTexImage2D and CopyTexSubImage2D fail ifgman@chromium.org2010-12-2316-172/+611
| | | | | | | | | | | formats are incompatible. TEST=unit tests, more WebGL conformance tests pass. BUG=none Review URL: http://codereview.chromium.org/6028005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70021 0039d316-1c4b-4281-b951-d872f2087c98
* Mac: Don't hang gpu process if a tab that shares its renderer process with ↵thakis@chromium.org2010-12-222-0/+14
| | | | | | | | | | | | | | | | | | | | | | other tabs and that has accelerated content and outstanding paints. The problem was that the renderer process busy-waits on the GPU process to flush all gpu commands on close, and the GPU process waits with processing commands from the renderer until a paint ack arrives from the browser. But since the window is already closed, no paint acks are sent any more. The fix is to let the browser tell the GPU process when a window is closed, and then let the GPU process not wait for paint acks if the corresponding window has already been closed. Closed windows are identified by (renderer process id, render view routing id). Identifying closed windows by either surface id or gpu channel stub routing id does not work, because they are both created on the GPU side and sent to the browser asynchronously, so it's possible that a browser tab is closed before the ID arrives from the GPU process – in that case, it can't send the "window closed" message even though the GPU process is already in a state where it needs this event. BUG=67170 TEST= 1.) Go to http://www.chromeexperiments.com/detail/body-browser/?f=webgl , click "Launch Experiment", wait until everything is loaded, close popup. %cpu of gpu process and renderer process should go to 0 2.) Go to http://www.chromeexperiments.com/detail/body-browser/?f=webgl , click "Launch Experiment", wait until the bar on the left is loaded but the body isn't yet, close popup. %cpu of gpu process and renderer process should go to 0, but it might take a few seconds until the %cpu in the renderer go down (the site decides to parse the XHR data that gets flushed on widget close) 3.) Go to http://www.chromeexperiments.com/detail/nine-point-five/?f=webgl , click "Launch Experiment", wait until everything is loaded, close popup. %cpu of gpu process and renderer process should go to 0 4.) Go to http://www.chromeexperiments.com/detail/nine-point-five/?f=webgl , click "Launch Experiment", close popup immediately after the background color changed to light grey. %cpu of gpu process and renderer process should go to 0 5.) Go to http://www.chromeexperiments.com/detail/nine-point-five/?f=webgl , click "Launch Experiment", close popup immediately. %cpu of gpu process and renderer process should go to 0 Review URL: http://codereview.chromium.org/6076005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70000 0039d316-1c4b-4281-b951-d872f2087c98