Lines Matching refs:so
9 * Software is furnished to do so, subject to the following conditions:
75 * any input, so let's just pretend it's the first one.
147 /* Fill prog->in[] so that non-flat inputs are first and
253 struct nv50_stream_output_state *so;
257 so = MALLOC_STRUCT(nv50_stream_output_state);
258 if (!so)
260 memset(so->map, 0xff, sizeof(so->map));
263 so->num_attribs[b] = 0;
268 so->num_attribs[b] = MAX2(so->num_attribs[b], end);
271 so->ctrl = NV50_3D_STRMOUT_BUFFERS_CTRL_INTERLEAVED;
273 so->stride[0] = pso->stride[0] * 4;
276 assert(!so->num_attribs[b] || so->num_attribs[b] == pso->stride[b]);
277 so->stride[b] = so->num_attribs[b] * 4;
278 if (so->num_attribs[b])
279 so->ctrl = (b + 1) << NV50_3D_STRMOUT_BUFFERS_CTRL_SEPARATE__SHIFT;
280 base[b] = align(base[b - 1] + so->num_attribs[b - 1], 4);
282 if (so->ctrl & NV50_3D_STRMOUT_BUFFERS_CTRL_INTERLEAVED) {
283 assert(so->stride[0] < NV50_3D_STRMOUT_BUFFERS_CTRL_STRIDE__MAX);
284 so->ctrl |= so->stride[0] << NV50_3D_STRMOUT_BUFFERS_CTRL_STRIDE__SHIFT;
287 so->map_size = base[3] + so->num_attribs[3];
296 so->map[base[b] + p + c] = info->out[r].slot[s + c];
299 return so;
365 prog->so = nv50_program_create_strmout_state(info,
437 if (p->so)
438 FREE(p->so);