mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
nv30: modernize fp upload logic
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
54afb10f0e
commit
b875198f1f
1 changed files with 14 additions and 10 deletions
|
|
@ -37,22 +37,26 @@ nv30_fragprog_upload(struct nv30_context *nv30)
|
|||
struct nouveau_context *nv = &nv30->base;
|
||||
struct nv30_fragprog *fp = nv30->fragprog.program;
|
||||
struct pipe_context *pipe = &nv30->base.pipe;
|
||||
struct pipe_transfer *transfer;
|
||||
uint32_t *map;
|
||||
int i; (void)i;
|
||||
|
||||
if (unlikely(!fp->buffer)) {
|
||||
if (unlikely(!fp->buffer))
|
||||
fp->buffer = pipe_buffer_create(pipe->screen, 0, 0, fp->insn_len * 4);
|
||||
}
|
||||
|
||||
map = pipe_buffer_map(pipe, fp->buffer, PIPE_TRANSFER_WRITE, &transfer);
|
||||
#ifndef PIPE_ARCH_BIG_ENDIAN
|
||||
memcpy(map, fp->insn, fp->insn_len * 4);
|
||||
pipe_buffer_write(pipe, fp->buffer, 0, fp->insn_len * 4, fp->insn);
|
||||
#else
|
||||
for (i = 0; i < fp->insn_len; i++)
|
||||
*map++ = (fp->insn[i] >> 16) | (fp->insn[i] << 16);
|
||||
{
|
||||
struct pipe_transfer *transfer;
|
||||
uint32_t *map;
|
||||
int i;
|
||||
|
||||
map = pipe_buffer_map(pipe, fp->buffer,
|
||||
PIPE_TRANSFER_WRITE | PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE,
|
||||
&transfer);
|
||||
for (i = 0; i < fp->insn_len; i++)
|
||||
*map++ = (fp->insn[i] >> 16) | (fp->insn[i] << 16);
|
||||
pipe_buffer_unmap(pipe, transfer);
|
||||
}
|
||||
#endif
|
||||
pipe_buffer_unmap(pipe, transfer);
|
||||
|
||||
if (nv04_resource(fp->buffer)->domain != NOUVEAU_BO_VRAM)
|
||||
nouveau_buffer_migrate(nv, nv04_resource(fp->buffer), NOUVEAU_BO_VRAM);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue