[Mesa-dev] [PATCH 02/11] st/nine: Remove impossible cases with Managed textures

Ilia Mirkin imirkin at alum.mit.edu
Sat Apr 25 13:48:41 PDT 2015


As per IRC discussion, ignore -- I thought a user could hit this, but
the pool is checked in CopySurface's callers.

On Sat, Apr 25, 2015 at 4:23 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Fri, Apr 24, 2015 at 4:11 PM, Axel Davy <axel.davy at ens.fr> wrote:
>> Copying to/from a Managed texture is forbidden.
>> Rendering to a Managed texture is forbidden.
>>
>> Signed-off-by: Axel Davy <axel.davy at ens.fr>
>> ---
>>  src/gallium/state_trackers/nine/surface9.c | 23 +++++------------------
>>  src/gallium/state_trackers/nine/volume9.c  | 19 +++----------------
>>  2 files changed, 8 insertions(+), 34 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/nine/surface9.c b/src/gallium/state_trackers/nine/surface9.c
>> index ec3719e..e934941 100644
>> --- a/src/gallium/state_trackers/nine/surface9.c
>> +++ b/src/gallium/state_trackers/nine/surface9.c
>> @@ -165,8 +165,7 @@ NineSurface9_CreatePipeSurface( struct NineSurface9 *This, const int sRGB )
>>      struct pipe_surface templ;
>>      enum pipe_format srgb_format;
>>
>> -    assert(This->desc.Pool == D3DPOOL_DEFAULT ||
>> -           This->desc.Pool == D3DPOOL_MANAGED);
>> +    assert(This->desc.Pool == D3DPOOL_DEFAULT);
>>      assert(resource);
>>
>>      srgb_format = util_format_srgb(resource->format);
>> @@ -503,6 +502,9 @@ NineSurface9_CopySurface( struct NineSurface9 *This,
>>      DBG("This=%p From=%p pDestPoint=%p pSourceRect=%p\n",
>>          This, From, pDestPoint, pSourceRect);
>>
>> +    assert(This->base.pool != D3DPOOL_MANAGED &&
>> +           From->base.pool != D3DPOOL_MANAGED);
>
> This seems a little harsh... everything else is a user_assert. This
> function is callable by the user, so I think this should also be a
> user_assert.
>
>> +
>>      user_assert(This->desc.Format == From->desc.Format, D3DERR_INVALIDCALL);
>>
>>      dst_box.x = pDestPoint ? pDestPoint->x : 0;
>> @@ -543,20 +545,6 @@ NineSurface9_CopySurface( struct NineSurface9 *This,
>>      dst_box.width = src_box.width;
>>      dst_box.height = src_box.height;
>>
>> -    /* Don't copy to device memory of managed resources.
>> -     * We don't want to download it back again later.
>> -     */
>> -    if (This->base.pool == D3DPOOL_MANAGED)
>> -        r_dst = NULL;
>> -
>> -    /* Don't copy from stale device memory of managed resources.
>> -     * Also, don't copy between system and device if we don't have to.
>> -     */
>> -    if (From->base.pool == D3DPOOL_MANAGED) {
>> -        if (!r_dst || NineSurface9_IsDirty(From))
>> -            r_src = NULL;
>> -    }
>> -
>>      /* check source block align for compressed textures */
>>      if (util_format_is_compressed(From->base.info.format) &&
>>          ((src_box.width != From->desc.Width) ||
>> @@ -622,8 +610,7 @@ NineSurface9_CopySurface( struct NineSurface9 *This,
>>                         From->stride, src_box.x, src_box.y);
>>      }
>>
>> -    if (This->base.pool == D3DPOOL_DEFAULT ||
>> -        This->base.pool == D3DPOOL_MANAGED)
>> +    if (This->base.pool == D3DPOOL_DEFAULT)
>>          NineSurface9_MarkContainerDirty(This);
>>      if (!r_dst && This->base.resource)
>>          NineSurface9_AddDirtyRect(This, &dst_box);
>> diff --git a/src/gallium/state_trackers/nine/volume9.c b/src/gallium/state_trackers/nine/volume9.c
>> index 24d5d53..8c9f148 100644
>> --- a/src/gallium/state_trackers/nine/volume9.c
>> +++ b/src/gallium/state_trackers/nine/volume9.c
>> @@ -355,6 +355,8 @@ NineVolume9_CopyVolume( struct NineVolume9 *This,
>>      DBG("This=%p From=%p dstx=%u dsty=%u dstz=%u pSrcBox=%p\n",
>>          This, From, dstx, dsty, dstz, pSrcBox);
>>
>> +    assert(This->desc.Pool != D3DPOOL_MANAGED &&
>> +           From->desc.Pool != D3DPOOL_MANAGED);
>
> Same comment here -- user_assert I think.
>
>>      user_assert(This->desc.Format == From->desc.Format, D3DERR_INVALIDCALL);
>>
>>      dst_box.x = dstx;
>> @@ -392,20 +394,6 @@ NineVolume9_CopyVolume( struct NineVolume9 *This,
>>      dst_box.height = src_box.height;
>>      dst_box.depth = src_box.depth;
>>
>> -    /* Don't copy to device memory of managed resources.
>> -     * We don't want to download it back again later.
>> -     */
>> -    if (This->desc.Pool == D3DPOOL_MANAGED)
>> -        r_dst = NULL;
>> -
>> -    /* Don't copy from stale device memory of managed resources.
>> -     * Also, don't copy between system and device if we don't have to.
>> -     */
>> -    if (From->desc.Pool == D3DPOOL_MANAGED) {
>> -        if (!r_dst || NineVolume9_IsDirty(From))
>> -            r_src = NULL;
>> -    }
>> -
>>      if (r_dst && r_src) {
>>          pipe->resource_copy_region(pipe,
>>                                     r_dst, This->level,
>> @@ -452,8 +440,7 @@ NineVolume9_CopyVolume( struct NineVolume9 *This,
>>                        src_box.x, src_box.y, src_box.z);
>>      }
>>
>> -    if (This->desc.Pool == D3DPOOL_DEFAULT ||
>> -        This->desc.Pool == D3DPOOL_MANAGED)
>> +    if (This->desc.Pool == D3DPOOL_DEFAULT)
>>          NineVolume9_MarkContainerDirty(This);
>>      if (!r_dst && This->resource)
>>          NineVolume9_AddDirtyRegion(This, &dst_box);
>> --
>> 2.1.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list