summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_screen.c
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2010-08-23 15:39:39 -0400
committerJerome Glisse <jglisse@redhat.com>2010-08-23 15:42:32 -0400
commitbcf7f66a934ebd9c91da90d6e1f9b169c33c746c (patch)
tree3b6bf92aad60327e309bf9ca0c480e1858ae746d /src/gallium/drivers/r600/r600_screen.c
parent6355ae2b80a01b1d58824ffeae0c638d917519c0 (diff)
r600g: export one component per pixel + r7xx uncompression shader
We need to always at least export one component (wether it's depth or color. Add valid r7xx shader program for depth decompression. Signed-off-by: Jerome Glisse <jglisse@redhat.com>
Diffstat (limited to 'src/gallium/drivers/r600/r600_screen.c')
-rw-r--r--src/gallium/drivers/r600/r600_screen.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_screen.c b/src/gallium/drivers/r600/r600_screen.c
index cdaca9ed7d..1358432957 100644
--- a/src/gallium/drivers/r600/r600_screen.c
+++ b/src/gallium/drivers/r600/r600_screen.c
@@ -234,11 +234,34 @@ static void r600_destroy_screen(struct pipe_screen* pscreen)
struct pipe_screen *r600_screen_create(struct radeon *rw)
{
struct r600_screen* rscreen;
+ enum radeon_family family = radeon_get_family(rw);
rscreen = CALLOC_STRUCT(r600_screen);
if (rscreen == NULL) {
return NULL;
}
+
+ switch (family) {
+ case CHIP_R600:
+ case CHIP_RV610:
+ case CHIP_RV630:
+ case CHIP_RV670:
+ case CHIP_RV620:
+ case CHIP_RV635:
+ case CHIP_RS780:
+ case CHIP_RS880:
+ rscreen->chip_class = R600;
+ break;
+ case CHIP_RV770:
+ case CHIP_RV730:
+ case CHIP_RV710:
+ case CHIP_RV740:
+ rscreen->chip_class = R700;
+ break;
+ default:
+ FREE(rscreen);
+ return NULL;
+ }
rscreen->rw = rw;
rscreen->screen.winsys = (struct pipe_winsys*)rw;
rscreen->screen.destroy = r600_destroy_screen;