aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
Commit message (Collapse)AuthorAge
* Revert of Tidy up SkNx_neon. (patchset #3 id:40001 of ↵Gravatar mtklein2016-07-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2196773002/ ) Reason for revert: https://luci-milo.appspot.com/swarming/task/3055149a25621b10 Not Nexus 5 specific. Reproduces on Pixel C with --gcc -t Debug -d arm_v7_neon. Not sure about other configs yet. Original issue's description: > Tidy up SkNx_neon. > > This takes advantage of the fact that all the compilers we use that > support NEON implement it with their own vector extensions. This means > normal things like c = a + b work on the underlying vector types already. > Odd instructions like min or saturated add need to stay intrinsics. > > Also, rearrange functions to a more consistent order. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196773002 > CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot > > Committed: https://skia.googlesource.com/skia/+/6ad22315eb6eacfcd35497cd118440a619d05b18 TBR=msarett@google.com,mtklein@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=skia: Review-Url: https://codereview.chromium.org/2196953002
* Revert of Added distance vector support for CircleGeometryProcessor ↵Gravatar mtklein2016-07-30
| | | | | | | | | | | | | | | | | | | | | | | (patchset #4 id:60001 of https://codereview.chromium.org/2190023002/ ) Reason for revert: Reverting so I can revert https://codereview.chromium.org/2114993002/ Original issue's description: > Added distance vector support for CircleGeometryProcessor > > This CL's base is the CL that sets up the distance vector field req. exposure: https://codereview.chromium.org/2114993002/ > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190023002 > > Committed: https://skia.googlesource.com/skia/+/779e1924eaf7c5652dee93e0e8e975bbf5723b37 TBR=egdaniel@google.com,robertphillips@google.com,dvonbeck@google.com # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=skia: Review-Url: https://codereview.chromium.org/2196053002
* SkRasterPipeline: new APIs for fusionGravatar mtklein2016-07-29
| | | | | | | | | | | | | | | | | | | Most visibly this adds a macro SK_RASTER_STAGE that cuts down on the boilerplate of defining a raster pipeline stage function. Most interestingly, SK_RASTER_STAGE doesn't define a SkRasterPipeline::Fn, but rather a new type EasyFn. This function is always static and inlined, and the details of interacting with the SkRasterPipeline::Stage are taken care of for you: ctx is just passed as a void*, and st->next() is always called. All EasyFns have to do is take care of the meat of the work: update r,g,b, etc. and read and write from their context. The really neat new feature here is that you can either add EasyFns to a pipeline with the new append() functions, _or_ call them directly yourself. This lets you use the same set of pieces to build either a pipelined version of the function or a custom, fused version. The bench shows this off. On my desktop, the pipeline version of the bench takes about 25% more time to run than the fused one. The old approach to creating stages still works fine. I haven't updated SkXfermode.cpp or SkArithmeticMode.cpp because they seemed just as clear using Fn directly as they would have using EasyFn. If this looks okay to you I will rework the comments in SkRasterPipeline to explain SK_RASTER_STAGE and EasyFn a bit as I've done here in the CL description. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2195853002 Review-Url: https://codereview.chromium.org/2195853002
* simplify neon shiftsGravatar mtklein2016-07-29
| | | | | | | | | | | | These still generate vshr/vshl with immediates with both GCC and Clang. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194953002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Based on https://codereview.chromium.org/2196773002 Review-Url: https://codereview.chromium.org/2194953002
* If scissor would be empty in GrClipMaskManager::SetupClipping indicate draw ↵Gravatar bsalomon2016-07-29
| | | | | | | | | can be skipped. BUG=chromium:632185 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196803002 Review-Url: https://codereview.chromium.org/2196803002
* Add ES 3.0 fallback for instanced renderingGravatar csmartdalton2016-07-29
| | | | | | | | | | | | | | | Adds the ability for GLInstancedRendering to use glDrawElementsInstanced when glDrawElementsIndirect is not supported. The only remaining 3.1 dependency now is EXT_texture_buffer. Also moves the cap for glDraw*Instanced out of GrCaps and into GrGLCaps. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2193303002 Review-Url: https://codereview.chromium.org/2193303002
* Fix vulkan buildGravatar egdaniel2016-07-29
| | | | | | | | TBR=bsalomon@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2193883002 Review-Url: https://codereview.chromium.org/2193883002
* Added distance vector support for CircleGeometryProcessorGravatar dvonbeck2016-07-29
| | | | | | | | | This CL's base is the CL that sets up the distance vector field req. exposure: https://codereview.chromium.org/2114993002/ BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190023002 Review-Url: https://codereview.chromium.org/2190023002
* Tidy up SkNx_neon.Gravatar mtklein2016-07-29
| | | | | | | | | | | | | | | This takes advantage of the fact that all the compilers we use that support NEON implement it with their own vector extensions. This means normal things like c = a + b work on the underlying vector types already. Odd instructions like min or saturated add need to stay intrinsics. Also, rearrange functions to a more consistent order. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2196773002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2196773002
* Properly recycle uniform buffers in vulkanGravatar egdaniel2016-07-29
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2195713002 Review-Url: https://codereview.chromium.org/2195713002
* SkPDF: PDFStream has-a not is-a PDFDictGravatar halcanary2016-07-29
| | | | | | | | | | | | | | | Motivation: SkPDFStream and SkPDFSharedStream now work the same. Also: - move SkPDFStream into SkPDFTypes (it's a fundamental PDF type). - minor refactor of SkPDFSharedStream - SkPDFSharedStream takes unique_ptr to represent ownership BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190883003 Review-Url: https://codereview.chromium.org/2190883003
* SkNx: add Sk4uGravatar mtklein2016-07-29
| | | | | | | | | | This lets us get at logical >> in a nicely principled way. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197683002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2197683002
* GrFP can express distance vector field req., program builder declares ↵Gravatar dvonbeck2016-07-29
| | | | | | | | | | | | | | | | | | | | variable for it This update allows fragment processors to require a field of vectors to the nearest edge. This requirement propagates: - from child FPs to their parent - from parent FPs to the GrPaint - from GrPaint through the PipelineBuilder into GrPipeline - acessed from GrPipeline by GrGLSLProgramBuilder GrGLSL generates a variable for the distance vector and passes it down to the GeometryProcessor->emitCode() method. This CL's base is the CL for adding the BevelNormalSource API: https://codereview.chromium.org/2080993002 BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2114993002 Review-Url: https://codereview.chromium.org/2114993002
* Fix various SkColorSpace bugsGravatar msarett2016-07-29
| | | | | | | | | | (1) Fixes serialization/deserialization of wacky SkColorSpaces (2) Fix gamma equals checking BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194903002 Review-Url: https://codereview.chromium.org/2194903002
* Use HashSet instead of Dynamic hash for tracking vulkan resourcesGravatar egdaniel2016-07-29
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2194823003 Review-Url: https://codereview.chromium.org/2194823003
* SkPDF: flip saveLayer rightside upGravatar halcanary2016-07-29
| | | | | | | | | | Broken in https://skia.googlesource.com/skia/+/4b1e17e BUG=632574 TBR=tomhudson@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197623002 Review-Url: https://codereview.chromium.org/2197623002
* Remove GrContext::applyGammaGravatar robertphillips2016-07-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2191323002 Review-Url: https://codereview.chromium.org/2191323002
* Add test configs for instanced renderingGravatar csmartdalton2016-07-29
| | | | | | | | | | | | | | | Adds the following configs and enables them on select bots: glinst, glinst4, glinstdit4, glinst16, glinstdit16, esinst, esinst4, esinstdit4 Makes general changes to GrContextOptions, GrCaps, etc. to facilitate this. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2182783004 Review-Url: https://codereview.chromium.org/2182783004
* Merge ProgramDesc's for GL and VulkanGravatar egdaniel2016-07-29
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184413002 Review-Url: https://codereview.chromium.org/2184413002
* Add color space xform support to SkJpegCodec (includes F16!)Gravatar msarett2016-07-29
| | | | | | | | | | | | | | | | | Also changes SkColorXform to support: RGBA->RGBA RGBA->BGRA Instead of: RGBA->SkPMColor TBR=reed@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b Review-Url: https://codereview.chromium.org/2174493002
* Revert of Add color space xform support to SkJpegCodec (includes F16!) ↵Gravatar msarett2016-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (patchset #9 id:260001 of https://codereview.chromium.org/2174493002/ ) Reason for revert: Breaking MSAN Original issue's description: > Add color space xform support to SkJpegCodec (includes F16!) > > Also changes SkColorXform to support: > RGBA->RGBA > RGBA->BGRA > > Instead of: > RGBA->SkPMColor > > TBR=reed@google.com > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002 > CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot > > Committed: https://skia.googlesource.com/skia/+/73d55332e2846dd05e9efdaa2f017bcc3872884b TBR=mtklein@google.com,reed@google.com,herb@google.com,brianosman@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2195523002
* Remove use of MakeRenderTargetDirect from view systemGravatar robertphillips2016-07-28
| | | | | | | | Here is the CL that sent me down the SkGammaColorFilter path GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2178353005 Review-Url: https://codereview.chromium.org/2178353005
* Add color space xform support to SkJpegCodec (includes F16!)Gravatar msarett2016-07-28
| | | | | | | | | | | | | | | | Also changes SkColorXform to support: RGBA->RGBA RGBA->BGRA Instead of: RGBA->SkPMColor TBR=reed@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2174493002 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot Review-Url: https://codereview.chromium.org/2174493002
* Silence -Wclobbered in each file that needs it.Gravatar mtklein2016-07-28
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184823009 Committed: https://skia.googlesource.com/skia/+/03f704a343d7a82974f977eda8789a8c721c93e5 CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Win-MSVC-GCE-CPU-AVX2-x86-Release-Trybot Review-Url: https://codereview.chromium.org/2184823009
* SkPDF: drawText makes use of SkPaint.measureText() for alignment.Gravatar halcanary2016-07-28
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188303003 Review-Url: https://codereview.chromium.org/2188303003
* turn bitmaps into images during recordingGravatar reed2016-07-28
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185563003 Review-Url: https://codereview.chromium.org/2185563003
* Revert of Silence -Wclobbered in each file that needs it. (patchset #2 ↵Gravatar mtklein2016-07-28
| | | | | | | | | | | | | | | | | | | | | | | | id:20001 of https://codereview.chromium.org/2184823009/ ) Reason for revert: Jpeg strategy seems to be leading to crashes. Gonna go back to warning squelch. Original issue's description: > Silence -Wclobbered in each file that needs it. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184823009 > > Committed: https://skia.googlesource.com/skia/+/03f704a343d7a82974f977eda8789a8c721c93e5 TBR=msarett@google.com,mtklein@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review-Url: https://codereview.chromium.org/2188313003
* Serialize SkColorSpace into DeferredTextureImageGravatar bsalomon2016-07-28
| | | | | | | | This fixes a memory leak that occurs when DeferredTextureImage is deallocated without being destroyed. It is intended to be stored in discarable memory and thus this has to be safe. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184823010 Review-Url: https://codereview.chromium.org/2184823010
* Silence -Wclobbered in each file that needs it.Gravatar mtklein2016-07-28
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184823009 Review-Url: https://codereview.chromium.org/2184823009
* Add writeToMemory() API to SkColorSpaceGravatar msarett2016-07-28
| | | | | | | | | | | | | | | | | New API mirrors the form of similar APIs in SkRegion, SkMatrix, etc. This also fixes a bug: SkImageInfo appears in a object that Chrome stores in discardable memory. So when sk_sp<SkColorSpace> was added to SkImageInfo a leak was introduced. We'll use this new method and deserialize to store the SkColorSpace in the discardable object. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2192903002 Review-Url: https://codereview.chromium.org/2192903002
* SkPaint intercept API for SkTextBlob and horizontal textGravatar fmalita2016-07-28
| | | | | | | | | | | | Add getPosTextHIntercepts(), getTextBlobIntercepts(). Consolidate the implementation in GetTextIntercepts<> template. BUG=chormium:581456 R=caryclark@google.com,reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2186663004 Review-Url: https://codereview.chromium.org/2186663004
* Add SkGammaColorFilterGravatar robertphillips2016-07-28
| | | | | | | | WDYT about this as a means of replacing GrContext::applyGamma with a normal SkCanvas::drawImage? GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190573002 Review-Url: https://codereview.chromium.org/2190573002
* Added API for Bevel NormalSource.Gravatar dvonbeck2016-07-28
| | | | | | | | | | | This CL adds an API for Bevel normal source and a dummy implementation that returns a normal (0, 0, 1) every time. This CL's base is the CL for accepting nullptrs: https://codereview.chromium.org/2132113002 BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2080993002 Review-Url: https://codereview.chromium.org/2080993002
* Don't call finish on GrDrawTarget if we drew no batchesGravatar egdaniel2016-07-28
| | | | | | | | | | | This might give us some minor perf gains in vulkan since we won't be submitting command buffers that we've added to batch draws to. Running nanobench this does seem to happen pretty often. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2179903008 Review-Url: https://codereview.chromium.org/2179903008
* Revert of align cap hairline first point (patchset #2 id:20001 of ↵Gravatar tomhudson2016-07-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2189583003/ ) Reason for revert: Speculative revert in case this is blocking our roll. Original issue's description: > align cap hairline first point > > Hairlines with square caps move the endpoints out by 1/2 pixel. > The last point needs to be the first adjusted point, instead > of the point supplied to move to. > > R=fmalita@chromium.org > TBR=reed@google.com > BUG=617658 > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2189583003 > > Committed: https://skia.googlesource.com/skia/+/52f85d4d09b815fce6bfe296a1dd2cbf8d792f05 TBR=fmalita@chromium.org,reed@google.com,caryclark@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=617658 Review-Url: https://codereview.chromium.org/2188483007
* SkPdf: SkPDFFormXObject de-class-ified.Gravatar halcanary2016-07-27
| | | | | | | | | | | | | | We don't need an object, just a few standard fields on the base class; the change lets us get rid of a bunch of boilerplate code. I think this also reduces the cognitive load of the SkPDF internals. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185803003 Review-Url: https://codereview.chromium.org/2185803003
* SkPDF: refactor font subset: fewer copiesGravatar halcanary2016-07-27
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2190643002 Review-Url: https://codereview.chromium.org/2190643002
* Expose more gamma info for UMA statisticsGravatar msarett2016-07-27
| | | | | | | | TBR=reed@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188633003 Review-Url: https://codereview.chromium.org/2188633003
* Fix GrDrawContextPriv::stencilRectGravatar csmartdalton2016-07-27
| | | | | | | | | | | | | Updates stencilRect to call drawNonAAFilledRect instead of drawFilledRect. drawFilledRect can use coverage AA, which isn't appropriate for stencil draws. Also modifies drawNonAAFilledRect to take a "useHWAA" argument instead of trying to deduce whether it should be used. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2187583002 Review-Url: https://codereview.chromium.org/2187583002
* align cap hairline first pointGravatar caryclark2016-07-27
| | | | | | | | | | | | | Hairlines with square caps move the endpoints out by 1/2 pixel. The last point needs to be the first adjusted point, instead of the point supplied to move to. R=fmalita@chromium.org TBR=reed@google.com BUG=617658 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2189583003 Review-Url: https://codereview.chromium.org/2189583003
* Rename GrContext's newDrawContext & drawContext to makeDrawContextGravatar robertphillips2016-07-27
| | | | | | | | These both return sk_sp. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2186073002 Review-Url: https://codereview.chromium.org/2186073002
* require semi at the end of SkASSERT and friendsGravatar caryclark2016-07-27
| | | | | | | | R=bungeman@google.com TBR=reed@google.com GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185063002 Review-Url: https://codereview.chromium.org/2185063002
* SkPDF: SkPDFStream takes a unique_ptrGravatar halcanary2016-07-27
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188623004 Review-Url: https://codereview.chromium.org/2188623004
* Rename textual includes as *.inc.Gravatar benjaminwagner2016-07-27
| | | | | | | | | This makes it easier to distinguish source files that can stand on their own vs files meant to be #included into other source files. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184143002 Review-Url: https://codereview.chromium.org/2184143002
* Fix leak of srgb/adobesrgb colorspace objectsGravatar bsalomon2016-07-27
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185043002 Review-Url: https://codereview.chromium.org/2185043002
* fuzz wednesdayGravatar caryclark2016-07-27
| | | | | | | | | | | | | Add debug 'skip assert' access to SkCoincidentSpans. That permits suppressing asserts to make it easier to detect when this fuzz data generates unparsable data. TBR=reed@google.com BUG=631564, 631992 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2186973002 Review-Url: https://codereview.chromium.org/2186973002
* Add gyp define to enable vulkan debug layersGravatar egdaniel2016-07-27
| | | | | | | | | | | | | | | | | | On Debug vulkan bots, running with the debug layers on seems to be adding more than an hour to the total running time. Since we suppress any output on the bots anyways the debug layers are serving no purpose. Thus I am adding a gyp define to disable the layers on the bot. With this change, by default when running vulkan in Debug, the debug_layers will be enabled. The bots should disable the layers. Android framework should also have them disabled by default. TBR=djsollen@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185953003 Review-Url: https://codereview.chromium.org/2185953003
* Simplify color space xform storage and usage (float[] vs. SkMatrix44)Gravatar brianosman2016-07-27
| | | | | | | | | | Public API is really just internal. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2185533005 TBR=bsalomon@google.com Review-Url: https://codereview.chromium.org/2185533005
* Implement coverage AA for skewed rects with local coordsGravatar csmartdalton2016-07-26
| | | | | | | | | | | Adds a path fallback for rects with local coords that can't be drawn with an analytic shader. This is accomplished by modifying the view matrix and then drawing the local rect/quad. BUG=skia:5500, 7508 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2183223002 Review-Url: https://codereview.chromium.org/2183223002
* Start measuring f16 and srgb speed.Gravatar mtklein2016-07-26
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2181073003 Review-Url: https://codereview.chromium.org/2181073003