aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrGpu.h
Commit message (Collapse)AuthorAge
...
* Remove GrStencilSettings from GrPipelineGravatar csmartdalton2016-11-01
| | | | | | | | | | | | | | | | Updates the GrPipeline to have user stencil settings instead of actual settings. This allows us to further defer creating and attaching a stencil buffer. This change is a partial step. The ultimate goal is to attach the stencil buffer and create the stencil settings during render target flush, but for the sake of keeping this CL smaller, we create the stencil settings right before use for now. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2468653002 Review-Url: https://codereview.chromium.org/2468653002
* Move memoization of multisample specs id to GrRenderTargetGravatar csmartdalton2016-11-01
| | | | | | | | | | | GrGpu used to perform the memoization on behalf of GrRenderTarget via a public accessor. This change updates GrRenderTarget to do its own work. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2467593002 Review-Url: https://codereview.chromium.org/2467593002
* Remove SkAutoTUnref and SkAutoTDelete from public includes.Gravatar bungeman2016-10-27
| | | | | | | | | | | | | | | This also makes the required changed to src, tests, and tools. The few public APIs modified by this change appear to be unused outside of Skia. Removing these from the public API makes it easier to ensure users are no longer using them. This also updates GrGpu::wrapBackendXXX and the ::onWrapBackendXXX methods to clarify ownership. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2448593002 Review-Url: https://codereview.chromium.org/2448593002
* Add GrOpList and rename GrDrawTarget to GrRenderTargetOpListGravatar Robert Phillips2016-10-26
| | | | | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3910 Change-Id: I026aa26ecc61a0d002e98892dca728536259e8b1 Reviewed-on: https://skia-review.googlesource.com/3910 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
* Add fence support for TransferBuffersGravatar jvanverth2016-09-30
| | | | | | | BUG=skia:4604 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2384463003 Review-Url: https://codereview.chromium.org/2384463003
* Add some copy support for vulkan msaaGravatar egdaniel2016-08-31
| | | | | | | | | | | | | | This allows us to do copies from: msaa->msaa with same sample count msaa->no-msaa with a resolve Still missing support for no-msaa to msaa which will require a copyAsDraw which is currently stalled and fixing possible driver bugs. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2294533002 Review-Url: https://codereview.chromium.org/2294533002
* 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
* Convert readSurfacePixels to use a draw context instead of a textureGravatar bsalomon2016-07-19
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2165523003 Review-Url: https://codereview.chromium.org/2165523003
* Add resource provider flag to avoid client-side buffersGravatar csmartdalton2016-07-13
| | | | | | | | | | | | | | | On some platforms, a newly-created buffer was liable to be CPU backed. This would break code that expected a VBO (aka instanced rendering). This change adds an optional flag to GrResourceProvider that requires a buffer to be created in GPU memory. It also moves the CPU backing logic into Gr land in order to properly cache real VBOs on platforms that prefer client-side buffers. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2143333002 Review-Url: https://codereview.chromium.org/2143333002
* Begin instanced rendering for simple shapesGravatar csmartdalton2016-07-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a module that performs instanced rendering and starts using it for a select subset of draws on Mac GL platforms. The instance processor can currently handle rects, ovals, round rects, and double round rects. It can generalize shapes as round rects in order to improve batching. The instance processor also employs new drawing algorithms, irrespective of instanced rendering, that improve GPU-side performance (e.g. sample mask, different triangle layouts, etc.). This change only scratches the surface of instanced rendering. The majority of draws still only have one instance. Future work may include: * Passing coord transforms through the texel buffer. * Sending FP uniforms through instanced vertex attribs. * Using instanced rendering for more draws (stencil writes, drawAtlas, etc.). * Adding more shapes to the instance processor’s repertoire. * Batching draws that have mismatched scissors (analyzing draw bounds, inserting clip planes, etc.). * Bindless textures. * Uber shaders. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2066993003 Committed: https://skia.googlesource.com/skia/+/42eafa4bc00354b132ad114d22ed6b95d8849891 Review-Url: https://codereview.chromium.org/2066993003
* Fix caching of sample locationsGravatar csmartdalton2016-07-06
| | | | | | | | | | | | | | | The original caching logic for sample locations wishfully assumed that the GPU would always use the same sample pattern for render targets that had the same number of samples. It turns out we can't rely on that. This change improves the caching logic to handle mismatched simple patterns with the same count, and adds a unit test that emulates different sample patterns observed on real hardware. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111423002 Committed: https://skia.googlesource.com/skia/+/09d49a3bfe2d1e652a648ce1ea0962b38d10d166 Review-Url: https://codereview.chromium.org/2111423002
* Revert of Begin instanced rendering for simple shapes (patchset #20 ↵Gravatar ksakamoto2016-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:380001 of https://codereview.chromium.org/2066993003/ ) Reason for revert: This caused static initializer regressions in Chromium (crbug.com/625728). Relevant build logs here: Linux: https://build.chromium.org/p/chromium/builders/Linux%20x64/builds/21849 Mac: https://build.chromium.org/p/chromium/builders/Mac/builds/17350 Relevant lines from the error log: Linux: # InstanceProcessor.cpp GrUniqueKey::GenerateDomain() # InstanceProcessor.cpp gr_instanced::kShapeBufferDomain FAILED linux-release-64/sizes/nacl_helper-si/initializers: actual 8, expected 7, better lower FAILED linux-release-64/sizes/chrome-si/initializers: actual 8, expected 7, better lower Mac: FAILED mac-release/sizes/chrome-si/initializers: actual 2, expected 0, better lower Original issue's description: > Begin instanced rendering for simple shapes > > Adds a module that performs instanced rendering and starts using it > for a select subset of draws on Mac GL platforms. The instance > processor can currently handle rects, ovals, round rects, and double > round rects. It can generalize shapes as round rects in order to > improve batching. The instance processor also employs new drawing > algorithms, irrespective of instanced rendering, that improve GPU-side > performance (e.g. sample mask, different triangle layouts, etc.). > > This change only scratches the surface of instanced rendering. The > majority of draws still only have one instance. Future work may > include: > > * Passing coord transforms through the texel buffer. > * Sending FP uniforms through instanced vertex attribs. > * Using instanced rendering for more draws (stencil writes, > drawAtlas, etc.). > * Adding more shapes to the instance processor’s repertoire. > * Batching draws that have mismatched scissors (analyzing draw > bounds, inserting clip planes, etc.). > * Bindless textures. > * Uber shaders. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2066993003 > > Committed: https://skia.googlesource.com/skia/+/42eafa4bc00354b132ad114d22ed6b95d8849891 NOTREECHECKS=true TBR=bsalomon@google.com,egdaniel@google.com,robertphillips@google.com,csmartdalton@google.com # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=skia: Review-Url: https://codereview.chromium.org/2123693002
* Revert of Fix caching of sample locations (patchset #3 id:40001 of ↵Gravatar rmistry2016-07-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/2111423002/ ) Reason for revert: Seems to be causing Chromium roll failures: * https://codereview.chromium.org/2120373003 * https://codereview.chromium.org/2117193002 * https://codereview.chromium.org/2124653002 Original issue's description: > Fix caching of sample locations > > The original caching logic for sample locations wishfully assumed that > the GPU would always use the same sample pattern for render targets > that had the same number of samples. It turns out we can't rely on > that. This change improves the caching logic to handle mismatched > simple patterns with the same count, and adds a unit test that > emulates different sample patterns observed on real hardware. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111423002 > > Committed: https://skia.googlesource.com/skia/+/09d49a3bfe2d1e652a648ce1ea0962b38d10d166 TBR=bsalomon@google.com,csmartdalton@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/2120403002
* Fix caching of sample locationsGravatar csmartdalton2016-07-04
| | | | | | | | | | | | | | The original caching logic for sample locations wishfully assumed that the GPU would always use the same sample pattern for render targets that had the same number of samples. It turns out we can't rely on that. This change improves the caching logic to handle mismatched simple patterns with the same count, and adds a unit test that emulates different sample patterns observed on real hardware. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2111423002 Review-Url: https://codereview.chromium.org/2111423002
* Begin instanced rendering for simple shapesGravatar csmartdalton2016-06-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a module that performs instanced rendering and starts using it for a select subset of draws on Mac GL platforms. The instance processor can currently handle rects, ovals, round rects, and double round rects. It can generalize shapes as round rects in order to improve batching. The instance processor also employs new drawing algorithms, irrespective of instanced rendering, that improve GPU-side performance (e.g. sample mask, different triangle layouts, etc.). This change only scratches the surface of instanced rendering. The majority of draws still only have one instance. Future work may include: * Passing coord transforms through the texel buffer. * Sending FP uniforms through instanced vertex attribs. * Using instanced rendering for more draws (stencil writes, drawAtlas, etc.). * Adding more shapes to the instance processor’s repertoire. * Batching draws that have mismatched scissors (analyzing draw bounds, inserting clip planes, etc.). * Bindless textures. * Uber shaders. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2066993003 Review-Url: https://codereview.chromium.org/2066993003
* Have gpu createTestingOlyBackendTexture know if it is a render target or notGravatar egdaniel2016-06-24
| | | | | | | | | | In Vulkan we need to know at create time of a texture whether or not we will use it as a render target. BUG=skia:5458 GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2093943002 Review-Url: https://codereview.chromium.org/2093943002
* Move GrPipelineBuilder out of gms & reduce use of GrPipelineBuilder.hGravatar robertphillips2016-06-23
| | | | | | | | Just another step in reining in the GrPLB GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2086293006 Review-Url: https://codereview.chromium.org/2086293006
* Start using GrGpuCommandBuffer in GrDrawTarget.Gravatar egdaniel2016-06-23
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2052263003 Review-Url: https://codereview.chromium.org/2078483002
* Add GpuCommandBuffer support.Gravatar egdaniel2016-06-08
| | | | | | | | | | | | | | | Currently this is not actually hooked into the system. To give some context, in a follow up CL I'll add this to GrDrawTarget. For this I will move the gpu onDraw command to the GpuCommandBuffer as well. For GL this will end up just being a pass through to a non virtual draw(...) on GrGLGpu, and for vulkan it will mostly do what it currently does but adding commands to the secondary command buffer instead. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2038583002 Review-Url: https://codereview.chromium.org/2038583002
* Separate user and raw stencil settingsGravatar cdalton2016-05-11
| | | | | | | | | | | | | | | | | | | | | | | | Adds a new GrUserStencilSettings class that describes in abstract terms how a draw will use the stencil (e.g. kAlwaysIfInClip, kSetClipBit, etc.). GrPipelineBuilder now only defines the GrUserStencilSettings. When the GrPipeline is finalized, the user stencil settings are then translated into concrete GrStencilSettings. At this point, GrClipMaskManager only needs to tell the GrAppliedClip whether or not there is a stencil clip. It does not need to modify stencil settings and GrPipelineBuilder does not need AutoRestoreStencil. This is one step of the stencil overhaul. In the future it will also allow us to clean up the special case handling for nvpr and the stateful fClipMode member of GrClipMaskManager. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1962243002 Committed: https://skia.googlesource.com/skia/+/12dbb3947e1aaf205b4fcf13b40e54e50650eb37 Review-Url: https://codereview.chromium.org/1962243002
* Revert of Separate user and raw stencil settings (patchset #8 id:140001 of ↵Gravatar robertphillips2016-05-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1962243002/ ) Reason for revert: This seems to be breaking nanobench on the Windows bots with: Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION GrDrawTarget::stencilPath +c7 GrStencilAndCoverPathRenderer::onDrawPath +fd GrDrawContext::internalDrawPath +509 GrDrawContext::drawPath +223 GrBlurUtils::drawPathWithMaskFilter +250 SkGpuDevice::drawPath +2ea SkCanvas::onDrawPath +2e3 SkRecordDraw +2e6 SkBigPicture::playback +e5 SkCanvas::onDrawPicture +12c SkCanvas::drawPicture +145 SkRecordDraw +2e6 SkBigPicture::playback +e5 SkCanvas::onDrawPicture +12c SkCanvas::drawPicture +145 SkRecordDraw +261 SkBigPicture::playback +e5 SkCanvas::onDrawPicture +12c SkCanvas::drawPicture +145 SkMultiPictureDraw::draw +bf SKPBench::drawMPDPicture +1e0 SKPBench::onDraw +34 Benchmark::draw +32 time +92 setup_gpu_bench +6e nanobench_main +77b Original issue's description: > Separate user and raw stencil settings > > Adds a new GrUserStencilSettings class that describes in abstract terms > how a draw will use the stencil (e.g. kAlwaysIfInClip, kSetClipBit, > etc.). GrPipelineBuilder now only defines the GrUserStencilSettings. > When the GrPipeline is finalized, the user stencil settings are then > translated into concrete GrStencilSettings. > > At this point, GrClipMaskManager only needs to tell the GrAppliedClip > whether or not there is a stencil clip. It does not need to modify > stencil settings and GrPipelineBuilder does not need > AutoRestoreStencil. > > This is one step of the stencil overhaul. In the future it will also > allow us to clean up the special case handling for nvpr and the > stateful fClipMode member of GrClipMaskManager. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1962243002 > > Committed: https://skia.googlesource.com/skia/+/12dbb3947e1aaf205b4fcf13b40e54e50650eb37 TBR=bsalomon@google.com,cdalton@nvidia.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/1969693003
* Separate user and raw stencil settingsGravatar cdalton2016-05-10
| | | | | | | | | | | | | | | | | | | | | | Adds a new GrUserStencilSettings class that describes in abstract terms how a draw will use the stencil (e.g. kAlwaysIfInClip, kSetClipBit, etc.). GrPipelineBuilder now only defines the GrUserStencilSettings. When the GrPipeline is finalized, the user stencil settings are then translated into concrete GrStencilSettings. At this point, GrClipMaskManager only needs to tell the GrAppliedClip whether or not there is a stencil clip. It does not need to modify stencil settings and GrPipelineBuilder does not need AutoRestoreStencil. This is one step of the stencil overhaul. In the future it will also allow us to clean up the special case handling for nvpr and the stateful fClipMode member of GrClipMaskManager. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1962243002 Review-Url: https://codereview.chromium.org/1962243002
* Add mipmap loading to Vulkan.Gravatar jvanverth2016-04-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1925303002 Review-Url: https://codereview.chromium.org/1925303002
* Refactor to separate backend object lifecycle and GpuResource budget decisionGravatar kkinnunen2016-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor GrGpuResource to contain two different pieces of state: a) instance is budgeted or not budgeted b) instance references wrapped backend objects or not The "object lifecycle" was also attached to backend object handles (ids), which made the code a bit unclear. Backend objects would be associated with GrGpuResource::LifeCycle, even though GrGpuResource::LifeCycle refers to the GpuResource, and individual backend objects in one GpuResource might be governed with different "lifecycle". Mark the budgeted/not budgeted with SkBudgeted::kYes, SkBudgeted::kNo. This was previously GrGpuResource::kCached_LifeCycle, GrGpuResource::kUncached_LifeCycle. Mark the "references wrapped object" with boolean. This was previously GrGpuResource::kBorrowed_LifeCycle, GrGpuResource::kAdopted_LifeCycle for GrGpuResource. Associate the backend object ownership status with GrBackendObjectOwnership for the backend object handles. The resource type leaf constuctors, such has GrGLTexture or GrGLTextureRenderTarget take "budgeted" parameter. This parameter is passed to GrGpuResource::registerWithCache(). The resource type intermediary constructors, such as GrGLTexture constructors for class GrGLTextureRenderTarget do not take "budgeted" parameters, intermediary construtors do not call registerWithCache. Removes the need for tagging GrGpuResource -derived subclass constructors with "Derived" parameter. Makes instances that wrap backend objects be registered with a new function GrGpuResource::registerWithCacheWrapped(). Removes "budgeted" parameter from classes such as StencilAttahment, as they are always cached and never wrap any external backend objects. Removes the use of concept "external" from the member function names. The API refers to the objects as "wrapped", so make all related functions use the term consistently. No change in functionality. Resources referencing wrapped objects are always inserted to the cache with budget decision kNo. BUG=594928 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1862043002 Review URL: https://codereview.chromium.org/1862043002
* Revert of Use transfer buffer for BatchAtlas texture copies (patchset #9 ↵Gravatar jvanverth2016-04-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:160001 of https://codereview.chromium.org/1888473002/ ) Reason for revert: Lots of sync issues with paths and text. Original issue's description: > Use transfer buffer for BatchAtlas texture copies. > > Sets up use of transfer buffer (if available) to do one-copy transfers. > Get transfer buffers working properly in GL. > Implement GrVkGpu::onTransferPixels. > Check caps to ensure we can create a transfer buffer. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1888473002 > > Committed: https://skia.googlesource.com/skia/+/b0ec9836dbf7f2304a3a29289b818719ca0a39bd TBR=robertphillips@google.com,egdaniel@google.com,bsalomon@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/1904723003
* Use transfer buffer for BatchAtlas texture copies.Gravatar jvanverth2016-04-20
| | | | | | | | | | | | Sets up use of transfer buffer (if available) to do one-copy transfers. Get transfer buffers working properly in GL. Implement GrVkGpu::onTransferPixels. Check caps to ensure we can create a transfer buffer. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1888473002 Review URL: https://codereview.chromium.org/1888473002
* Add optional data parameter to createBufferGravatar cdalton2016-04-19
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1877073002 Review URL: https://codereview.chromium.org/1877073002
* Track GL buffer state based on unique resource IDGravatar cdalton2016-04-07
| | | | | | | | | | | | | | | | | | Reworks GrGLGpu to track GL buffer state based on the unique GrGpuResource ID. This eliminates the need to notify the gpu object whenever a buffer is deleted. This change also allows us to remove the type specifier from GrBuffer. At this point a buffer is just a chunk of memory, and the type given at creation time is just a suggestion to the GL backend about which target to bind to for updates. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1854283004 Committed: https://skia.googlesource.com/skia/+/deacc97bc63513b5eacaf21f858727f6e8b98ce5 Review URL: https://codereview.chromium.org/1854283004
* Revert of Track GL buffer state based on unique resource ID (patchset #6 ↵Gravatar mtklein2016-04-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | id:100001 of https://codereview.chromium.org/1854283004/ ) Reason for revert: Chrome roll's broken, seems to be missing fTarget: https://codereview.chromium.org/1861473005 Original issue's description: > Track GL buffer state based on unique resource ID > > Reworks GrGLGpu to track GL buffer state based on the unique > GrGpuResource ID. This eliminates the need to notify the gpu object > whenever a buffer is deleted. > > This change also allows us to remove the type specifier from GrBuffer. > At this point a buffer is just a chunk of memory, and the type > given at creation time is just a suggestion to the GL backend about > which target to bind to for updates. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1854283004 > > Committed: https://skia.googlesource.com/skia/+/deacc97bc63513b5eacaf21f858727f6e8b98ce5 TBR=bsalomon@google.com,jvanverth@google.com,cdalton@nvidia.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/1870553002
* Track GL buffer state based on unique resource IDGravatar cdalton2016-04-06
| | | | | | | | | | | | | | | | Reworks GrGLGpu to track GL buffer state based on the unique GrGpuResource ID. This eliminates the need to notify the gpu object whenever a buffer is deleted. This change also allows us to remove the type specifier from GrBuffer. At this point a buffer is just a chunk of memory, and the type given at creation time is just a suggestion to the GL backend about which target to bind to for updates. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1854283004 Review URL: https://codereview.chromium.org/1854283004
* Add GrContext::releaseAndAbandonContext()Gravatar bsalomon2016-04-01
| | | | | | | | | Like abandonContext() this disconnects the GrContext from the underlying 3D API. However, unlike abandonContext it first frees all allocated GPU resources. BUG=skia:5142 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1852733002 Review URL: https://codereview.chromium.org/1852733002
* Remove ownership parameter from ↵Gravatar kkinnunen2016-04-01
| | | | | | | | | | | | | | | GrResourceProvider::wrapBackendTextureAsRenderTarget Remove ownership parameter from GrResourceProvider::wrapBackendTextureAsRenderTarget. The function leaks the texture id if kAdopt_LifeCycle is passed. There is no public API to access the parameter. BUG=594928 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842313003 Review URL: https://codereview.chromium.org/1842313003
* Style bikeshed - remove extraneous whitespaceGravatar halcanary2016-03-29
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1842753002 Review URL: https://codereview.chromium.org/1842753002
* Consolidate GPU buffer implementationsGravatar cdalton2016-03-25
| | | | | | | | | | | | | | | | Consolidates all the different buffer implementations into a single GrBuffer class. This will allow us to add new buffer types, use DSA in OpenGL, track buffer bindings by unique ID, cache buffers without respect to the type of data they have been used for previously, etc. This change is strictly a refactor; it introduces no change in functionality. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1825393002 Committed: https://skia.googlesource.com/skia/+/8b1bff29675afd25843439eade634a57f68fe16f Review URL: https://codereview.chromium.org/1825393002
* Revert of Consolidate GPU buffer implementations (patchset #10 id:180001 of ↵Gravatar robertphillips2016-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://codereview.chromium.org/1825393002/ ) Reason for revert: Lots of Android redness Original issue's description: > Consolidate GPU buffer implementations > > Consolidates all the different buffer implementations into a single > GrBuffer class. This will allow us to add new buffer types, use DSA in > OpenGL, track buffer bindings by unique ID, cache buffers without > respect to the type of data they have been used for previously, etc. > This change is strictly a refactor; it introduces no change in > functionality. > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1825393002 > > Committed: https://skia.googlesource.com/skia/+/8b1bff29675afd25843439eade634a57f68fe16f TBR=bsalomon@google.com,egdaniel@google.com,jvanverth@google.com,cdalton@nvidia.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/1831133004
* Consolidate GPU buffer implementationsGravatar cdalton2016-03-25
| | | | | | | | | | | | | | Consolidates all the different buffer implementations into a single GrBuffer class. This will allow us to add new buffer types, use DSA in OpenGL, track buffer bindings by unique ID, cache buffers without respect to the type of data they have been used for previously, etc. This change is strictly a refactor; it introduces no change in functionality. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1825393002 Review URL: https://codereview.chromium.org/1825393002
* Add unit test for vertex attribute count.Gravatar bsalomon2016-03-23
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1826863002 Review URL: https://codereview.chromium.org/1826863002
* Make max number of vertex attributes be checked dynamicallyGravatar bsalomon2016-03-23
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1822343002 Review URL: https://codereview.chromium.org/1822343002
* Update how we send draws to gpu backend to reduce state setting.Gravatar egdaniel2016-03-17
| | | | | | | | | The main change here is that we pull primitive type off of the vertices, we set the gpu state on gpu once per pipeline/prim proc draw batch, and we create the ProgramDescriptor only for the Cache/ProgramBuilder. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1806983002 Review URL: https://codereview.chromium.org/1806983002
* Don't allow nullptr in texels array params (unless using a transfer buffer).Gravatar bsalomon2016-03-09
| | | | | | | | | Require all levels in writePixels to have a non-nullptr. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1765633002 Committed: https://skia.googlesource.com/skia/+/8ee78f31b2a29a5f76403755ea17bad9be74a3ec Review URL: https://codereview.chromium.org/1765633002
* Add "sample locations" feature to GrProcessorGravatar cdalton2016-03-07
| | | | | | | | | | | | Adds a "sample locations" feature to GrProcessor. When enabled, this allows a processor to know inside the shader where all the samples are located. Also adds various infastructure to query, cache, and identify multisample data. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1717393002 Review URL: https://codereview.chromium.org/1717393002
* Revert of Don't allow nullptr in texels array params (unless using a ↵Gravatar bsalomon2016-03-04
| | | | | | | | | | | | | | | | | | | | | | | transfer buffer). (patchset #3 id:60001 of https://codereview.chromium.org/1765633002/ ) Reason for revert: breaks vk build Original issue's description: > Don't allow nullptr in texels array params (unless using a transfer buffer). > > Require all levels in writePixels to have a non-nullptr. > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1765633002 > > Committed: https://skia.googlesource.com/skia/+/8ee78f31b2a29a5f76403755ea17bad9be74a3ec TBR=jvanverth@google.com,cblume@google.com,cblume@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1760343003
* Don't allow nullptr in texels array params (unless using a transfer buffer).Gravatar bsalomon2016-03-04
| | | | | | | Require all levels in writePixels to have a non-nullptr. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1765633002 Review URL: https://codereview.chromium.org/1765633002
* Creating functions for uploading a mipmapped texture.Gravatar cblume2016-02-26
| | | | | | | BUG=476416 GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1249543003 Review URL: https://codereview.chromium.org/1249543003
* Fix copy-paste typo in comment.Gravatar brianosman2016-02-25
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1734613005 Review URL: https://codereview.chromium.org/1734613005
* Move Budgeted enum out of SkSurface, use in GrTextureProviderGravatar bsalomon2016-02-25
| | | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1728093005 DOCS_PREVIEW= https://skia.org/?cl=1728093005 Committed: https://skia.googlesource.com/skia/+/57599fe6c0336feaeeeb9b1996e77b70219b483c CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac-Clang-x86_64-Release-CMake-Trybot Review URL: https://codereview.chromium.org/1728093005
* Revert of Move Budgeted enum out of SkSurface, use in GrTextureProvider ↵Gravatar bsalomon2016-02-25
| | | | | | | | | | | | | | | | | | | | | | | | | (patchset #6 id:100001 of https://codereview.chromium.org/1728093005/ ) Reason for revert: Need workaround for chrome to build Original issue's description: > Move Budgeted enum out of SkSurface, use in GrTextureProvider > > BUG=skia: > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1728093005 > DOCS_PREVIEW= https://skia.org/?cl=1728093005 > > Committed: https://skia.googlesource.com/skia/+/57599fe6c0336feaeeeb9b1996e77b70219b483c TBR=reed@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/1734043002
* Move Budgeted enum out of SkSurface, use in GrTextureProviderGravatar bsalomon2016-02-25
| | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1728093005 DOCS_PREVIEW= https://skia.org/?cl=1728093005 Review URL: https://codereview.chromium.org/1728093005
* Add wrapBackendTextureAsRenderTarget APIGravatar ericrk2016-02-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Skia's GrTextureProvider currently exposes two APIs for wrapping backend objects: * wrapBackendTexture - wraps a texture into a GrTexture. Depending on flags, this GrTexture can be converted to a GrRenderTarget. Skia manages the render target objects it may create to provide a render target for the texture. This allows Skia to create stencil buffers if needed and manager MSAA resolves. * wrapBackendRenderTarget - wraps a FBO into a GrRenderTarget. This object cannot be converted to a GrTexture. Skia does not manage the render target objects for such a GrRenderTarget, and as such cannot attach stencil buffers or perform MSAA resolves on the created GrRenderTarget. Given these two options, wrapBackendTexture provides more versatility and allows Skia more room for optimization. Chrome currently uses wrapBackendTexture for this reason. While these two functions cover most cases, they do not provide a way for Skia to wrap a texture into a render target (and gain the MSAA and stencil buffer management), without also creating a GrTexture. This is problematic in cases where a texture can be bound to a render target, but cannot be textured from, as is the case in Chrome's limited support for GL_TEXTURE_RECTANGLE. To address this, a new function is created: * wrapBackendTextureAsRenderTarget - wraps a texture into a GrRenderTarget. As with wrapBackendTexture, the created render target objects are fully managed by Skia. Unlike wrapBackendTexture no GrTexture is created, and the created object will never be textured from. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1709163003 Review URL: https://codereview.chromium.org/1709163003
* Add GrGpu support for Vulkan command buffer flushGravatar jvanverth2016-02-17
| | | | | | GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1705133002 Review URL: https://codereview.chromium.org/1705133002