Lines Matching refs:This
5 * copy of this software and associated documentation files (the "Software"),
11 * The above copyright notice and this permission notice (including the next
35 NineCubeTexture9_ctor( struct NineCubeTexture9 *This,
43 struct pipe_resource *info = &This->base.base.info;
52 DBG("This=%p pParams=%p EdgeLength=%u Levels=%u Usage=%d "
54 This, pParams, EdgeLength, Levels, Usage,
57 This->base.base.base.device = pParams->device; /* Early fill this field in case of failure */
111 "but this is unimplemented\n");
113 hr = NineBaseTexture9_ctor(&This->base, pParams, NULL, D3DRTYPE_CUBETEXTURE,
117 This->base.pstype = 2;
120 level_offsets = alloca(sizeof(unsigned) * This->base.level_count);
123 This->base.level_count-1);
124 This->managed_buffer = nine_allocate(pParams->device->allocator, 6 * face_size);
125 if (!This->managed_buffer)
129 This->surfaces = CALLOC(6 * This->base.level_count, sizeof(*This->surfaces));
130 if (!This->surfaces)
144 * This is the expected behaviour, however we haven't tested for
149 for (l = 0; l < This->base.level_count; l++) {
151 p = This->managed_buffer ?
152 nine_suballocate(pParams->device->allocator, This->managed_buffer, offset + level_offsets[l]) : NULL;
154 hr = NineSurface9_new(This->base.base.base.device, NineUnknown(This),
155 This->base.base.resource, p, D3DRTYPE_CUBETEXTURE,
156 l, f, &sfdesc, &This->surfaces[f + 6 * l]);
164 This->dirty_rect[i].width = EdgeLength;
165 This->dirty_rect[i].height = EdgeLength;
166 This->dirty_rect[i].depth = 1;
173 NineCubeTexture9_dtor( struct NineCubeTexture9 *This )
176 bool is_worker = nine_context_is_worker(This->base.base.base.device);
178 DBG("This=%p\n", This);
180 if (This->surfaces) {
181 for (i = 0; i < This->base.level_count * 6; ++i)
182 if (This->surfaces[i])
183 NineUnknown_Destroy(&This->surfaces[i]->base.base);
184 FREE(This->surfaces);
187 if (This->managed_buffer) {
189 nine_free_worker(This->base.base.base.device->allocator, This->managed_buffer);
191 nine_free(This->base.base.base.device->allocator, This->managed_buffer);
194 NineBaseTexture9_dtor(&This->base);
198 NineCubeTexture9_GetLevelDesc( struct NineCubeTexture9 *This,
202 DBG("This=%p Level=%u pDesc=%p\n", This, Level, pDesc);
204 user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
206 *pDesc = This->surfaces[Level * 6]->desc;
212 NineCubeTexture9_GetCubeMapSurface( struct NineCubeTexture9 *This,
219 DBG("This=%p FaceType=%d Level=%u ppCubeMapSurface=%p\n",
220 This, FaceType, Level, ppCubeMapSurface);
222 user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
225 NineUnknown_AddRef(NineUnknown(This->surfaces[s]));
226 *ppCubeMapSurface = (IDirect3DSurface9 *)This->surfaces[s];
232 NineCubeTexture9_LockRect( struct NineCubeTexture9 *This,
241 DBG("This=%p FaceType=%d Level=%u pLockedRect=%p pRect=%p Flags=%d\n",
242 This, FaceType, Level, pLockedRect, pRect, Flags);
244 user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
247 return NineSurface9_LockRect(This->surfaces[s], pLockedRect, pRect, Flags);
251 NineCubeTexture9_UnlockRect( struct NineCubeTexture9 *This,
257 DBG("This=%p FaceType=%d Level=%u\n", This, FaceType, Level);
259 user_assert(Level < This->base.level_count, D3DERR_INVALIDCALL);
262 return NineSurface9_UnlockRect(This->surfaces[s]);
266 NineCubeTexture9_AddDirtyRect( struct NineCubeTexture9 *This,
270 DBG("This=%p FaceType=%d pDirtyRect=%p\n", This, FaceType, pDirtyRect);
274 if (This->base.base.pool != D3DPOOL_MANAGED) {
275 if (This->base.base.usage & D3DUSAGE_AUTOGENMIPMAP) {
276 This->base.dirty_mip = TRUE;
277 BASETEX_REGISTER_UPDATE(&This->base);
282 if (This->base.base.pool == D3DPOOL_MANAGED) {
283 This->base.managed.dirty = TRUE;
284 BASETEX_REGISTER_UPDATE(&This->base);
288 u_box_origin_2d(This->base.base.info.width0,
289 This->base.base.info.height0,
290 &This->dirty_rect[FaceType]);
292 if (This->dirty_rect[FaceType].width == 0) {
293 rect_to_pipe_box_clamp(&This->dirty_rect[FaceType], pDirtyRect);
297 u_box_union_2d(&This->dirty_rect[FaceType], &This->dirty_rect[FaceType],
300 (void) u_box_clip_2d(&This->dirty_rect[FaceType],
301 &This->dirty_rect[FaceType],
302 This->base.base.info.width0,
303 This->base.base.info.height0);