projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nouveau: Support X8R8G8B8 textures on nv30, nv40 and RTs on nv10-nv40.
[mesa.git]
/
src
/
gallium
/
drivers
/
nv10
/
nv10_state_emit.c
diff --git
a/src/gallium/drivers/nv10/nv10_state_emit.c
b/src/gallium/drivers/nv10/nv10_state_emit.c
index 41422c88825e7a47c3451b40a10530fa3878c507..2577ab73b5672f064431246c970fc5118fd9cf3f 100644
(file)
--- a/
src/gallium/drivers/nv10/nv10_state_emit.c
+++ b/
src/gallium/drivers/nv10/nv10_state_emit.c
@@
-1,5
+1,3
@@
-#include "pipe/p_util.h"
-
#include "nv10_context.h"
#include "nv10_state.h"
#include "nv10_context.h"
#include "nv10_state.h"
@@
-105,14
+103,15
@@
static void nv10_state_emit_scissor(struct nv10_context* nv10)
static void nv10_state_emit_framebuffer(struct nv10_context* nv10)
{
struct pipe_framebuffer_state* fb = nv10->framebuffer;
static void nv10_state_emit_framebuffer(struct nv10_context* nv10)
{
struct pipe_framebuffer_state* fb = nv10->framebuffer;
- struct
pipe
_surface *rt, *zeta = NULL;
+ struct
nv04
_surface *rt, *zeta = NULL;
uint32_t rt_format, w, h;
int colour_format = 0, zeta_format = 0;
uint32_t rt_format, w, h;
int colour_format = 0, zeta_format = 0;
+ struct nv10_miptree *nv10mt = 0;
w = fb->cbufs[0]->width;
h = fb->cbufs[0]->height;
colour_format = fb->cbufs[0]->format;
w = fb->cbufs[0]->width;
h = fb->cbufs[0]->height;
colour_format = fb->cbufs[0]->format;
- rt = fb->cbufs[0];
+ rt =
(struct nv04_surface *)
fb->cbufs[0];
if (fb->zsbuf) {
if (colour_format) {
if (fb->zsbuf) {
if (colour_format) {
@@
-124,12
+123,15
@@
static void nv10_state_emit_framebuffer(struct nv10_context* nv10)
}
zeta_format = fb->zsbuf->format;
}
zeta_format = fb->zsbuf->format;
- zeta = fb->zsbuf;
+ zeta =
(struct nv04_surface *)
fb->zsbuf;
}
rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
switch (colour_format) {
}
rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
switch (colour_format) {
+ case PIPE_FORMAT_X8R8G8B8_UNORM:
+ rt_format |= NV10TCL_RT_FORMAT_COLOR_X8R8G8B8;
+ break;
case PIPE_FORMAT_A8R8G8B8_UNORM:
case 0:
rt_format |= NV10TCL_RT_FORMAT_COLOR_A8R8G8B8;
case PIPE_FORMAT_A8R8G8B8_UNORM:
case 0:
rt_format |= NV10TCL_RT_FORMAT_COLOR_A8R8G8B8;
@@
-143,17
+145,19
@@
static void nv10_state_emit_framebuffer(struct nv10_context* nv10)
if (zeta) {
BEGIN_RING(celsius, NV10TCL_RT_PITCH, 1);
if (zeta) {
BEGIN_RING(celsius, NV10TCL_RT_PITCH, 1);
- OUT_RING (
(rt->pitch * rt->cpp) | ( (zeta->pitch * zeta->cpp) << 16)
);
+ OUT_RING (
rt->pitch | (zeta->pitch << 16)
);
} else {
BEGIN_RING(celsius, NV10TCL_RT_PITCH, 1);
} else {
BEGIN_RING(celsius, NV10TCL_RT_PITCH, 1);
- OUT_RING (
(rt->pitch * rt->cpp) | ( (rt->pitch * rt->cpp) << 16)
);
+ OUT_RING (
rt->pitch | (rt->pitch << 16)
);
}
}
- nv10->rt[0] = rt->buffer;
+ nv10mt = (struct nv10_miptree *)rt->base.texture;
+ nv10->rt[0] = nv10mt->buffer;
if (zeta_format)
{
if (zeta_format)
{
- nv10->zeta = zeta->buffer;
+ nv10mt = (struct nv10_miptree *)zeta->base.texture;
+ nv10->zeta = nv10mt->buffer;
}
BEGIN_RING(celsius, NV10TCL_RT_HORIZ, 3);
}
BEGIN_RING(celsius, NV10TCL_RT_HORIZ, 3);