aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2018-02-26 13:30:47 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-26 20:42:18 +0000
commit5ba448c21aa002055aa68942f1f50fd4cdfd8033 (patch)
tree73fcb325c354423da290679b23b0821a5522b85f /src
parent9d57afd93e70d3bd40ed470b1de28ccc03b98208 (diff)
Add cap workarounds for possible arm bugs
This disables doing copies as draws and disables instance attrib support. Bug: skia: Change-Id: I52c03d773974a697901ba1fc9dfa824262285568 Reviewed-on: https://skia-review.googlesource.com/110320 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/gpu/vk/GrVkCaps.cpp7
-rw-r--r--src/gpu/vk/GrVkCopyPipeline.cpp1
-rw-r--r--src/gpu/vk/GrVkPipeline.cpp1
3 files changed, 8 insertions, 1 deletions
diff --git a/src/gpu/vk/GrVkCaps.cpp b/src/gpu/vk/GrVkCaps.cpp
index 457b0c128b..602d07b27d 100644
--- a/src/gpu/vk/GrVkCaps.cpp
+++ b/src/gpu/vk/GrVkCaps.cpp
@@ -102,7 +102,8 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface*
fMustSubmitCommandsBeforeCopyOp = true;
}
- if (kQualcomm_VkVendor != properties.vendorID) {
+ if (kQualcomm_VkVendor != properties.vendorID &&
+ kARM_VkVendor != properties.vendorID) {
fSupportsCopiesAsDraws = true;
}
@@ -110,6 +111,10 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface*
fCrossContextTextureSupport = true;
}
+ if (kARM_VkVendor == properties.vendorID) {
+ fInstanceAttribSupport = false;
+ }
+
#if defined(SK_BUILD_FOR_WIN)
if (kNvidia_VkVendor == properties.vendorID) {
fMustSleepOnTearDown = true;
diff --git a/src/gpu/vk/GrVkCopyPipeline.cpp b/src/gpu/vk/GrVkCopyPipeline.cpp
index 8986029c7d..1058497cc2 100644
--- a/src/gpu/vk/GrVkCopyPipeline.cpp
+++ b/src/gpu/vk/GrVkCopyPipeline.cpp
@@ -179,6 +179,7 @@ GrVkCopyPipeline* GrVkCopyPipeline::Create(GrVkGpu* gpu,
&pipelineCreateInfo,
nullptr, &vkPipeline));
if (err) {
+ SkDebugf("Failed to create copy pipeline. Error: %d\n", err);
return nullptr;
}
diff --git a/src/gpu/vk/GrVkPipeline.cpp b/src/gpu/vk/GrVkPipeline.cpp
index b1c8dbeeb4..4058317b5d 100644
--- a/src/gpu/vk/GrVkPipeline.cpp
+++ b/src/gpu/vk/GrVkPipeline.cpp
@@ -490,6 +490,7 @@ GrVkPipeline* GrVkPipeline::Create(GrVkGpu* gpu, const GrPipeline& pipeline,
&pipelineCreateInfo,
nullptr, &vkPipeline));
if (err) {
+ SkDebugf("Failed to create pipeline. Error: %d\n", err);
return nullptr;
}