[Mesa-dev] [PATCH 2/2] i965: Set tiling on BOs imported with modifiers

Kristian Høgsberg hoegsberg at gmail.com
Mon Jan 22 18:14:49 UTC 2018


On Mon, Jan 22, 2018 at 10:03 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> On January 22, 2018 09:10:52 Kristian Høgsberg <hoegsberg at gmail.com> wrote:
>
>> On Sun, Jan 21, 2018 at 8:05 PM, Jason Ekstrand <jason at jlekstrand.net>
>> wrote:
>>>
>>> We need this to ensure that GTT maps work on buffers we get from Vulkan
>>> on the off chance that someone does a readpixels or something.  Soon, we
>>> will be removing GTT maps from i965 entirely and this can be reverted.
>>> None the less, it's needed for stable.
>>>
>>> Cc: mesa-stable at lists.freedesktop.org
>>> Cc: Kenneth Graunke <kenneth at whitecape.org>
>>> ---
>>>  src/mesa/drivers/dri/i965/intel_screen.c | 11 ++++++++++-
>>>  1 file changed, 10 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/src/mesa/drivers/dri/i965/intel_screen.c
>>> b/src/mesa/drivers/dri/i965/intel_screen.c
>>> index b563bbf..e877f93 100644
>>> --- a/src/mesa/drivers/dri/i965/intel_screen.c
>>> +++ b/src/mesa/drivers/dri/i965/intel_screen.c
>>> @@ -1043,7 +1043,16 @@ intel_create_image_from_fds_common(__DRIscreen
>>> *dri_screen,
>>>
>>>     image->planar_format = f;
>>>
>>> -   image->bo = brw_bo_gem_create_from_prime(screen->bufmgr, fds[0]);
>>> +   if (modifier != DRM_FORMAT_MOD_INVALID) {
>>> +      const struct isl_drm_modifier_info *mod_info =
>>> +         isl_drm_modifier_get_info(modifier);
>>
>>
>> You need to handle mod_info == NULL for unknown modifiers.
>
>
> The code above this checks that the modifier is supported and bails if it
> isn't.

So it does. Looking forward to our bright future without gtt maps. In
the interim, thanks for fixing this.

Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>

Kristian

>
>
>> Kristian
>>
>>> +      uint32_t tiling = isl_tiling_to_i915_tiling(mod_info->tiling);
>>> +      image->bo = brw_bo_gem_create_from_prime_tiled(screen->bufmgr,
>>> fds[0],
>>> +                                                     tiling,
>>> strides[0]);
>>> +   } else {
>>> +      image->bo = brw_bo_gem_create_from_prime(screen->bufmgr, fds[0]);
>>> +   }
>>> +
>>>     if (image->bo == NULL) {
>>>        free(image);
>>>        return NULL;
>>> --
>>> 2.5.0.400.gff86faf
>>>
>>> _______________________________________________
>>> mesa-dev mailing list
>>> mesa-dev at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
>
>


More information about the mesa-dev mailing list