1 #include "pipe/p_screen.h"
2 #include "pipe/p_util.h"
4 #include "nv50_context.h"
5 #include "nv50_screen.h"
8 nv50_screen_is_format_supported(struct pipe_screen
*pscreen
,
9 enum pipe_format format
, uint type
)
15 nv50_screen_get_name(struct pipe_screen
*pscreen
)
17 struct nv50_screen
*screen
= nv50_screen(pscreen
);
18 static char buffer
[128];
20 snprintf(buffer
, sizeof(buffer
), "NV%02X", screen
->chipset
);
25 nv50_screen_get_vendor(struct pipe_screen
*pscreen
)
31 nv50_screen_get_param(struct pipe_screen
*pscreen
, int param
)
34 case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS
:
36 case PIPE_CAP_NPOT_TEXTURES
:
38 case PIPE_CAP_TWO_SIDED_STENCIL
:
44 case PIPE_CAP_ANISOTROPIC_FILTER
:
46 case PIPE_CAP_POINT_SPRITE
:
48 case PIPE_CAP_MAX_RENDER_TARGETS
:
50 case PIPE_CAP_OCCLUSION_QUERY
:
52 case PIPE_CAP_TEXTURE_SHADOW_MAP
:
54 case PIPE_CAP_MAX_TEXTURE_2D_LEVELS
:
56 case PIPE_CAP_MAX_TEXTURE_3D_LEVELS
:
58 case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS
:
61 NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param
);
67 nv50_screen_get_paramf(struct pipe_screen
*pscreen
, int param
)
70 case PIPE_CAP_MAX_LINE_WIDTH
:
71 case PIPE_CAP_MAX_LINE_WIDTH_AA
:
73 case PIPE_CAP_MAX_POINT_WIDTH
:
74 case PIPE_CAP_MAX_POINT_WIDTH_AA
:
76 case PIPE_CAP_MAX_TEXTURE_ANISOTROPY
:
78 case PIPE_CAP_MAX_TEXTURE_LOD_BIAS
:
81 NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param
);
87 nv50_screen_destroy(struct pipe_screen
*pscreen
)
93 nv50_screen_create(struct pipe_winsys
*ws
, struct nouveau_winsys
*nvws
,
96 struct nv50_screen
*screen
= CALLOC_STRUCT(nv50_screen
);
101 screen
->chipset
= chipset
;
104 screen
->pipe
.winsys
= ws
;
106 screen
->pipe
.destroy
= nv50_screen_destroy
;
108 screen
->pipe
.get_name
= nv50_screen_get_name
;
109 screen
->pipe
.get_vendor
= nv50_screen_get_vendor
;
110 screen
->pipe
.get_param
= nv50_screen_get_param
;
111 screen
->pipe
.get_paramf
= nv50_screen_get_paramf
;
113 screen
->pipe
.is_format_supported
= nv50_screen_is_format_supported
;
115 nv50_screen_init_miptree_functions(&screen
->pipe
);
117 return &screen
->pipe
;