Commit 81ab9c90 by Lee Salzman Committed by Geoff Lang

Use image upload workaround for Intel Ivy Bridge with D3D11 renderer.

Firefox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1578910 Bug: angleproject:3980 Change-Id: Ia14c5afd989365975bc57b303e59b4ef7669d522 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1845664Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 2d0e5b55
......@@ -2388,6 +2388,7 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
bool isSkylake = false;
bool isBroadwell = false;
bool isHaswell = false;
bool isIvyBridge = false;
bool isAMD = IsAMD(adapterDesc.VendorId);
bool isFeatureLevel9_3 = (deviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3);
IntelDriverVersion capsVersion = IntelDriverVersion(0);
......@@ -2398,6 +2399,7 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
isSkylake = IsSkylake(adapterDesc.DeviceId);
isBroadwell = IsBroadwell(adapterDesc.DeviceId);
isHaswell = IsHaswell(adapterDesc.DeviceId);
isIvyBridge = IsIvyBridge(adapterDesc.DeviceId);
}
if (isNvidia)
......@@ -2447,8 +2449,9 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
ANGLE_FEATURE_CONDITION(features, addDummyTextureNoRenderTarget,
isIntel && capsVersion < IntelDriverVersion(4815))
// Haswell drivers occasionally corrupt (small?) (vertex?) texture data uploads.
ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload, !(isBroadwell || isHaswell))
// Haswell/Ivybridge drivers occasionally corrupt (small?) (vertex?) texture data uploads.
ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload,
!(isIvyBridge || isBroadwell || isHaswell))
ANGLE_FEATURE_CONDITION(features, disableB5G6R5Support,
(isIntel && capsVersion < IntelDriverVersion(4539)) || isAMD)
......
......@@ -23,6 +23,8 @@ namespace rx
namespace
{
// gen7
const uint32_t IvyBridge[] = {0x0152, 0x0156, 0x015A, 0x0162, 0x0166, 0x016A};
const uint32_t Haswell[] = {
0x0402, 0x0406, 0x040A, 0x040B, 0x040E, 0x0C02, 0x0C06, 0x0C0A, 0x0C0B, 0x0C0E,
0x0A02, 0x0A06, 0x0A0A, 0x0A0B, 0x0A0E, 0x0D02, 0x0D06, 0x0D0A, 0x0D0B, 0x0D0E, // hsw_gt1
......@@ -90,6 +92,11 @@ bool IntelDriverVersion::operator>=(const IntelDriverVersion &version)
return !(*this < version);
}
bool IsIvyBridge(uint32_t DeviceId)
{
return std::find(std::begin(IvyBridge), std::end(IvyBridge), DeviceId) != std::end(IvyBridge);
}
bool IsHaswell(uint32_t DeviceId)
{
return std::find(std::begin(Haswell), std::end(Haswell), DeviceId) != std::end(Haswell);
......
......@@ -95,6 +95,7 @@ class IntelDriverVersion
uint16_t mVersionPart;
};
bool IsIvyBridge(uint32_t DeviceId);
bool IsHaswell(uint32_t DeviceId);
bool IsBroadwell(uint32_t DeviceId);
bool IsCherryView(uint32_t DeviceId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment