dzn: Ensure SRV ResourceMinLODClamp is set to 0.0

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19537>
This commit is contained in:
Jesse Natalie 2022-11-04 13:01:08 -07:00 committed by Marge Bot
parent 2f8d2a91a6
commit 2a1bb4df95
2 changed files with 8 additions and 0 deletions

View file

@ -878,6 +878,7 @@ dzn_descriptor_heap_write_image_view_desc(struct dzn_descriptor_heap *heap,
D3D12_SHADER_RESOURCE_VIEW_DESC srv_desc = iview->srv_desc;
srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DARRAY;
srv_desc.Texture2DArray.PlaneSlice = 0;
srv_desc.Texture2DArray.ResourceMinLODClamp = 0.0f;
if (iview->srv_desc.ViewDimension == D3D12_SRV_DIMENSION_TEXTURECUBEARRAY) {
srv_desc.Texture2DArray.MostDetailedMip =
iview->srv_desc.TextureCubeArray.MostDetailedMip;

View file

@ -948,10 +948,12 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
iview->srv_desc.Texture1DArray.MipLevels = iview->vk.level_count;
iview->srv_desc.Texture1DArray.FirstArraySlice = iview->vk.base_array_layer;
iview->srv_desc.Texture1DArray.ArraySize = iview->vk.layer_count;
iview->srv_desc.Texture1DArray.ResourceMinLODClamp = 0.0f;
} else {
iview->srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE1D;
iview->srv_desc.Texture1D.MostDetailedMip = iview->vk.base_mip_level;
iview->srv_desc.Texture1D.MipLevels = iview->vk.level_count;
iview->srv_desc.Texture1D.ResourceMinLODClamp = 0.0f;
}
break;
@ -968,6 +970,7 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
iview->srv_desc.Texture2DArray.FirstArraySlice = iview->vk.base_array_layer;
iview->srv_desc.Texture2DArray.ArraySize = iview->vk.layer_count;
iview->srv_desc.Texture2DArray.PlaneSlice = plane_slice;
iview->srv_desc.Texture2DArray.ResourceMinLODClamp = 0.0f;
} else if (!use_array && ms) {
iview->srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE2DMS;
} else {
@ -975,6 +978,7 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
iview->srv_desc.Texture2D.MostDetailedMip = iview->vk.base_mip_level;
iview->srv_desc.Texture2D.MipLevels = iview->vk.level_count;
iview->srv_desc.Texture2D.PlaneSlice = plane_slice;
iview->srv_desc.Texture2D.ResourceMinLODClamp = 0.0f;
}
break;
@ -986,10 +990,12 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
iview->srv_desc.TextureCubeArray.MipLevels = iview->vk.level_count;
iview->srv_desc.TextureCubeArray.First2DArrayFace = iview->vk.base_array_layer;
iview->srv_desc.TextureCubeArray.NumCubes = iview->vk.layer_count / 6;
iview->srv_desc.TextureCubeArray.ResourceMinLODClamp = 0.0f;
} else {
iview->srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURECUBE;
iview->srv_desc.TextureCube.MostDetailedMip = iview->vk.base_mip_level;
iview->srv_desc.TextureCube.MipLevels = iview->vk.level_count;
iview->srv_desc.TextureCube.ResourceMinLODClamp = 0.0f;
}
break;
@ -997,6 +1003,7 @@ dzn_image_view_prepare_srv_desc(struct dzn_image_view *iview)
iview->srv_desc.ViewDimension = D3D12_SRV_DIMENSION_TEXTURE3D;
iview->srv_desc.Texture3D.MostDetailedMip = iview->vk.base_mip_level;
iview->srv_desc.Texture3D.MipLevels = iview->vk.level_count;
iview->srv_desc.Texture3D.ResourceMinLODClamp = 0.0f;
break;
default: unreachable("Invalid view type");