Allow linear swizzle mode with tiled image requests.
Mesa address lib faults if the only acceptable swizzle modes are
forbidden. The old address lib simply ignored the forbidden list
in this case. Mesa addrlib will not select linear unless there
is no other option so allowing linear mode for tiled images will
still use tiled modes when possible.
Change-Id: I1aa44d072db902c968484dbff67b482af03b45d9
[ROCm/ROCR-Runtime commit: c60364e1e0]
Dieser Commit ist enthalten in:
1 Ursprung
a3728476bf
Commit
31268c6f4d
3 Dateien geändert
+5
-16
Keine Dateien entsprechen Ihrer Suche
@@ -516,19 +516,14 @@ uint32_t ImageManagerAi::GetAddrlibSurfaceInfoAi(
|
||||
prefSettingsInput.resourceLoction = ADDR_RSRC_LOC_UNDEF;
|
||||
prefSettingsInput.resourceType = in.resourceType;
|
||||
|
||||
// Disallow all swizzles but linear.
|
||||
if (tileMode == Image::TileMode::LINEAR)
|
||||
{
|
||||
// this should force linear.
|
||||
prefSettingsInput.forbiddenBlock.macroThin4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThin64KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick64KB = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// this should not allow linear.
|
||||
prefSettingsInput.forbiddenBlock.linear = 1;
|
||||
}
|
||||
|
||||
prefSettingsInput.forbiddenBlock.micro = 1; // but don't ever allow the 256b swizzle modes
|
||||
prefSettingsInput.forbiddenBlock.var = 1; // and don't allow variable-size block modes
|
||||
|
||||
@@ -837,19 +837,14 @@ bool ImageManagerKv::GetAddrlibSurfaceInfo(
|
||||
prefSettingsInput.resourceLoction = ADDR_RSRC_LOC_UNDEF;
|
||||
prefSettingsInput.resourceType = in.resourceType;
|
||||
|
||||
// Disallow all swizzles but linear.
|
||||
if (tileMode == Image::TileMode::LINEAR)
|
||||
{
|
||||
// this should force linear.
|
||||
prefSettingsInput.forbiddenBlock.macroThin4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThin64KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick64KB = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
// this should not allow linear.
|
||||
prefSettingsInput.forbiddenBlock.linear = 1;
|
||||
}
|
||||
|
||||
prefSettingsInput.forbiddenBlock.micro = 1; // but don't ever allow the 256b swizzle modes
|
||||
prefSettingsInput.forbiddenBlock.var = 1; // and don't allow variable-size block modes
|
||||
|
||||
@@ -629,8 +629,8 @@ uint32_t ImageManagerNv::GetAddrlibSurfaceInfoNv(
|
||||
prefSettingsInput.resourceLoction = ADDR_RSRC_LOC_UNDEF;
|
||||
prefSettingsInput.resourceType = in.resourceType;
|
||||
|
||||
// Disallow all swizzles but linear.
|
||||
if (tileMode == Image::TileMode::LINEAR) {
|
||||
// this should force linear.
|
||||
prefSettingsInput.forbiddenBlock.macroThin4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick4KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThin64KB = 1;
|
||||
@@ -638,9 +638,8 @@ uint32_t ImageManagerNv::GetAddrlibSurfaceInfoNv(
|
||||
prefSettingsInput.forbiddenBlock.micro = 1;
|
||||
prefSettingsInput.forbiddenBlock.var = 1;
|
||||
} else {
|
||||
// this should not allow linear.
|
||||
prefSettingsInput.forbiddenBlock.linear = 1;
|
||||
// Debug setting, simplifies buffer alignment.
|
||||
// Debug setting, simplifies buffer alignment until language runtimes have official gfx10
|
||||
// support.
|
||||
prefSettingsInput.forbiddenBlock.macroThin64KB = 1;
|
||||
prefSettingsInput.forbiddenBlock.macroThick64KB = 1;
|
||||
}
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren