Displaying 4 results from an estimated 4 matches for "nouveau_resource_alloc".
2010 Jan 18
0
[PATCH] nv30-nv40: support unlimited queries (v2)
...then another begin_query()
* without querying the result in-between. For now we'll wait for
* the existing query to notify completion, but it could be better.
*/
- if (q->object) {
- uint64_t tmp;
+ if (q->object)
pipe->get_query_result(pipe, pq, 1, &tmp);
+
+ while (nouveau_resource_alloc(nv30->screen->query_heap, 1, NULL, &q->object))
+ {
+ struct nv30_query* oldestq;
+ assert(!LIST_IS_EMPTY(&nv30->screen->query_list));
+ oldestq = LIST_ENTRY(struct nv30_query, nv30->screen->query_list.next, list);
+ pipe->get_query_result(pipe, (struct pipe_quer...
2010 Jan 18
2
[PATCH 1/2] nv30-nv40: support unlimited queries
...then another begin_query()
* without querying the result in-between. For now we'll wait for
* the existing query to notify completion, but it could be better.
*/
- if (q->object) {
- uint64_t tmp;
+ if (q->object)
pipe->get_query_result(pipe, pq, 1, &tmp);
+
+ while (nouveau_resource_alloc(nv30->screen->query_heap, 1, NULL, &q->object))
+ {
+ struct nv30_query* oldestq;
+ assert(!LIST_IS_EMPTY(&nv30->screen->query_list));
+ oldestq = LIST_ENTRY(struct nv30_query, nv30->screen->query_list.next, list);
+ pipe->get_query_result(pipe, (struct pipe_quer...
2009 Jun 21
0
[PATCH] nv50: don't allocate in the param buffer
...urce *heap = nv50->screen->immd_heap[0];
@@ -2457,23 +2457,10 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
if (!p->param_nr)
return;
- if (!p->data[1]) {
- struct nouveau_resource *heap =
- nv50->screen->parm_heap[p->type];
-
- if (nouveau_resource_alloc(heap, p->param_nr, p, &p->data[1])) {
- while (heap->next && heap->size < p->param_nr) {
- struct nv50_program *evict = heap->next->priv;
- nouveau_resource_free(&evict->data[1]);
- }
-
- if (nouveau_resource_alloc(heap, p->param_nr, p,
-...
2009 Jun 21
0
[PATCH] nv50: initial support for IF, ELSE, ENDIF insns
...amp;parse);
@@ -2383,11 +2476,29 @@ nv50_program_validate_code(struct nv50_context *nv50, struct nv50_program *p)
heap = nv50->screen->code_heap[p->type];
code = nv50->screen->sprogbuf_code[p->type];
+ size = align(p->exec_size * 4, 0x100);
+
+ if (!p->code) {
+ ret = nouveau_resource_alloc(heap, size, p, &p->code);
+ if (ret)
+ assert(!"No more space in program VRAM buffer.");
+ }
+
if ((p->data[0] && p->data[0]->start != p->data_start[0]) ||
- (p->data[1] && p->data[1]->start != p->data_start[1])) {
+ (p->data[1]...