P4 to Git Change 1154572 by gandryey@gera-w8 on 2015/05/26 16:21:11
ECR #304775 - Mipmaps support in OpenCL
- Enable PAD2 bit for miplevel views
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#218 edit
[ROCm/clr commit: 5c0f3858ff]
This commit is contained in:
@@ -347,6 +347,7 @@ Resource::create(MemoryType memType, CreateParams* params, bool heap)
|
|||||||
CALresourceDesc desc;
|
CALresourceDesc desc;
|
||||||
uint64 bytePitch = (uint64)-1;
|
uint64 bytePitch = (uint64)-1;
|
||||||
bool useRowPitch = false;
|
bool useRowPitch = false;
|
||||||
|
bool mipLevelPitchPad = false;
|
||||||
|
|
||||||
desc.vaBase = 0;
|
desc.vaBase = 0;
|
||||||
desc.minAlignment = 0;
|
desc.minAlignment = 0;
|
||||||
@@ -669,6 +670,11 @@ Resource::create(MemoryType memType, CreateParams* params, bool heap)
|
|||||||
if ((viewLevel != 0) || (viewOwner_->cal()->mipLevels_ > 1)) {
|
if ((viewLevel != 0) || (viewOwner_->cal()->mipLevels_ > 1)) {
|
||||||
viewFlags |= CAL_RESALLOCSLICEVIEW_LEVEL;
|
viewFlags |= CAL_RESALLOCSLICEVIEW_LEVEL;
|
||||||
}
|
}
|
||||||
|
if ((viewOwner_->viewOwner_ != NULL) &&
|
||||||
|
(viewOwner_->viewOwner_->cal()->mipLevels_ > 1)) {
|
||||||
|
mipLevelPitchPad = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (viewLayer != 0) {
|
if (viewLayer != 0) {
|
||||||
viewFlags |= CAL_RESALLOCSLICEVIEW_LEVEL_AND_LAYER;
|
viewFlags |= CAL_RESALLOCSLICEVIEW_LEVEL_AND_LAYER;
|
||||||
}
|
}
|
||||||
@@ -1014,12 +1020,17 @@ Resource::create(MemoryType memType, CreateParams* params, bool heap)
|
|||||||
hwState_[8] = GetHSAILImageFormatType(cal()->format_);
|
hwState_[8] = GetHSAILImageFormatType(cal()->format_);
|
||||||
hwState_[9] = GetHSAILImageOrderType(cal()->channelOrder_, cal()->format_);
|
hwState_[9] = GetHSAILImageOrderType(cal()->channelOrder_, cal()->format_);
|
||||||
hwState_[10] = static_cast<uint32_t>(cal()->width_);
|
hwState_[10] = static_cast<uint32_t>(cal()->width_);
|
||||||
// Workaround for depth view, change tileIndex to the parent for depth view
|
if (memoryType() == ImageView) {
|
||||||
if ((memoryType() == ImageView) &&
|
// Workaround for depth view, change tileIndex to the parent for depth view
|
||||||
(viewChannelOrder == GSL_CHANNEL_ORDER_REPLICATE_R)) {
|
if (viewChannelOrder == GSL_CHANNEL_ORDER_REPLICATE_R) {
|
||||||
if ((hwState_[3] & 0x1f00000) == 0xe00000) {
|
if ((hwState_[3] & 0x1f00000) == 0xe00000) {
|
||||||
hwState_[3] = (hwState_[3] & 0xfe0fffff) |
|
hwState_[3] = (hwState_[3] & 0xfe0fffff) |
|
||||||
(viewOwner_->hwState_[3] & 0x1f00000);
|
(viewOwner_->hwState_[3] & 0x1f00000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Update the POW2_PAD flag, otherwise HW uses a wrong pitch value
|
||||||
|
if ((viewFlags & CAL_RESALLOCSLICEVIEW_LEVEL) || mipLevelPitchPad) {
|
||||||
|
hwState_[3] |= (viewOwner_->hwState_[3] & 0x2000000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hwState_[11] = 0; // one extra reserved field in the argument
|
hwState_[11] = 0; // one extra reserved field in the argument
|
||||||
|
|||||||
Reference in New Issue
Block a user