implemented onWritePixels and related tests for metal gpu backend

Bug: skia:
Change-Id: Iab8bc8611a9de8afcf0eaeb58a8ef46fdc38d4f1
Reviewed-on: https://skia-review.googlesource.com/140571
Commit-Queue: Timothy Liang <timliang@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
This commit is contained in:
Timothy Liang 2018-07-19 09:58:00 -04:00 committed by Skia Commit-Bot
parent 97ae0c8902
commit a8046af0b0
4 changed files with 22 additions and 10 deletions

View File

@ -105,6 +105,7 @@ tests_sources = [
"$_tests/GrTestingBackendTextureUploadTest.cpp",
"$_tests/GrTextureMipMapInvalidationTest.cpp",
"$_tests/GrTRecorderTest.cpp",
"$_tests/GrUploadPixelsTests.cpp",
"$_tests/HashTest.cpp",
"$_tests/HighContrastFilterTest.cpp",
"$_tests/HSVRoundTripTest.cpp",
@ -277,7 +278,6 @@ tests_sources = [
"$_tests/VerticesTest.cpp",
"$_tests/VkBackendSurfaceTest.cpp",
"$_tests/VkMakeCopyPipelineTest.cpp",
"$_tests/VkUploadPixelsTests.cpp",
"$_tests/VkWrapTests.cpp",
"$_tests/VptrTest.cpp",
"$_tests/WindowRectanglesTest.cpp",

View File

@ -113,9 +113,7 @@ private:
void* buffer, size_t rowBytes) override;
bool onWritePixels(GrSurface*, int left, int top, int width, int height, GrColorType,
const GrMipLevel[], int) override {
return false;
}
const GrMipLevel[], int mipLevelCount) override;
bool onTransferPixels(GrTexture*,
int left, int top, int width, int height,

View File

@ -527,6 +527,25 @@ void GrMtlGpu::testingOnly_flushGpuAndSync() {
}
#endif // GR_TEST_UTILS
bool GrMtlGpu::onWritePixels(GrSurface* surface, int left, int top, int width, int height,
GrColorType srcColorType, const GrMipLevel texels[],
int mipLevelCount) {
GrMtlTexture* mtlTexture = static_cast<GrMtlTexture*>(surface->asTexture());
if (!mtlTexture) {
return false;
}
if (!mipLevelCount) {
return false;
}
#ifdef SK_DEBUG
for (int i = 0; i < mipLevelCount; i++) {
SkASSERT(texels[i].fPixels);
}
#endif
return this->uploadToTexture(mtlTexture, left, top, width, height, srcColorType, texels,
mipLevelCount);
}
bool GrMtlGpu::onReadPixels(GrSurface* surface, int left, int top, int width, int height,
GrColorType dstColorType, void* buffer, size_t rowBytes) {
SkASSERT(surface);

View File

@ -9,8 +9,6 @@
#include "SkTypes.h"
#if defined(SK_VULKAN)
#include "GrContextFactory.h"
#include "GrContextPriv.h"
#include "GrSurfaceProxy.h"
@ -19,7 +17,6 @@
#include "SkGr.h"
#include "Test.h"
#include "TestUtils.h"
#include "vk/GrVkGpu.h"
using sk_gpu_test::GrContextFactory;
@ -94,7 +91,7 @@ void basic_texture_test(skiatest::Reporter* reporter, GrContext* context, SkColo
}
}
DEF_GPUTEST_FOR_VULKAN_CONTEXT(VkUploadPixelsTests, reporter, ctxInfo) {
DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GrUploadPixelsTests, reporter, ctxInfo) {
// RGBA
basic_texture_test(reporter, ctxInfo.grContext(), kRGBA_8888_SkColorType, false);
basic_texture_test(reporter, ctxInfo.grContext(), kRGBA_8888_SkColorType, true);
@ -103,5 +100,3 @@ DEF_GPUTEST_FOR_VULKAN_CONTEXT(VkUploadPixelsTests, reporter, ctxInfo) {
basic_texture_test(reporter, ctxInfo.grContext(), kBGRA_8888_SkColorType, false);
basic_texture_test(reporter, ctxInfo.grContext(), kBGRA_8888_SkColorType, true);
}
#endif