1 #include "nv04_context.h"
2 #include "nouveau/nouveau_util.h"
7 NV04_DX5_TEXTURED_TRIANGLE_FORMAT_COLOR_##tf, \
10 struct nv04_texture_format
{
15 static struct nv04_texture_format
16 nv04_texture_formats
[] = {
17 _(A8R8G8B8_UNORM
, A8R8G8B8
),
18 _(X8R8G8B8_UNORM
, X8R8G8B8
),
19 _(A1R5G5B5_UNORM
, A1R5G5B5
),
20 _(A4R4G4B4_UNORM
, A4R4G4B4
),
26 nv04_fragtex_format(uint pipe_format
)
28 struct nv04_texture_format
*tf
= nv04_texture_formats
;
31 for (i
=0; i
< sizeof(nv04_texture_formats
)/sizeof(nv04_texture_formats
[0]); i
++) {
32 if (tf
->pipe
== pipe_format
)
37 NOUVEAU_ERR("unknown texture format %s\n", pf_name(pipe_format
));
43 nv04_fragtex_build(struct nv04_context
*nv04
, int unit
)
45 struct nv04_miptree
*nv04mt
= nv04
->tex_miptree
[unit
];
46 struct pipe_texture
*pt
= &nv04mt
->base
;
52 NOUVEAU_ERR("Unknown target %d\n", pt
->target
);
56 nv04
->fragtex
.format
= NV04_DX5_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER
57 | NV04_DX5_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER
58 | nv04_fragtex_format(pt
->format
)
59 | ( (pt
->last_level
+ 1) << NV04_DX5_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT
)
60 | ( log2i(pt
->width
[0]) << NV04_DX5_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT
)
61 | ( log2i(pt
->height
[0]) << NV04_DX5_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT
)
62 | NV04_DX5_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE
63 | NV04_DX5_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE
69 nv04_fragtex_bind(struct nv04_context
*nv04
)
71 nv04_fragtex_build(nv04
, 0);