|
|
@@ -2199,6 +2199,7 @@ NineDevice9_SetTexture( struct NineDevice9 *This, |
|
|
|
IDirect3DBaseTexture9 *pTexture ) |
|
|
|
{ |
|
|
|
struct nine_state *state = This->update; |
|
|
|
struct NineBaseTexture9 *tex = NineBaseTexture9(pTexture); |
|
|
|
|
|
|
|
DBG("This=%p Stage=%u pTexture=%p\n", This, Stage, pTexture); |
|
|
|
|
|
|
@@ -2206,12 +2207,19 @@ NineDevice9_SetTexture( struct NineDevice9 *This, |
|
|
|
Stage == D3DDMAPSAMPLER || |
|
|
|
(Stage >= D3DVERTEXTEXTURESAMPLER0 && |
|
|
|
Stage <= D3DVERTEXTEXTURESAMPLER3), D3DERR_INVALIDCALL); |
|
|
|
user_assert(!tex || tex->base.pool != D3DPOOL_SCRATCH, D3DERR_INVALIDCALL); |
|
|
|
|
|
|
|
if (unlikely(tex && tex->base.pool == D3DPOOL_SYSTEMMEM)) { |
|
|
|
/* TODO: Currently not implemented. Better return error |
|
|
|
* with message telling what's wrong */ |
|
|
|
ERR("This=%p D3DPOOL_SYSTEMMEM not implemented for SetTexture\n", This); |
|
|
|
user_assert(tex->base.pool != D3DPOOL_SYSTEMMEM, D3DERR_INVALIDCALL); |
|
|
|
} |
|
|
|
|
|
|
|
if (Stage >= D3DDMAPSAMPLER) |
|
|
|
Stage = Stage - D3DDMAPSAMPLER + NINE_MAX_SAMPLERS_PS; |
|
|
|
|
|
|
|
if (!This->is_recording) { |
|
|
|
struct NineBaseTexture9 *tex = NineBaseTexture9(pTexture); |
|
|
|
struct NineBaseTexture9 *old = state->texture[Stage]; |
|
|
|
if (old == tex) |
|
|
|
return D3D_OK; |