struct NineResource9 base;
/* G3D state */
- struct pipe_context *pipe;
struct pipe_transfer *transfer;
struct pipe_surface *surface[2]; /* created on-demand (linear, sRGB) */
int lock_count;
D3DSURFACE_DESC desc;
uint8_t *data; /* system memory backing */
+ uint8_t *data_internal; /* for conversions */
+ enum pipe_format format_internal;
unsigned stride; /* for system memory backing */
+ unsigned stride_internal;
+
+ unsigned pending_uploads_counter; /* pending uploads */
};
static inline struct NineSurface9 *
NineSurface9( void *data )
void
NineSurface9_MarkContainerDirty( struct NineSurface9 *This );
-struct pipe_surface *
-NineSurface9_CreatePipeSurface( struct NineSurface9 *This, const int sRGB );
-
static inline struct pipe_surface *
NineSurface9_GetSurface( struct NineSurface9 *This, int sRGB )
{
- if (This->surface[sRGB])
- return This->surface[sRGB];
- return NineSurface9_CreatePipeSurface(This, sRGB);
+ assert(This->surface[sRGB]);
+ return This->surface[sRGB];
}
static inline struct pipe_resource *
return This->base.resource;
}
-static inline void
+void
NineSurface9_SetResource( struct NineSurface9 *This,
- struct pipe_resource *resource, unsigned level )
-{
- This->level = level;
- pipe_resource_reference(&This->base.resource, resource);
- pipe_surface_reference(&This->surface[0], NULL);
- pipe_surface_reference(&This->surface[1], NULL);
-}
+ struct pipe_resource *resource, unsigned level );
+
+void
+NineSurface9_SetMultiSampleType( struct NineSurface9 *This,
+ D3DMULTISAMPLE_TYPE mst );
void
NineSurface9_SetResourceResize( struct NineSurface9 *This,
NineSurface9_UploadSelf( struct NineSurface9 *This,
const struct pipe_box *damaged );
-HRESULT
-NineSurface9_CopySurface( struct NineSurface9 *This,
- struct NineSurface9 *From,
- const POINT *pDestPoint,
- const RECT *pSourceRect );
+void
+NineSurface9_CopyMemToDefault( struct NineSurface9 *This,
+ struct NineSurface9 *From,
+ const POINT *pDestPoint,
+ const RECT *pSourceRect );
+
+void
+NineSurface9_CopyDefaultToMem( struct NineSurface9 *This,
+ struct NineSurface9 *From );
static inline boolean
NineSurface9_IsOffscreenPlain (struct NineSurface9 *This )
return This->base.usage == 0 && !This->texture;
}
-#ifdef DEBUG
+#if defined(DEBUG) || !defined(NDEBUG)
void
NineSurface9_Dump( struct NineSurface9 *This );
#else
/*** Direct3D public ***/
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_GetContainer( struct NineSurface9 *This,
REFIID riid,
void **ppContainer );
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_GetDesc( struct NineSurface9 *This,
D3DSURFACE_DESC *pDesc );
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_LockRect( struct NineSurface9 *This,
D3DLOCKED_RECT *pLockedRect,
const RECT *pRect,
DWORD Flags );
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_UnlockRect( struct NineSurface9 *This );
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_GetDC( struct NineSurface9 *This,
HDC *phdc );
-HRESULT WINAPI
+HRESULT NINE_WINAPI
NineSurface9_ReleaseDC( struct NineSurface9 *This,
HDC hdc );