st/nine: Remove Managed texture hack.
authorAxel Davy <axel.davy@ens.fr>
Fri, 20 Feb 2015 11:59:45 +0000 (12:59 +0100)
committerAxel Davy <axel.davy@ens.fr>
Wed, 29 Apr 2015 06:28:11 +0000 (08:28 +0200)
Previously binding an unitialized managed texture
was causing a crash, and a workaround was added to
prevent the crash.

This patch removes this workaround and instead set the initial
state of managed textures as dirty, so that when the texture is bound
for the first time, it is always initialized.

Signed-off-by: Axel Davy <axel.davy@ens.fr>
src/gallium/state_trackers/nine/basetexture9.c

index b868019d385a149ce53e468e90ed92cf7fe5571f..17a8f448ee6e9e7e2e5a52c5f41cae741b5f34ce 100644 (file)
@@ -69,6 +69,10 @@ NineBaseTexture9_ctor( struct NineBaseTexture9 *This,
         D3DTEXF_LINEAR : D3DTEXF_NONE;
     This->managed.lod = 0;
     This->managed.lod_resident = -1;
+    /* Mark the texture as dirty to trigger first upload when we need the texture,
+     * even if it wasn't set by the application */
+    if (Pool == D3DPOOL_MANAGED)
+        This->managed.dirty = TRUE;
     /* When a depth buffer is sampled, it is for shadow mapping, except for
      * D3DFMT_INTZ, D3DFMT_DF16 and D3DFMT_DF24.
      * In addition D3DFMT_INTZ can be used for both texturing and depth buffering
@@ -496,9 +500,6 @@ NineBaseTexture9_UpdateSamplerView( struct NineBaseTexture9 *This,
        if (unlikely(This->format == D3DFMT_NULL))
             return D3D_OK;
         NineBaseTexture9_Dump(This);
-        /* hack due to incorrect POOL_MANAGED handling */
-        NineBaseTexture9_GenerateMipSubLevels(This);
-        resource = This->base.resource;
     }
     assert(resource);