Home | History | Annotate | Download | only in i965

Lines Matching refs:curbe

50  * Partition the CURBE between the various users of constant values:
53 * constants. That greatly reduces the demand for space in the CURBE.
84 * curbe allocation failure.
97 if (nr_fp_regs > brw->curbe.wm_size ||
98 nr_vp_regs > brw->curbe.vs_size ||
99 nr_clip_regs != brw->curbe.clip_size ||
100 (total_regs < brw->curbe.total_size / 4 &&
101 brw->curbe.total_size > 16)) {
108 brw->curbe.wm_start = reg;
109 brw->curbe.wm_size = nr_fp_regs; reg += nr_fp_regs;
110 brw->curbe.clip_start = reg;
111 brw->curbe.clip_size = nr_clip_regs; reg += nr_clip_regs;
112 brw->curbe.vs_start = reg;
113 brw->curbe.vs_size = nr_vp_regs; reg += nr_vp_regs;
114 brw->curbe.total_size = reg;
117 printf("curbe wm %d+%d clip %d+%d vs %d+%d\n",
118 brw->curbe.wm_start,
119 brw->curbe.wm_size,
120 brw->curbe.clip_start,
121 brw->curbe.clip_size,
122 brw->curbe.vs_start,
123 brw->curbe.vs_size );
145 * pipeline stall each time the contents of the curbe is changed.
189 const GLuint sz = brw->curbe.total_size;
196 brw->curbe.last_bufsz = 0;
200 buf = brw->curbe.next_buf;
203 if (brw->curbe.wm_size) {
204 GLuint offset = brw->curbe.wm_start * 16;
218 * of curbe space, but the advantage is that the new VS backend can use its
221 if (brw->curbe.clip_size) {
222 GLuint offset = brw->curbe.clip_start * 16;
250 if (brw->curbe.vs_size) {
251 GLuint offset = brw->curbe.vs_start * 16;
275 printf("curbe %d.%d: %f %f %f %f\n", i/8, i&4,
279 brw->curbe.last_buf, buf,
280 bufsz, brw->curbe.last_bufsz,
281 brw->curbe.last_buf ? memcmp(buf, brw->curbe.last_buf, bufsz) : -1);
284 if (brw->curbe.curbe_bo != NULL &&
285 bufsz == brw->curbe.last_bufsz &&
286 memcmp(buf, brw->curbe.last_buf, bufsz) == 0) {
293 memcpy(brw->curbe.last_buf, buf, bufsz);
294 brw->curbe.last_bufsz = bufsz;
296 if (brw->curbe.curbe_bo != NULL &&
297 brw->curbe.curbe_next_offset + bufsz > brw->curbe.curbe_bo->size)
299 drm_intel_gem_bo_unmap_gtt(brw->curbe.curbe_bo);
300 drm_intel_bo_unreference(brw->curbe.curbe_bo);
301 brw->curbe.curbe_bo = NULL;
304 if (brw->curbe.curbe_bo == NULL) {
305 /* Allocate a single page for CURBE entries for this batchbuffer.
308 brw->curbe.curbe_bo = drm_intel_bo_alloc(brw->intel.bufmgr, "CURBE",
310 brw->curbe.curbe_next_offset = 0;
311 drm_intel_gem_bo_map_gtt(brw->curbe.curbe_bo);
315 brw->curbe.curbe_offset = brw->curbe.curbe_next_offset;
316 brw->curbe.curbe_next_offset += bufsz;
317 brw->curbe.curbe_next_offset = ALIGN(brw->curbe.curbe_next_offset, 64);
321 memcpy(brw->curbe.curbe_bo->virtual + brw->curbe.curbe_offset,
335 * URB entry (Const URB Entry == CURBE) in turn, and issuing
342 if (brw->curbe.total_size == 0) {
347 OUT_RELOC(brw->curbe.curbe_bo,
349 (brw->curbe.total_size - 1) + brw->curbe.curbe_offset);