Fixes from sample count change
Re blacklist imagination msaa on Vulkan and fix i->1 bug in GL Bug: skia: Change-Id: I8045565b2064d2ee037ab43b167e6d5d3a59268e Reviewed-on: https://skia-review.googlesource.com/24780 Reviewed-by: Cary Clark <caryclark@google.com> Commit-Queue: Greg Daniel <egdaniel@google.com>
This commit is contained in:
parent
81e7bf8d6d
commit
f3316224b9
@ -2138,7 +2138,7 @@ void GrGLCaps::initConfigTable(const GrContextOptions& contextOptions,
|
||||
static const int kDefaultSamples[] = {0,1,2,4,8};
|
||||
int count = SK_ARRAY_COUNT(kDefaultSamples);
|
||||
for (; count > 0; --count) {
|
||||
if (kDefaultSamples[count-i] <= fMaxColorSampleCount) {
|
||||
if (kDefaultSamples[count-1] <= fMaxColorSampleCount) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ void GrVkCaps::init(const GrContextOptions& contextOptions, const GrVkInterface*
|
||||
|
||||
this->initGrCaps(properties, memoryProperties, featureFlags);
|
||||
this->initShaderCaps(properties, featureFlags);
|
||||
this->initConfigTable(vkInterface, physDev);
|
||||
this->initConfigTable(vkInterface, physDev, properties);
|
||||
this->initStencilFormat(vkInterface, physDev);
|
||||
|
||||
if (SkToBool(extensionFlags & kNV_glsl_shader_GrVkExtensionFlag)) {
|
||||
@ -309,12 +309,13 @@ void GrVkCaps::initStencilFormat(const GrVkInterface* interface, VkPhysicalDevic
|
||||
}
|
||||
}
|
||||
|
||||
void GrVkCaps::initConfigTable(const GrVkInterface* interface, VkPhysicalDevice physDev) {
|
||||
void GrVkCaps::initConfigTable(const GrVkInterface* interface, VkPhysicalDevice physDev,
|
||||
const VkPhysicalDeviceProperties& properties) {
|
||||
for (int i = 0; i < kGrPixelConfigCnt; ++i) {
|
||||
VkFormat format;
|
||||
if (GrPixelConfigToVkFormat(static_cast<GrPixelConfig>(i), &format)) {
|
||||
if (!GrPixelConfigIsSRGB(static_cast<GrPixelConfig>(i)) || fSRGBSupport) {
|
||||
fConfigTable[i].init(interface, physDev, format);
|
||||
fConfigTable[i].init(interface, physDev, properties, format);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -342,6 +343,7 @@ void GrVkCaps::ConfigInfo::InitConfigFlags(VkFormatFeatureFlags vkFlags, uint16_
|
||||
|
||||
void GrVkCaps::ConfigInfo::initSampleCounts(const GrVkInterface* interface,
|
||||
VkPhysicalDevice physDev,
|
||||
const VkPhysicalDeviceProperties& physProps,
|
||||
VkFormat format) {
|
||||
VkImageUsageFlags usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT |
|
||||
@ -361,6 +363,10 @@ void GrVkCaps::ConfigInfo::initSampleCounts(const GrVkInterface* interface,
|
||||
if (flags & VK_SAMPLE_COUNT_1_BIT) {
|
||||
fColorSampleCounts.push(0);
|
||||
}
|
||||
if (kImagination_VkVendor == physProps.vendorID) {
|
||||
// MSAA does not work on imagination
|
||||
return;
|
||||
}
|
||||
if (flags & VK_SAMPLE_COUNT_2_BIT) {
|
||||
fColorSampleCounts.push(2);
|
||||
}
|
||||
@ -383,6 +389,7 @@ void GrVkCaps::ConfigInfo::initSampleCounts(const GrVkInterface* interface,
|
||||
|
||||
void GrVkCaps::ConfigInfo::init(const GrVkInterface* interface,
|
||||
VkPhysicalDevice physDev,
|
||||
const VkPhysicalDeviceProperties& properties,
|
||||
VkFormat format) {
|
||||
VkFormatProperties props;
|
||||
memset(&props, 0, sizeof(VkFormatProperties));
|
||||
@ -390,7 +397,7 @@ void GrVkCaps::ConfigInfo::init(const GrVkInterface* interface,
|
||||
InitConfigFlags(props.linearTilingFeatures, &fLinearFlags);
|
||||
InitConfigFlags(props.optimalTilingFeatures, &fOptimalFlags);
|
||||
if (fOptimalFlags & kRenderable_Flag) {
|
||||
this->initSampleCounts(interface, physDev, format);
|
||||
this->initSampleCounts(interface, physDev, properties, format);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -126,15 +126,17 @@ private:
|
||||
void initSampleCount(const VkPhysicalDeviceProperties& properties);
|
||||
|
||||
|
||||
void initConfigTable(const GrVkInterface*, VkPhysicalDevice);
|
||||
void initConfigTable(const GrVkInterface*, VkPhysicalDevice, const VkPhysicalDeviceProperties&);
|
||||
void initStencilFormat(const GrVkInterface* iface, VkPhysicalDevice physDev);
|
||||
|
||||
struct ConfigInfo {
|
||||
ConfigInfo() : fOptimalFlags(0), fLinearFlags(0) {}
|
||||
|
||||
void init(const GrVkInterface*, VkPhysicalDevice, VkFormat);
|
||||
void init(const GrVkInterface*, VkPhysicalDevice, const VkPhysicalDeviceProperties&,
|
||||
VkFormat);
|
||||
static void InitConfigFlags(VkFormatFeatureFlags, uint16_t* flags);
|
||||
void initSampleCounts(const GrVkInterface*, VkPhysicalDevice, VkFormat);
|
||||
void initSampleCounts(const GrVkInterface*, VkPhysicalDevice,
|
||||
const VkPhysicalDeviceProperties&, VkFormat);
|
||||
|
||||
enum {
|
||||
kTextureable_Flag = 0x1,
|
||||
|
Loading…
Reference in New Issue
Block a user