isl: update max buffer size for SKL+

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Cc: mesa-stable
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22066>
This commit is contained in:
Lionel Landwerlin 2023-03-22 12:11:22 +02:00 committed by Marge Bot
parent 00fc927e52
commit b7e5b3e318
2 changed files with 25 additions and 11 deletions

View file

@ -313,16 +313,26 @@ isl_device_init(struct isl_device *dev,
dev->ds.hiz_offset = 0;
}
if (ISL_GFX_VER(dev) >= 7) {
/* From the IVB PRM, SURFACE_STATE::Height,
*
* For typed buffer and structured buffer surfaces, the number
* of entries in the buffer ranges from 1 to 2^27. For raw buffer
* surfaces, the number of entries in the buffer is the number of bytes
* which can range from 1 to 2^30.
*
* This limit is only concerned with raw buffers.
*/
/* From the IVB PRM, SURFACE_STATE::Height,
*
* For typed buffer and structured buffer surfaces, the number
* of entries in the buffer ranges from 1 to 2^27. For raw buffer
* surfaces, the number of entries in the buffer is the number of bytes
* which can range from 1 to 2^30.
*
* From the SKL PRM, SURFACE_STATE::Width/Height/Depth for RAW buffers,
*
* Width : bits [6:0]
* Height : bits [20:7]
* Depth : bits [31:21]
*
* So we can address 4Gb
*
* This limit is only concerned with raw buffers.
*/
if (ISL_GFX_VER(dev) >= 9) {
dev->max_buffer_size = 1ull << 32;
} else if (ISL_GFX_VER(dev) >= 7) {
dev->max_buffer_size = 1ull << 30;
} else {
dev->max_buffer_size = 1ull << 27;

View file

@ -927,7 +927,11 @@ isl_genX(buffer_fill_state_s)(const struct isl_device *dev, void *state,
#endif
#endif
#if GFX_VER >= 7
#if GFX_VER >= 9
s.Height = ((num_elements - 1) >> 7) & 0x3fff;
s.Width = (num_elements - 1) & 0x7f;
s.Depth = ((num_elements - 1) >> 21) & 0x7ff;
#elif GFX_VER >= 7
s.Height = ((num_elements - 1) >> 7) & 0x3fff;
s.Width = (num_elements - 1) & 0x7f;
s.Depth = ((num_elements - 1) >> 21) & 0x3ff;