Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 81ab9c9

Browse files
lsalzmanvonture
authored andcommitted
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/+/1845664 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
1 parent 2d0e5b5 commit 81ab9c9

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

src/libANGLE/renderer/d3d/d3d11/renderer11_utils.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2388,6 +2388,7 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
23882388
bool isSkylake = false;
23892389
bool isBroadwell = false;
23902390
bool isHaswell = false;
2391+
bool isIvyBridge = false;
23912392
bool isAMD = IsAMD(adapterDesc.VendorId);
23922393
bool isFeatureLevel9_3 = (deviceCaps.featureLevel <= D3D_FEATURE_LEVEL_9_3);
23932394
IntelDriverVersion capsVersion = IntelDriverVersion(0);
@@ -2398,6 +2399,7 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
23982399
isSkylake = IsSkylake(adapterDesc.DeviceId);
23992400
isBroadwell = IsBroadwell(adapterDesc.DeviceId);
24002401
isHaswell = IsHaswell(adapterDesc.DeviceId);
2402+
isIvyBridge = IsIvyBridge(adapterDesc.DeviceId);
24012403
}
24022404

24032405
if (isNvidia)
@@ -2447,8 +2449,9 @@ void InitializeFeatures(const Renderer11DeviceCaps &deviceCaps,
24472449
ANGLE_FEATURE_CONDITION(features, addDummyTextureNoRenderTarget,
24482450
isIntel && capsVersion < IntelDriverVersion(4815))
24492451

2450-
// Haswell drivers occasionally corrupt (small?) (vertex?) texture data uploads.
2451-
ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload, !(isBroadwell || isHaswell))
2452+
// Haswell/Ivybridge drivers occasionally corrupt (small?) (vertex?) texture data uploads.
2453+
ANGLE_FEATURE_CONDITION(features, setDataFasterThanImageUpload,
2454+
!(isIvyBridge || isBroadwell || isHaswell))
24522455

24532456
ANGLE_FEATURE_CONDITION(features, disableB5G6R5Support,
24542457
(isIntel && capsVersion < IntelDriverVersion(4539)) || isAMD)

src/libANGLE/renderer/driver_utils.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ namespace rx
2323
namespace
2424
{
2525
// gen7
26+
const uint32_t IvyBridge[] = {0x0152, 0x0156, 0x015A, 0x0162, 0x0166, 0x016A};
27+
2628
const uint32_t Haswell[] = {
2729
0x0402, 0x0406, 0x040A, 0x040B, 0x040E, 0x0C02, 0x0C06, 0x0C0A, 0x0C0B, 0x0C0E,
2830
0x0A02, 0x0A06, 0x0A0A, 0x0A0B, 0x0A0E, 0x0D02, 0x0D06, 0x0D0A, 0x0D0B, 0x0D0E, // hsw_gt1
@@ -90,6 +92,11 @@ bool IntelDriverVersion::operator>=(const IntelDriverVersion &version)
9092
return !(*this < version);
9193
}
9294

95+
bool IsIvyBridge(uint32_t DeviceId)
96+
{
97+
return std::find(std::begin(IvyBridge), std::end(IvyBridge), DeviceId) != std::end(IvyBridge);
98+
}
99+
93100
bool IsHaswell(uint32_t DeviceId)
94101
{
95102
return std::find(std::begin(Haswell), std::end(Haswell), DeviceId) != std::end(Haswell);

src/libANGLE/renderer/driver_utils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ class IntelDriverVersion
9595
uint16_t mVersionPart;
9696
};
9797

98+
bool IsIvyBridge(uint32_t DeviceId);
9899
bool IsHaswell(uint32_t DeviceId);
99100
bool IsBroadwell(uint32_t DeviceId);
100101
bool IsCherryView(uint32_t DeviceId);

0 commit comments

Comments
 (0)