diff options
Diffstat (limited to 'src/gallium/drivers/svga')
| -rw-r--r-- | src/gallium/drivers/svga/svga_screen.c | 26 | ||||
| -rw-r--r-- | src/gallium/drivers/svga/svga_screen_texture.h | 2 | 
2 files changed, 23 insertions, 5 deletions
| diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 735cdfdae9..cad9b779ec 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -104,7 +104,9 @@ svga_get_paramf(struct pipe_screen *screen, int param)        return SVGA_MAX_POINTSIZE;     case PIPE_CAP_MAX_TEXTURE_ANISOTROPY: -      return 4.0; +      if(!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_TEXTURE_ANISOTROPY, &result)) +         return 4.0; +      return result.u;     case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:        return 16.0; @@ -133,12 +135,28 @@ svga_get_paramf(struct pipe_screen *screen, int param)        return 1;     case PIPE_CAP_TEXTURE_SHADOW_MAP:        return 1; +     case PIPE_CAP_MAX_TEXTURE_2D_LEVELS: -      return SVGA_MAX_TEXTURE_LEVELS; +      { +         unsigned levels = SVGA_MAX_TEXTURE_LEVELS; +         if (sws->get_cap(sws, SVGA3D_DEVCAP_MAX_TEXTURE_WIDTH, &result)) +            levels = MIN2(util_logbase2(result.u) + 1, levels); +         else +            levels = 12 /* 2048x2048 */; +         if (sws->get_cap(sws, SVGA3D_DEVCAP_MAX_TEXTURE_HEIGHT, &result)) +            levels = MIN2(util_logbase2(result.u) + 1, levels); +         else +            levels = 12 /* 2048x2048 */; +         return levels; +      } +     case PIPE_CAP_MAX_TEXTURE_3D_LEVELS: -      return 8;  /* max 128x128x128 */ +      if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_VOLUME_EXTENT, &result)) +         return 8;  /* max 128x128x128 */ +      return MIN2(util_logbase2(result.u) + 1, SVGA_MAX_TEXTURE_LEVELS); +     case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS: -      return SVGA_MAX_TEXTURE_LEVELS; +      return 12 /* 2048x2048 */;     case PIPE_CAP_TEXTURE_MIRROR_REPEAT: /* req. for GL 1.4 */        return 1; diff --git a/src/gallium/drivers/svga/svga_screen_texture.h b/src/gallium/drivers/svga/svga_screen_texture.h index 43853d48f8..24c1f78ca5 100644 --- a/src/gallium/drivers/svga/svga_screen_texture.h +++ b/src/gallium/drivers/svga/svga_screen_texture.h @@ -39,7 +39,7 @@ struct svga_winsys_surface;  enum SVGA3dSurfaceFormat; -#define SVGA_MAX_TEXTURE_LEVELS 12 /* 2048x2048 */ +#define SVGA_MAX_TEXTURE_LEVELS 16  /** | 
