• Home
  • Raw
  • Download

Lines Matching full:this

6  * copy of this software and associated documentation files (the "Software"),
12 * The above copyright notice and this permission notice (including the next
41 NineBuffer9_ctor( struct NineBuffer9 *This, in NineBuffer9_ctor() argument
48 struct pipe_resource *info = &This->base.info; in NineBuffer9_ctor()
51 DBG("This=%p Size=0x%x Usage=%x Pool=%u\n", This, Size, Usage, Pool); in NineBuffer9_ctor()
55 This->maps = MALLOC(sizeof(struct NineTransfer)); in NineBuffer9_ctor()
56 if (!This->maps) in NineBuffer9_ctor()
58 This->nmaps = 0; in NineBuffer9_ctor()
59 This->maxmaps = 1; in NineBuffer9_ctor()
60 This->size = Size; in NineBuffer9_ctor()
106 This->discard_nooverwrite_only = !!(Usage & D3DUSAGE_WRITEONLY) && in NineBuffer9_ctor()
125 hr = NineResource9_ctor(&This->base, pParams, NULL, TRUE, in NineBuffer9_ctor()
132 This->managed.data = align_calloc( in NineBuffer9_ctor()
133 nine_format_get_level_alloc_size(This->base.info.format, in NineBuffer9_ctor()
135 if (!This->managed.data) in NineBuffer9_ctor()
137 memset(This->managed.data, 0, Size); in NineBuffer9_ctor()
138 This->managed.dirty = TRUE; in NineBuffer9_ctor()
139 u_box_1d(0, Size, &This->managed.dirty_box); in NineBuffer9_ctor()
140 list_inithead(&This->managed.list); in NineBuffer9_ctor()
141 list_inithead(&This->managed.list2); in NineBuffer9_ctor()
142 list_add(&This->managed.list2, &pParams->device->managed_buffers); in NineBuffer9_ctor()
149 NineBuffer9_dtor( struct NineBuffer9 *This ) in NineBuffer9_dtor() argument
151 DBG("This=%p\n", This); in NineBuffer9_dtor()
153 if (This->maps) { in NineBuffer9_dtor()
154 while (This->nmaps) { in NineBuffer9_dtor()
155 NineBuffer9_Unlock(This); in NineBuffer9_dtor()
157 FREE(This->maps); in NineBuffer9_dtor()
160 if (This->base.pool == D3DPOOL_MANAGED) { in NineBuffer9_dtor()
161 if (This->managed.data) in NineBuffer9_dtor()
162 align_free(This->managed.data); in NineBuffer9_dtor()
163 if (This->managed.list.prev != NULL && This->managed.list.next != NULL) in NineBuffer9_dtor()
164 list_del(&This->managed.list); in NineBuffer9_dtor()
165 if (This->managed.list2.prev != NULL && This->managed.list2.next != NULL) in NineBuffer9_dtor()
166 list_del(&This->managed.list2); in NineBuffer9_dtor()
169 if (This->buf) in NineBuffer9_dtor()
170 nine_upload_release_buffer(This->base.base.device->buffer_upload, This->buf); in NineBuffer9_dtor()
172 NineResource9_dtor(&This->base); in NineBuffer9_dtor()
176 NineBuffer9_GetResource( struct NineBuffer9 *This, unsigned *offset ) in NineBuffer9_GetResource() argument
178 if (This->buf) in NineBuffer9_GetResource()
179 return nine_upload_buffer_resource_and_offset(This->buf, offset); in NineBuffer9_GetResource()
181 return NineResource9_GetResource(&This->base); in NineBuffer9_GetResource()
185 NineBuffer9_RebindIfRequired( struct NineBuffer9 *This, in NineBuffer9_RebindIfRequired() argument
190 if (!This->bind_count) in NineBuffer9_RebindIfRequired()
193 if (device->state.stream[i] == (struct NineVertexBuffer9 *)This) in NineBuffer9_RebindIfRequired()
195 (struct NineVertexBuffer9 *)This, in NineBuffer9_RebindIfRequired()
199 if (device->state.idxbuf == (struct NineIndexBuffer9 *)This) in NineBuffer9_RebindIfRequired()
200 nine_context_set_indices(device, (struct NineIndexBuffer9 *)This); in NineBuffer9_RebindIfRequired()
204 NineBuffer9_Lock( struct NineBuffer9 *This, in NineBuffer9_Lock() argument
210 struct NineDevice9 *device = This->base.base.device; in NineBuffer9_Lock()
216 DBG("This=%p(pipe=%p) OffsetToLock=0x%x, SizeToLock=0x%x, Flags=0x%x\n", in NineBuffer9_Lock()
217 This, This->base.resource, in NineBuffer9_Lock()
229 SizeToLock = This->size - OffsetToLock; in NineBuffer9_Lock()
235 if (This->base.pool == D3DPOOL_MANAGED) { in NineBuffer9_Lock()
239 if (!This->managed.dirty) { in NineBuffer9_Lock()
240 assert(LIST_IS_EMPTY(&This->managed.list)); in NineBuffer9_Lock()
241 This->managed.dirty = TRUE; in NineBuffer9_Lock()
242 This->managed.dirty_box = box; in NineBuffer9_Lock()
243 if (p_atomic_read(&This->managed.pending_upload)) in NineBuffer9_Lock()
244 nine_csmt_process(This->base.base.device); in NineBuffer9_Lock()
246 u_box_union_2d(&This->managed.dirty_box, &This->managed.dirty_box, &box); in NineBuffer9_Lock()
249 BASEBUF_REGISTER_UPDATE(This); in NineBuffer9_Lock()
251 *ppbData = (char *)This->managed.data + OffsetToLock; in NineBuffer9_Lock()
253 This->nmaps++; in NineBuffer9_Lock()
269 if (This->base.pool == D3DPOOL_SYSTEMMEM) in NineBuffer9_Lock()
278 if (Flags & D3DLOCK_DONOTWAIT && !(This->base.usage & D3DUSAGE_DYNAMIC)) in NineBuffer9_Lock()
281 This->discard_nooverwrite_only &= !!(Flags & (D3DLOCK_DISCARD | D3DLOCK_NOOVERWRITE)); in NineBuffer9_Lock()
283 if (This->nmaps == This->maxmaps) { in NineBuffer9_Lock()
285 REALLOC(This->maps, sizeof(struct NineTransfer)*This->maxmaps, in NineBuffer9_Lock()
286 sizeof(struct NineTransfer)*(This->maxmaps << 1)); in NineBuffer9_Lock()
290 This->maxmaps <<= 1; in NineBuffer9_Lock()
291 This->maps = newmaps; in NineBuffer9_Lock()
294 if (This->buf && !This->discard_nooverwrite_only) { in NineBuffer9_Lock()
305 src_res = nine_upload_buffer_resource_and_offset(This->buf, &offset); in NineBuffer9_Lock()
306 u_box_1d(offset, This->size, &src_box); in NineBuffer9_Lock()
309 pipe->resource_copy_region(pipe, This->base.resource, 0, 0, 0, 0, in NineBuffer9_Lock()
312 if (This->nmaps >= 1) in NineBuffer9_Lock()
313 This->maps[This->nmaps-1].should_destroy_buf = true; in NineBuffer9_Lock()
315 nine_upload_release_buffer(device->buffer_upload, This->buf); in NineBuffer9_Lock()
316 This->buf = NULL; in NineBuffer9_Lock()
318 NineBuffer9_RebindIfRequired(This, device); in NineBuffer9_Lock()
321 This->maps[This->nmaps].transfer = NULL; in NineBuffer9_Lock()
322 This->maps[This->nmaps].is_pipe_secondary = false; in NineBuffer9_Lock()
323 This->maps[This->nmaps].buf = NULL; in NineBuffer9_Lock()
324 This->maps[This->nmaps].should_destroy_buf = false; in NineBuffer9_Lock()
326 if (This->discard_nooverwrite_only) { in NineBuffer9_Lock()
327 if (This->buf && (Flags & D3DLOCK_DISCARD)) { in NineBuffer9_Lock()
329 if (This->nmaps >= 1) in NineBuffer9_Lock()
330 This->maps[This->nmaps-1].should_destroy_buf = true; in NineBuffer9_Lock()
332 nine_upload_release_buffer(device->buffer_upload, This->buf); in NineBuffer9_Lock()
333 This->buf = NULL; in NineBuffer9_Lock()
336 if (!This->buf) { in NineBuffer9_Lock()
337 This->buf = nine_upload_create_buffer(device->buffer_upload, This->base.info.width0); in NineBuffer9_Lock()
338 NineBuffer9_RebindIfRequired(This, device); in NineBuffer9_Lock()
341 if (This->buf) { in NineBuffer9_Lock()
342 This->maps[This->nmaps].buf = This->buf; in NineBuffer9_Lock()
343 This->nmaps++; in NineBuffer9_Lock()
344 *ppbData = nine_upload_buffer_get_map(This->buf) + OffsetToLock; in NineBuffer9_Lock()
348 This->discard_nooverwrite_only = false; in NineBuffer9_Lock()
357 struct pipe_resource *new_res = screen->resource_create(screen, &This->base.info); in NineBuffer9_Lock()
360 pipe_resource_reference(&This->base.resource, new_res); in NineBuffer9_Lock()
363 NineBuffer9_RebindIfRequired(This, device); in NineBuffer9_Lock()
364 This->maps[This->nmaps].is_pipe_secondary = TRUE; in NineBuffer9_Lock()
367 This->maps[This->nmaps].is_pipe_secondary = TRUE; in NineBuffer9_Lock()
369 if (This->maps[This->nmaps].is_pipe_secondary) in NineBuffer9_Lock()
374 data = pipe->transfer_map(pipe, This->base.resource, 0, in NineBuffer9_Lock()
375 usage, &box, &This->maps[This->nmaps].transfer); in NineBuffer9_Lock()
390 This->nmaps++; in NineBuffer9_Lock()
397 NineBuffer9_Unlock( struct NineBuffer9 *This ) in NineBuffer9_Unlock() argument
399 struct NineDevice9 *device = This->base.base.device; in NineBuffer9_Unlock()
401 DBG("This=%p\n", This); in NineBuffer9_Unlock()
403 user_assert(This->nmaps > 0, D3DERR_INVALIDCALL); in NineBuffer9_Unlock()
404 This->nmaps--; in NineBuffer9_Unlock()
405 if (This->base.pool != D3DPOOL_MANAGED) { in NineBuffer9_Unlock()
406 if (!This->maps[This->nmaps].buf) { in NineBuffer9_Unlock()
407 pipe = This->maps[This->nmaps].is_pipe_secondary ? in NineBuffer9_Unlock()
410 pipe->transfer_unmap(pipe, This->maps[This->nmaps].transfer); in NineBuffer9_Unlock()
412 if (This->maps[This->nmaps].is_pipe_secondary) in NineBuffer9_Unlock()
416 } else if (This->maps[This->nmaps].should_destroy_buf) in NineBuffer9_Unlock()
417 nine_upload_release_buffer(device->buffer_upload, This->maps[This->nmaps].buf); in NineBuffer9_Unlock()
423 NineBuffer9_SetDirty( struct NineBuffer9 *This ) in NineBuffer9_SetDirty() argument
425 assert(This->base.pool == D3DPOOL_MANAGED); in NineBuffer9_SetDirty()
427 This->managed.dirty = TRUE; in NineBuffer9_SetDirty()
428 u_box_1d(0, This->size, &This->managed.dirty_box); in NineBuffer9_SetDirty()
429 BASEBUF_REGISTER_UPDATE(This); in NineBuffer9_SetDirty()