44 auto dContext = ctxInfo.directContext();
46 static const int kW = 10;
47 static const int kH = 10;
48 static const size_t kRowBytes =
sizeof(uint32_t) *
kW;
51 for (
int i = 0; i <
kW *
kH; ++i) {
52 srcPixels.
get()[i] = i;
56 for (
int i = 0; i <
kW *
kH; ++i) {
57 dstPixels.
get()[i] = ~i;
60 static const SkIRect kSrcRects[] {
86 for (
auto sRenderable : {GrRenderable::kYes, GrRenderable::kNo}) {
87 for (
auto dRenderable : {GrRenderable::kYes, GrRenderable::kNo}) {
88 for (
const SkIRect& srcRect : kSrcRects) {
89 for (
const SkIPoint& dstPoint : kDstPoints) {
94 dContext, sRenderable, sOrigin, srcPM);
96 dContext, dRenderable, dOrigin, dstPM);
101 if (!srcView || !dstView) {
103 "Could not create surfaces for copy surface test.");
107 if (!dContext->defaultBackendFormat(
111 if (!srcView || !dstView) {
113 "Could not create surfaces for copy surface test.");
118 auto dstContext = dContext->priv().makeSC(std::move(dstView),
122 if (sOrigin == dOrigin) {
123 result = dstContext->testCopy(srcView.refProxy(),
126 }
else if (dRenderable == GrRenderable::kYes) {
127 SkASSERT(dstContext->asFillContext());
128 result = dstContext->asFillContext()->blitTexture(
129 std::move(srcView), srcRect, dstPoint);
132 bool expectedResult =
true;
133 SkIPoint dstOffset = { dstPoint.
fX - srcRect.fLeft,
134 dstPoint.fY - srcRect.fTop };
142 expectedResult =
false;
146 copiedDstRect.
fLeft += copiedSrcRect.
fLeft - srcRect.fLeft;
147 copiedDstRect.
fTop += copiedSrcRect.
fTop - srcRect.fTop;
148 copiedDstRect.
fRight -= copiedSrcRect.
fRight - srcRect.fRight;
154 expectedResult =
false;
156 if (sOrigin != dOrigin && dRenderable == GrRenderable::kNo) {
157 expectedResult =
false;
163 if (expectedResult !=
result) {
165 "got %d.", expectedResult,
result);
169 if (!expectedResult || !
result) {
175 if (!dstContext->readPixels(dContext, readPM, {0, 0})) {
183 for (
int y = 0;
y <
kH && !abort; ++
y) {
184 for (
int x = 0;
x <
kW; ++
x) {
185 uint32_t r =
read.get()[
y *
kW +
x];
187 int sx =
x - dstOffset.
fX;
188 int sy =
y - dstOffset.
fY;
189 uint32_t
s = srcPixels.
get()[sy *
kW + sx];
192 "0x%08x copied from src location %d,%d. Got "
193 "0x%08x",
x,
y,
s, sx, sy, r);
198 uint32_t
d = dstPixels.
get()[
y *
kW +
x];
201 "unmodified (0x%08x). Got 0x%08x",
VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE auto & d