Change-Id: I581f78b829a810d93a065cbbda9a1f87c41f5c45
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475541
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
This is a reland of 9372ef0228
Original change's description:
> Restrict where 'binding' and 'set' can appear
>
> In SPIRV, these are an error when applied to struct members. Some of our
> tests were triggering that because we had free-floating uniforms
> decorated this way (and we coalesce those into members of an interface
> block).
>
> Now, we only allow those layout qualifiers on variable types that will
> remain top-level constructs in the back-end.
>
> Bug: skia:12670
> Change-Id: I73e69cecf6237a1c1180ad38d9b5d52ea80316fb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474218
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Bug: skia:12670
Change-Id: I01c0323bba7ce0bddea5f9fb907e2b60e6b812d2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475156
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Things have evolved since these were last updated. In particular, we no
longer emit binding and set decorations for each individual uniform.
Backends that rely on that (SPIRV, Metal), generate SkSL that has all
the uniforms grouped in a buffer. GLSL emits the uniforms with no layout
qualifiers. SPIRV supported this already (and automatically applied the
default binding/set to the implicitly created uniform buffer). Metal
*almost* supported this - it handled the uniform buffer correctly, but
didn't apply the default binding to any un-decorated samplers.
Bug: skia:12670
Change-Id: I7b193b89f86441344cf7ad5b7ed5e07451a1cc6d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475157
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This new image filter constructor enables SkRuntimeEffects to be
used as shaders within the ImageFilter DAG. The shader is created
lazily using the SkRuntimeShaderBuilder enabling the resulting
shader to consume the previous stage of the ImageFilter graph.
Change-Id: I5d6917e34a8e5fdd053399f15a1e2cc7409e686f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470459
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
Follow the ordinary pattern on SkCanvas for handling GrSlugs. This
should allow more flexibility in the future.
Change-Id: Ic498b5d081a1c7e44c2864439423910c452408b7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474899
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Each includes the other, but the former doesn't appear to need
the latter.
Change-Id: Ie2447717edf6188825418ef129dc28a28508fb43
Bug: skia:12584
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475097
Reviewed-by: Ben Wagner <bungeman@google.com>
Bug: skia:12466
Change-Id: Ie7414d7417e88249dd9f6421f8069be898adaece
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474217
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Moves Attribute into its own header. I did not move AttributeSet/Iter
out of GraphicsPipelineDesc because RenderStep should be able to just
rely on SkSpan<Attribute>. Since they are fixed definitions, there
shouldn't be a need to support skipping over uninitialized attrs. Once
GraphicsPipelineDesc just points to a RenderStep, AttributeSet/Iter can
be deleted.
Bug: skia:12466
Change-Id: I3b01b6283669fc02dc9cd0521bb236a9d0daa5eb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474136
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
There's no need for these fields to be private, and it removes the
need for friend classes -- the Caps classes can now set them directly.
Change-Id: I9b03d2ba06b792141036770f19804f100c05eeab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475258
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Change-Id: I94ded218e822fe50687e1efff7d46bcc4c1f1293
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/471780
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This reverts commit 9372ef0228.
Reason for revert: Unhappy bots
Original change's description:
> Restrict where 'binding' and 'set' can appear
>
> In SPIRV, these are an error when applied to struct members. Some of our
> tests were triggering that because we had free-floating uniforms
> decorated this way (and we coalesce those into members of an interface
> block).
>
> Now, we only allow those layout qualifiers on variable types that will
> remain top-level constructs in the back-end.
>
> Bug: skia:12670
> Change-Id: I73e69cecf6237a1c1180ad38d9b5d52ea80316fb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474218
> Commit-Queue: Brian Osman <brianosman@google.com>
> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Bug: skia:12670
Change-Id: Ie518192d9a52fc896e615ec08ce0674ad683ec61
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/475099
Auto-Submit: Brian Osman <brianosman@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bug: skia:12662
Change-Id: Ic2924257fce3ea9a2df5e49d0ab26ad085693d30
Cq-Include-Trybots: luci.skia.skia.primary:Canary-Flutter
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473676
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Introduce the GrSlug that encapsulates an SkTextBlob along with
the origin, and paint to create a GrSlug. You can draw the slug
using the canvas, and it will obey the canvas's clip and mapping.
See the full working prototype at:
https://skia-review.googlesource.com/c/skia/+/471157/17
Change-Id: I5731dce3dea316ad144baead154a68c8e4c5db9a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474040
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
In SPIRV, these are an error when applied to struct members. Some of our
tests were triggering that because we had free-floating uniforms
decorated this way (and we coalesce those into members of an interface
block).
Now, we only allow those layout qualifiers on variable types that will
remain top-level constructs in the back-end.
Bug: skia:12670
Change-Id: I73e69cecf6237a1c1180ad38d9b5d52ea80316fb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474218
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Having all includes to skia source will make generating
BAZEL rules easier.
Change-Id: I318dfc88e736a62da151098bebbee8d7b357d963
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474736
Reviewed-by: Ben Wagner <bungeman@google.com>
Not only is this a best practice, it will make generating
BAZEL.build files easier.
Change-Id: Ib77c7dac6167235ec1b73a93bfd3a9c44b42ca83
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474756
Reviewed-by: Ben Wagner <bungeman@google.com>
All of the draw variants except drawIndexed support all base arguments
as part of the draw call that is recorded. Updated drawIndexed to use
the "instance" version and draw 1 instance if the baseVertex is not 0.
Previously, if we bound the buffer at a non-zero offset, but then
passed in 0 for the base vertex/instance relative to that, it would
reset the vertex offset to 0. This also cuts down on the number of
commands recorded since draws will only correspond to one command.
Bug: skia:12466
Change-Id: I3eb95b02d33f2d1e9b36991a8b824012383bc192
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474058
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Bug: skia:b/197500792
Change-Id: I0005469352cd44cf4c66aea11de98a0247afd747
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474397
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
This change will make unifying code easier in future CLs.
Change-Id: I981b99ba4da6762702adfcb26165c1d3065339f7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474896
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Change-Id: I750bf3103504e3ed12c93e3071950785128f7db5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474838
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Bug: skia:12524
Change-Id: I2fb523495cfa72591a14b4ef03d32e3aad06fcf2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474396
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Bug: skia:12524
Change-Id: Iac60a99331fefe9e997b61c4b2b329e39b95ae6e
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/470197
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Bug: skia:12524
Change-Id: I2664c8ea707a40724bcf916e907fe28d1fa276d6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474357
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Bug: skia:12524
Change-Id: I31ddee40fed6e57caafe7a51fdd90459bd29cd6a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474356
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Bug: skia:12524
Change-Id: I99ade4b9f4fd442d9ddaa51651faf47321c06a5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474296
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
This is redundant information now that we have SkVMSlotInfo.
Change-Id: Ia05b1eaa722023e719042c83255708aa9debed61
Bug: skia:12614
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473777
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
* Remove 3 iPad Pro 9.7"s killed in the March 2020 Skolo flood.
* Add skia-iphone-8-03, which was mysteriously missing.
Change-Id: Idf3bbc553958a1327b0909183f85ab43dced3429
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474020
Reviewed-by: Leandro Lovisolo <lovisolo@google.com>
Commit-Queue: Erik Rose <erikrose@google.com>
This adds new validation rules that we were breaking.
Binding and DescriptorSet can't be applied to push constants, nor to
struct members.
Bug: skia:12670
Bug: chromium:1270328
Change-Id: I332f77717b08d9945c8e5b79c5bf649a8f5f2043
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474056
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
If a FreeType font has glyphs which may need the current color this is
non-changing information, so calculate it once at and cache it. This
information is needed on evert time a scaler context rec is created and
adding the overhead of looking through the font data (especially the
extra indirections from a ttc) can take a bit of time.
Bug: b/206120675
Change-Id: I92f2083a6bbd673fc148347c4e04ed81a441c3ba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474059
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Previously, while BindBufferInfo had the right offset for binding the
buffers, the writer would always overwrite the contents at the
beginning. Never encountered it because the CommandBufferTest made its
VertexWriters directly, and DrawPass isn't end-to-end yet.
Bug: skia:12466
Change-Id: Ib874006d80a7286fcc3710cd38b3c6141ff928ef
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474057
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Auto-Submit: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Update the check for situations using the direct glyph drawing
method. Mostly renaming.
Change-Id: I9e2ad8b669e9868b5fffd4864fb4551fec11f19c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/474038
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Bug: skia:12559
Change-Id: I76b225c9ca81264a15869324007d774d210053b5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/473416
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Bug: b/205516620
Internally, Skia does not have full GL support for protected backend
textures. But there are some clients who know that they need to create
one so that they can render a protected buffer into it. Plumb in support
for clients calling GrDirectContext::createBackendTexture.
GrGLDefines.h:
- Add macros for querying whether a context is protected
GrGLCaps:
- Check whether the GL_EXT_protected_textures extension is present and
the context supports protected.
GrGLGpu:
- Remove failure cases for GrProtected::kYes. Instead, pass the value
down to createTexture where we then set the parameter in GL.
Change-Id: I465442fc4b19ed32a65079a168124a067bcd66a6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/472802
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>