[Mesa-dev] [PATCH 1/7] gallium: Constify several pipe_screen get_* functions
Tom Stellard
tom at stellard.net
Mon Jul 15 12:41:57 PDT 2013
Has anyone had a chance to look at this series?
-Tom
On Tue, Jul 09, 2013 at 09:21:38PM -0700, Tom Stellard wrote:
> From: Tom Stellard <thomas.stellard at amd.com>
>
> This patches adds the const qualifier to the struct pipe_screen *
> argument to the following functions:
>
> pipe_screen::get_name()
> pipe_screen::get_vendor()
> pipe_screen::get_param()
> pipe_screen::get_paramf()
> pipe_screen::get_shader_param()
> pipe_screen::get_video_param()
> pipe_screen::get_compute_param()
> ---
> src/gallium/auxiliary/vl/vl_decoder.c | 3 ++-
> src/gallium/auxiliary/vl/vl_decoder.h | 3 ++-
> src/gallium/auxiliary/vl/vl_video_buffer.c | 2 +-
> src/gallium/auxiliary/vl/vl_video_buffer.h | 2 +-
> src/gallium/drivers/freedreno/freedreno_screen.c | 12 +++++-----
> src/gallium/drivers/freedreno/freedreno_screen.h | 6 +++++
> src/gallium/drivers/galahad/glhd_screen.c | 20 ++++++++--------
> src/gallium/drivers/galahad/glhd_screen.h | 7 ++++++
> src/gallium/drivers/i915/i915_screen.c | 14 ++++++------
> src/gallium/drivers/i915/i915_screen.h | 6 +++++
> src/gallium/drivers/identity/id_screen.c | 20 ++++++++--------
> src/gallium/drivers/identity/id_screen.h | 6 +++++
> src/gallium/drivers/ilo/ilo_screen.c | 18 +++++++--------
> src/gallium/drivers/ilo/ilo_screen.h | 6 +++++
> src/gallium/drivers/llvmpipe/lp_screen.c | 10 ++++----
> src/gallium/drivers/noop/noop_pipe.c | 10 ++++----
> src/gallium/drivers/nouveau/nouveau_screen.c | 6 ++---
> src/gallium/drivers/nouveau/nouveau_screen.h | 6 +++++
> src/gallium/drivers/nouveau/nouveau_video.c | 2 +-
> src/gallium/drivers/nv30/nv30_screen.c | 12 +++++-----
> src/gallium/drivers/nv30/nv30_screen.h | 6 +++++
> src/gallium/drivers/nv50/nv50_screen.c | 14 ++++++------
> src/gallium/drivers/nv50/nv50_screen.h | 6 +++++
> src/gallium/drivers/nvc0/nvc0_context.h | 2 +-
> src/gallium/drivers/nvc0/nvc0_screen.c | 14 ++++++------
> src/gallium/drivers/nvc0/nvc0_screen.h | 7 ++++++
> src/gallium/drivers/nvc0/nvc0_video.c | 4 ++--
> src/gallium/drivers/r300/r300_screen.c | 20 ++++++++--------
> src/gallium/drivers/r300/r300_screen.h | 5 ++++
> src/gallium/drivers/r600/r600_pipe.c | 16 ++++++-------
> src/gallium/drivers/r600/r600_pipe.h | 2 +-
> src/gallium/drivers/r600/r600_uvd.c | 2 +-
> src/gallium/drivers/radeon/radeon_uvd.c | 2 +-
> src/gallium/drivers/radeon/radeon_uvd.h | 2 +-
> src/gallium/drivers/radeonsi/radeonsi_pipe.c | 20 ++++++++--------
> src/gallium/drivers/rbug/rbug_screen.c | 20 ++++++++--------
> src/gallium/drivers/rbug/rbug_screen.h | 7 ++++++
> src/gallium/drivers/softpipe/sp_screen.c | 14 ++++++------
> src/gallium/drivers/softpipe/sp_screen.h | 5 ++++
> src/gallium/drivers/svga/svga_screen.c | 24 ++++++++++++-------
> src/gallium/drivers/svga/svga_screen.h | 9 ++++++++
> src/gallium/drivers/trace/tr_screen.c | 28 +++++++++++++++--------
> src/gallium/drivers/trace/tr_screen.h | 2 ++
> src/gallium/include/pipe/p_screen.h | 14 ++++++------
> src/gallium/state_trackers/clover/core/device.hpp | 1 +
> 45 files changed, 260 insertions(+), 157 deletions(-)
>
> diff --git a/src/gallium/auxiliary/vl/vl_decoder.c b/src/gallium/auxiliary/vl/vl_decoder.c
> index d6909cb..386bee9 100644
> --- a/src/gallium/auxiliary/vl/vl_decoder.c
> +++ b/src/gallium/auxiliary/vl/vl_decoder.c
> @@ -33,7 +33,8 @@
> #include "vl_mpeg12_decoder.h"
>
> bool
> -vl_profile_supported(struct pipe_screen *screen, enum pipe_video_profile profile)
> +vl_profile_supported(const struct pipe_screen *screen,
> + enum pipe_video_profile profile)
> {
> assert(screen);
> switch (u_reduce_video_profile(profile)) {
> diff --git a/src/gallium/auxiliary/vl/vl_decoder.h b/src/gallium/auxiliary/vl/vl_decoder.h
> index 8fa6527..8ebf762 100644
> --- a/src/gallium/auxiliary/vl/vl_decoder.h
> +++ b/src/gallium/auxiliary/vl/vl_decoder.h
> @@ -35,7 +35,8 @@
> * check if a given profile is supported with shader based decoding
> */
> bool
> -vl_profile_supported(struct pipe_screen *screen, enum pipe_video_profile profile);
> +vl_profile_supported(const struct pipe_screen *screen,
> + enum pipe_video_profile profile);
>
> /**
> * standard implementation of pipe->create_video_decoder
> diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.c b/src/gallium/auxiliary/vl/vl_video_buffer.c
> index 6ef95e4..4dd2c49 100644
> --- a/src/gallium/auxiliary/vl/vl_video_buffer.c
> +++ b/src/gallium/auxiliary/vl/vl_video_buffer.c
> @@ -175,7 +175,7 @@ vl_video_buffer_is_format_supported(struct pipe_screen *screen,
> }
>
> unsigned
> -vl_video_buffer_max_size(struct pipe_screen *screen)
> +vl_video_buffer_max_size(const struct pipe_screen *screen)
> {
> uint32_t max_2d_texture_level;
>
> diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.h b/src/gallium/auxiliary/vl/vl_video_buffer.h
> index 178f429..9d192b2 100644
> --- a/src/gallium/auxiliary/vl/vl_video_buffer.h
> +++ b/src/gallium/auxiliary/vl/vl_video_buffer.h
> @@ -64,7 +64,7 @@ vl_video_buffer_plane_order(enum pipe_format format);
> * get maximum size of video buffers
> */
> unsigned
> -vl_video_buffer_max_size(struct pipe_screen *screen);
> +vl_video_buffer_max_size(const struct pipe_screen *screen);
>
> /**
> * check if video buffer format is supported for a codec/profile
> diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c
> index ff45b3e..372f87d 100644
> --- a/src/gallium/drivers/freedreno/freedreno_screen.c
> +++ b/src/gallium/drivers/freedreno/freedreno_screen.c
> @@ -68,16 +68,16 @@ DEBUG_GET_ONCE_FLAGS_OPTION(fd_mesa_debug, "FD_MESA_DEBUG", debug_options, 0)
> int fd_mesa_debug = 0;
>
> static const char *
> -fd_screen_get_name(struct pipe_screen *pscreen)
> +fd_screen_get_name(const struct pipe_screen *pscreen)
> {
> static char buffer[128];
> util_snprintf(buffer, sizeof(buffer), "FD%03d",
> - fd_screen(pscreen)->device_id);
> + fd_screen_const(pscreen)->device_id);
> return buffer;
> }
>
> static const char *
> -fd_screen_get_vendor(struct pipe_screen *pscreen)
> +fd_screen_get_vendor(const struct pipe_screen *pscreen)
> {
> return "freedreno";
> }
> @@ -131,7 +131,7 @@ TODO either move caps to a2xx/a3xx specific code, or maybe have some
> tables for things that differ if the delta is not too much..
> */
> static int
> -fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> +fd_screen_get_param(const struct pipe_screen *pscreen, enum pipe_cap param)
> {
> /* this is probably not totally correct.. but it's a start: */
> switch (param) {
> @@ -234,7 +234,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> }
>
> static float
> -fd_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> +fd_screen_get_paramf(const struct pipe_screen *pscreen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> @@ -258,7 +258,7 @@ fd_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> }
>
> static int
> -fd_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> +fd_screen_get_shader_param(const struct pipe_screen *pscreen, unsigned shader,
> enum pipe_shader_cap param)
> {
> switch(shader)
> diff --git a/src/gallium/drivers/freedreno/freedreno_screen.h b/src/gallium/drivers/freedreno/freedreno_screen.h
> index 93501e7..1d63b5a 100644
> --- a/src/gallium/drivers/freedreno/freedreno_screen.h
> +++ b/src/gallium/drivers/freedreno/freedreno_screen.h
> @@ -58,6 +58,12 @@ fd_screen(struct pipe_screen *pscreen)
> return (struct fd_screen *)pscreen;
> }
>
> +static INLINE const struct fd_screen *
> +fd_screen_const(const struct pipe_screen *pscreen)
> +{
> + return (const struct fd_screen *)pscreen;
> +}
> +
> boolean fd_screen_bo_get_handle(struct pipe_screen *pscreen,
> struct fd_bo *bo,
> unsigned stride,
> diff --git a/src/gallium/drivers/galahad/glhd_screen.c b/src/gallium/drivers/galahad/glhd_screen.c
> index 16a5ff1..0d1aace 100644
> --- a/src/gallium/drivers/galahad/glhd_screen.c
> +++ b/src/gallium/drivers/galahad/glhd_screen.c
> @@ -52,28 +52,28 @@ galahad_screen_destroy(struct pipe_screen *_screen)
> }
>
> static const char *
> -galahad_screen_get_name(struct pipe_screen *_screen)
> +galahad_screen_get_name(const struct pipe_screen *_screen)
> {
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> + const struct galahad_screen *glhd_screen = galahad_screen_const(_screen);
> struct pipe_screen *screen = glhd_screen->screen;
>
> return screen->get_name(screen);
> }
>
> static const char *
> -galahad_screen_get_vendor(struct pipe_screen *_screen)
> +galahad_screen_get_vendor(const struct pipe_screen *_screen)
> {
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> + const struct galahad_screen *glhd_screen = galahad_screen_const(_screen);
> struct pipe_screen *screen = glhd_screen->screen;
>
> return screen->get_vendor(screen);
> }
>
> static int
> -galahad_screen_get_param(struct pipe_screen *_screen,
> +galahad_screen_get_param(const struct pipe_screen *_screen,
> enum pipe_cap param)
> {
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> + const struct galahad_screen *glhd_screen = galahad_screen_const(_screen);
> struct pipe_screen *screen = glhd_screen->screen;
>
> return screen->get_param(screen,
> @@ -81,10 +81,10 @@ galahad_screen_get_param(struct pipe_screen *_screen,
> }
>
> static int
> -galahad_screen_get_shader_param(struct pipe_screen *_screen,
> +galahad_screen_get_shader_param(const struct pipe_screen *_screen,
> unsigned shader, enum pipe_shader_cap param)
> {
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> + const struct galahad_screen *glhd_screen = galahad_screen_const(_screen);
> struct pipe_screen *screen = glhd_screen->screen;
>
> return screen->get_shader_param(screen, shader,
> @@ -92,10 +92,10 @@ galahad_screen_get_shader_param(struct pipe_screen *_screen,
> }
>
> static float
> -galahad_screen_get_paramf(struct pipe_screen *_screen,
> +galahad_screen_get_paramf(const struct pipe_screen *_screen,
> enum pipe_capf param)
> {
> - struct galahad_screen *glhd_screen = galahad_screen(_screen);
> + const struct galahad_screen *glhd_screen = galahad_screen_const(_screen);
> struct pipe_screen *screen = glhd_screen->screen;
>
> return screen->get_paramf(screen,
> diff --git a/src/gallium/drivers/galahad/glhd_screen.h b/src/gallium/drivers/galahad/glhd_screen.h
> index 7862f4a..8b4ff03 100644
> --- a/src/gallium/drivers/galahad/glhd_screen.h
> +++ b/src/gallium/drivers/galahad/glhd_screen.h
> @@ -45,4 +45,11 @@ galahad_screen(struct pipe_screen *screen)
> return (struct galahad_screen *)screen;
> }
>
> +static INLINE const struct galahad_screen *
> +galahad_screen_const(const struct pipe_screen *screen)
> +{
> + return (const struct galahad_screen *)screen;
> +}
> +
> +
> #endif /* GLHD_SCREEN_H */
> diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c
> index 3c751c5..9139644 100644
> --- a/src/gallium/drivers/i915/i915_screen.c
> +++ b/src/gallium/drivers/i915/i915_screen.c
> @@ -48,18 +48,18 @@
>
>
> static const char *
> -i915_get_vendor(struct pipe_screen *screen)
> +i915_get_vendor(const struct pipe_screen *screen)
> {
> return "VMware, Inc.";
> }
>
> static const char *
> -i915_get_name(struct pipe_screen *screen)
> +i915_get_name(const struct pipe_screen *screen)
> {
> static char buffer[128];
> const char *chipset;
>
> - switch (i915_screen(screen)->iws->pci_id) {
> + switch (i915_screen_const(screen)->iws->pci_id) {
> case PCI_CHIP_I915_G:
> chipset = "915G";
> break;
> @@ -100,7 +100,7 @@ i915_get_name(struct pipe_screen *screen)
> }
>
> static int
> -i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap cap)
> +i915_get_shader_param(const struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap cap)
> {
> switch(shader) {
> case PIPE_SHADER_VERTEX:
> @@ -164,9 +164,9 @@ i915_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_sha
> }
>
> static int
> -i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
> +i915_get_param(const struct pipe_screen *screen, enum pipe_cap cap)
> {
> - struct i915_screen *is = i915_screen(screen);
> + const struct i915_screen *is = i915_screen_const(screen);
>
> switch (cap) {
> /* Supported features (boolean caps). */
> @@ -271,7 +271,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
> }
>
> static float
> -i915_get_paramf(struct pipe_screen *screen, enum pipe_capf cap)
> +i915_get_paramf(const struct pipe_screen *screen, enum pipe_capf cap)
> {
> switch(cap) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> diff --git a/src/gallium/drivers/i915/i915_screen.h b/src/gallium/drivers/i915/i915_screen.h
> index 9f2004e..89eabe5 100644
> --- a/src/gallium/drivers/i915/i915_screen.h
> +++ b/src/gallium/drivers/i915/i915_screen.h
> @@ -65,6 +65,12 @@ i915_screen(struct pipe_screen *pscreen)
> return (struct i915_screen *) pscreen;
> }
>
> +static INLINE const struct i915_screen *
> +i915_screen_const(const struct pipe_screen *pscreen)
> +{
> + return (const struct i915_screen *) pscreen;
> +}
> +
> boolean
> i915_is_format_supported(struct pipe_screen *screen,
> enum pipe_format format,
> diff --git a/src/gallium/drivers/identity/id_screen.c b/src/gallium/drivers/identity/id_screen.c
> index 26df7f6..884d195 100644
> --- a/src/gallium/drivers/identity/id_screen.c
> +++ b/src/gallium/drivers/identity/id_screen.c
> @@ -48,28 +48,28 @@ identity_screen_destroy(struct pipe_screen *_screen)
> }
>
> static const char *
> -identity_screen_get_name(struct pipe_screen *_screen)
> +identity_screen_get_name(const struct pipe_screen *_screen)
> {
> - struct identity_screen *id_screen = identity_screen(_screen);
> + const struct identity_screen *id_screen = identity_screen_const(_screen);
> struct pipe_screen *screen = id_screen->screen;
>
> return screen->get_name(screen);
> }
>
> static const char *
> -identity_screen_get_vendor(struct pipe_screen *_screen)
> +identity_screen_get_vendor(const struct pipe_screen *_screen)
> {
> - struct identity_screen *id_screen = identity_screen(_screen);
> + const struct identity_screen *id_screen = identity_screen_const(_screen);
> struct pipe_screen *screen = id_screen->screen;
>
> return screen->get_vendor(screen);
> }
>
> static int
> -identity_screen_get_param(struct pipe_screen *_screen,
> +identity_screen_get_param(const struct pipe_screen *_screen,
> enum pipe_cap param)
> {
> - struct identity_screen *id_screen = identity_screen(_screen);
> + const struct identity_screen *id_screen = identity_screen_const(_screen);
> struct pipe_screen *screen = id_screen->screen;
>
> return screen->get_param(screen,
> @@ -77,10 +77,10 @@ identity_screen_get_param(struct pipe_screen *_screen,
> }
>
> static int
> -identity_screen_get_shader_param(struct pipe_screen *_screen,
> +identity_screen_get_shader_param(const struct pipe_screen *_screen,
> unsigned shader, enum pipe_shader_cap param)
> {
> - struct identity_screen *id_screen = identity_screen(_screen);
> + const struct identity_screen *id_screen = identity_screen_const(_screen);
> struct pipe_screen *screen = id_screen->screen;
>
> return screen->get_shader_param(screen, shader,
> @@ -88,10 +88,10 @@ identity_screen_get_shader_param(struct pipe_screen *_screen,
> }
>
> static float
> -identity_screen_get_paramf(struct pipe_screen *_screen,
> +identity_screen_get_paramf(const struct pipe_screen *_screen,
> enum pipe_capf param)
> {
> - struct identity_screen *id_screen = identity_screen(_screen);
> + const struct identity_screen *id_screen = identity_screen_const(_screen);
> struct pipe_screen *screen = id_screen->screen;
>
> return screen->get_paramf(screen,
> diff --git a/src/gallium/drivers/identity/id_screen.h b/src/gallium/drivers/identity/id_screen.h
> index 2c4f129..3fbca36 100644
> --- a/src/gallium/drivers/identity/id_screen.h
> +++ b/src/gallium/drivers/identity/id_screen.h
> @@ -45,4 +45,10 @@ identity_screen(struct pipe_screen *screen)
> return (struct identity_screen *)screen;
> }
>
> +static INLINE const struct identity_screen *
> +identity_screen_const(const struct pipe_screen *screen)
> +{
> + return (const struct identity_screen *)screen;
> +}
> +
> #endif /* ID_SCREEN_H */
> diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c
> index 1e3d096..7b78cca 100644
> --- a/src/gallium/drivers/ilo/ilo_screen.c
> +++ b/src/gallium/drivers/ilo/ilo_screen.c
> @@ -52,7 +52,7 @@ static const struct debug_named_value ilo_debug_flags[] = {
> };
>
> static float
> -ilo_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> +ilo_get_paramf(const struct pipe_screen *screen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> @@ -86,7 +86,7 @@ ilo_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> }
>
> static int
> -ilo_get_shader_param(struct pipe_screen *screen, unsigned shader,
> +ilo_get_shader_param(const struct pipe_screen *screen, unsigned shader,
> enum pipe_shader_cap param)
> {
> switch (shader) {
> @@ -150,7 +150,7 @@ ilo_get_shader_param(struct pipe_screen *screen, unsigned shader,
> }
>
> static int
> -ilo_get_video_param(struct pipe_screen *screen,
> +ilo_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> @@ -177,7 +177,7 @@ ilo_get_video_param(struct pipe_screen *screen,
> }
>
> static int
> -ilo_get_compute_param(struct pipe_screen *screen,
> +ilo_get_compute_param(const struct pipe_screen *screen,
> enum pipe_compute_cap param,
> void *ret)
> {
> @@ -276,9 +276,9 @@ ilo_get_compute_param(struct pipe_screen *screen,
> }
>
> static int
> -ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
> +ilo_get_param(const struct pipe_screen *screen, enum pipe_cap param)
> {
> - struct ilo_screen *is = ilo_screen(screen);
> + const struct ilo_screen *is = ilo_screen_const(screen);
>
> switch (param) {
> case PIPE_CAP_NPOT_TEXTURES:
> @@ -427,15 +427,15 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
> }
>
> static const char *
> -ilo_get_vendor(struct pipe_screen *screen)
> +ilo_get_vendor(const struct pipe_screen *screen)
> {
> return "LunarG, Inc.";
> }
>
> static const char *
> -ilo_get_name(struct pipe_screen *screen)
> +ilo_get_name(const struct pipe_screen *screen)
> {
> - struct ilo_screen *is = ilo_screen(screen);
> + const struct ilo_screen *is = ilo_screen_const(screen);
> const char *chipset;
>
> /* stolen from classic i965 */
> diff --git a/src/gallium/drivers/ilo/ilo_screen.h b/src/gallium/drivers/ilo/ilo_screen.h
> index 4c403f0..37f63a0 100644
> --- a/src/gallium/drivers/ilo/ilo_screen.h
> +++ b/src/gallium/drivers/ilo/ilo_screen.h
> @@ -54,6 +54,12 @@ ilo_screen(struct pipe_screen *screen)
> return (struct ilo_screen *) screen;
> }
>
> +static inline const struct ilo_screen *
> +ilo_screen_const(const struct pipe_screen *screen)
> +{
> + return (struct ilo_screen *) screen;
> +}
> +
> static inline struct ilo_fence *
> ilo_fence(struct pipe_fence_handle *fence)
> {
> diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
> index 1fed537..4b77222 100644
> --- a/src/gallium/drivers/llvmpipe/lp_screen.c
> +++ b/src/gallium/drivers/llvmpipe/lp_screen.c
> @@ -85,14 +85,14 @@ static const struct debug_named_value lp_perf_flags[] = {
>
>
> static const char *
> -llvmpipe_get_vendor(struct pipe_screen *screen)
> +llvmpipe_get_vendor(const struct pipe_screen *screen)
> {
> return "VMware, Inc.";
> }
>
>
> static const char *
> -llvmpipe_get_name(struct pipe_screen *screen)
> +llvmpipe_get_name(const struct pipe_screen *screen)
> {
> static char buf[100];
> util_snprintf(buf, sizeof(buf), "llvmpipe (LLVM %u.%u, %u bits)",
> @@ -103,7 +103,7 @@ llvmpipe_get_name(struct pipe_screen *screen)
>
>
> static int
> -llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
> +llvmpipe_get_param(const struct pipe_screen *screen, enum pipe_cap param)
> {
> switch (param) {
> case PIPE_CAP_MAX_COMBINED_SAMPLERS:
> @@ -238,7 +238,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
> }
>
> static int
> -llvmpipe_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> +llvmpipe_get_shader_param(const struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> {
> switch(shader)
> {
> @@ -268,7 +268,7 @@ llvmpipe_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe
> }
>
> static float
> -llvmpipe_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> +llvmpipe_get_paramf(const struct pipe_screen *screen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> diff --git a/src/gallium/drivers/noop/noop_pipe.c b/src/gallium/drivers/noop/noop_pipe.c
> index ac837b1..cedf8b0 100644
> --- a/src/gallium/drivers/noop/noop_pipe.c
> +++ b/src/gallium/drivers/noop/noop_pipe.c
> @@ -292,24 +292,24 @@ static void noop_flush_frontbuffer(struct pipe_screen *_screen,
> {
> }
>
> -static const char *noop_get_vendor(struct pipe_screen* pscreen)
> +static const char *noop_get_vendor(const struct pipe_screen* pscreen)
> {
> return "X.Org";
> }
>
> -static const char *noop_get_name(struct pipe_screen* pscreen)
> +static const char *noop_get_name(const struct pipe_screen* pscreen)
> {
> return "NOOP";
> }
>
> -static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> +static int noop_get_param(const struct pipe_screen* pscreen, enum pipe_cap param)
> {
> struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
>
> return screen->get_param(screen, param);
> }
>
> -static float noop_get_paramf(struct pipe_screen* pscreen,
> +static float noop_get_paramf(const struct pipe_screen* pscreen,
> enum pipe_capf param)
> {
> struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
> @@ -317,7 +317,7 @@ static float noop_get_paramf(struct pipe_screen* pscreen,
> return screen->get_paramf(screen, param);
> }
>
> -static int noop_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> +static int noop_get_shader_param(const struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> {
> struct pipe_screen *screen = ((struct noop_pipe_screen*)pscreen)->oscreen;
>
> diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
> index d129a55..d380b86 100644
> --- a/src/gallium/drivers/nouveau/nouveau_screen.c
> +++ b/src/gallium/drivers/nouveau/nouveau_screen.c
> @@ -28,9 +28,9 @@
> int nouveau_mesa_debug = 0;
>
> static const char *
> -nouveau_screen_get_name(struct pipe_screen *pscreen)
> +nouveau_screen_get_name(const struct pipe_screen *pscreen)
> {
> - struct nouveau_device *dev = nouveau_screen(pscreen)->device;
> + struct nouveau_device *dev = nouveau_screen_const(pscreen)->device;
> static char buffer[128];
>
> util_snprintf(buffer, sizeof(buffer), "NV%02X", dev->chipset);
> @@ -38,7 +38,7 @@ nouveau_screen_get_name(struct pipe_screen *pscreen)
> }
>
> static const char *
> -nouveau_screen_get_vendor(struct pipe_screen *pscreen)
> +nouveau_screen_get_vendor(const struct pipe_screen *pscreen)
> {
> return "nouveau";
> }
> diff --git a/src/gallium/drivers/nouveau/nouveau_screen.h b/src/gallium/drivers/nouveau/nouveau_screen.h
> index 7f15d10..e941450 100644
> --- a/src/gallium/drivers/nouveau/nouveau_screen.h
> +++ b/src/gallium/drivers/nouveau/nouveau_screen.h
> @@ -107,6 +107,12 @@ nouveau_screen(struct pipe_screen *pscreen)
> return (struct nouveau_screen *)pscreen;
> }
>
> +static INLINE const struct nouveau_screen *
> +nouveau_screen_const(const struct pipe_screen *pscreen)
> +{
> + return (const struct nouveau_screen *)pscreen;
> +}
> +
> boolean
> nouveau_screen_bo_get_handle(struct pipe_screen *pscreen,
> struct nouveau_bo *bo,
> diff --git a/src/gallium/drivers/nouveau/nouveau_video.c b/src/gallium/drivers/nouveau/nouveau_video.c
> index 9357508..69efcfd 100644
> --- a/src/gallium/drivers/nouveau/nouveau_video.c
> +++ b/src/gallium/drivers/nouveau/nouveau_video.c
> @@ -842,7 +842,7 @@ error:
> }
>
> static int
> -nouveau_screen_get_video_param(struct pipe_screen *pscreen,
> +nouveau_screen_get_video_param(const struct pipe_screen *pscreen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> diff --git a/src/gallium/drivers/nv30/nv30_screen.c b/src/gallium/drivers/nv30/nv30_screen.c
> index 07ffc80..3d173d5 100644
> --- a/src/gallium/drivers/nv30/nv30_screen.c
> +++ b/src/gallium/drivers/nv30/nv30_screen.c
> @@ -45,9 +45,9 @@
> #define CURIE_4497_CHIPSET6X 0x00000088
>
> static int
> -nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> +nv30_screen_get_param(const struct pipe_screen *pscreen, enum pipe_cap param)
> {
> - struct nv30_screen *screen = nv30_screen(pscreen);
> + const struct nv30_screen *screen = nv30_screen_const(pscreen);
> struct nouveau_object *eng3d = screen->eng3d;
>
> switch (param) {
> @@ -137,9 +137,9 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> }
>
> static float
> -nv30_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> +nv30_screen_get_paramf(const struct pipe_screen *pscreen, enum pipe_capf param)
> {
> - struct nv30_screen *screen = nv30_screen(pscreen);
> + const struct nv30_screen *screen = nv30_screen_const(pscreen);
> struct nouveau_object *eng3d = screen->eng3d;
>
> switch (param) {
> @@ -160,10 +160,10 @@ nv30_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> }
>
> static int
> -nv30_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> +nv30_screen_get_shader_param(const struct pipe_screen *pscreen, unsigned shader,
> enum pipe_shader_cap param)
> {
> - struct nv30_screen *screen = nv30_screen(pscreen);
> + const struct nv30_screen *screen = nv30_screen_const(pscreen);
> struct nouveau_object *eng3d = screen->eng3d;
>
> switch (shader) {
> diff --git a/src/gallium/drivers/nv30/nv30_screen.h b/src/gallium/drivers/nv30/nv30_screen.h
> index 2ee087e..663acfe 100644
> --- a/src/gallium/drivers/nv30/nv30_screen.h
> +++ b/src/gallium/drivers/nv30/nv30_screen.h
> @@ -48,4 +48,10 @@ nv30_screen(struct pipe_screen *pscreen)
> return (struct nv30_screen *)pscreen;
> }
>
> +static INLINE const struct nv30_screen *
> +nv30_screen_const(const struct pipe_screen *pscreen)
> +{
> + return (const struct nv30_screen *)pscreen;
> +}
> +
> #endif
> diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
> index 5c57aa2..5ccf1b7 100644
> --- a/src/gallium/drivers/nv50/nv50_screen.c
> +++ b/src/gallium/drivers/nv50/nv50_screen.c
> @@ -78,9 +78,9 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
> }
>
> static int
> -nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> +nv50_screen_get_param(const struct pipe_screen *pscreen, enum pipe_cap param)
> {
> - const uint16_t class_3d = nouveau_screen(pscreen)->class_3d;
> + const uint16_t class_3d = nouveau_screen_const(pscreen)->class_3d;
>
> switch (param) {
> case PIPE_CAP_MAX_COMBINED_SAMPLERS:
> @@ -108,7 +108,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> case PIPE_CAP_MAX_TEXTURE_BUFFER_SIZE:
> return 65536;
> case PIPE_CAP_SEAMLESS_CUBE_MAP:
> - return nv50_screen(pscreen)->tesla->oclass >= NVA0_3D_CLASS;
> + return nv50_screen_const(pscreen)->tesla->oclass >= NVA0_3D_CLASS;
> case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
> return 0;
> case PIPE_CAP_CUBE_MAP_ARRAY:
> @@ -147,7 +147,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> case PIPE_CAP_INDEP_BLEND_ENABLE:
> return 1;
> case PIPE_CAP_INDEP_BLEND_FUNC:
> - return nv50_screen(pscreen)->tesla->oclass >= NVA3_3D_CLASS;
> + return nv50_screen_const(pscreen)->tesla->oclass >= NVA3_3D_CLASS;
> case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
> case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
> return 1;
> @@ -196,7 +196,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> }
>
> static int
> -nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> +nv50_screen_get_shader_param(const struct pipe_screen *pscreen, unsigned shader,
> enum pipe_shader_cap param)
> {
> switch (shader) {
> @@ -235,7 +235,7 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> case PIPE_SHADER_CAP_MAX_PREDS:
> return 0;
> case PIPE_SHADER_CAP_MAX_TEMPS:
> - return nv50_screen(pscreen)->max_tls_space / ONE_TEMP_SIZE;
> + return nv50_screen_const(pscreen)->max_tls_space / ONE_TEMP_SIZE;
> case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
> return 1;
> case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED:
> @@ -253,7 +253,7 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> }
>
> static float
> -nv50_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> +nv50_screen_get_paramf(const struct pipe_screen *pscreen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h
> index 2e8af43..bb99854 100644
> --- a/src/gallium/drivers/nv50/nv50_screen.h
> +++ b/src/gallium/drivers/nv50/nv50_screen.h
> @@ -75,6 +75,12 @@ nv50_screen(struct pipe_screen *screen)
> return (struct nv50_screen *)screen;
> }
>
> +static INLINE const struct nv50_screen *
> +nv50_screen_const(const struct pipe_screen *screen)
> +{
> + return (const struct nv50_screen *)screen;
> +}
> +
> boolean nv50_blitter_create(struct nv50_screen *);
> void nv50_blitter_destroy(struct nv50_screen *);
>
> diff --git a/src/gallium/drivers/nvc0/nvc0_context.h b/src/gallium/drivers/nvc0/nvc0_context.h
> index 0431b89..f62f147 100644
> --- a/src/gallium/drivers/nvc0/nvc0_context.h
> +++ b/src/gallium/drivers/nvc0/nvc0_context.h
> @@ -347,7 +347,7 @@ nvc0_video_buffer_create(struct pipe_context *pipe,
> const struct pipe_video_buffer *templat);
>
> int
> -nvc0_screen_get_video_param(struct pipe_screen *pscreen,
> +nvc0_screen_get_video_param(const struct pipe_screen *pscreen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param);
>
> diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c
> index b5abee3..370770f 100644
> --- a/src/gallium/drivers/nvc0/nvc0_screen.c
> +++ b/src/gallium/drivers/nvc0/nvc0_screen.c
> @@ -76,9 +76,9 @@ nvc0_screen_video_supported(struct pipe_screen *screen,
>
>
> static int
> -nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> +nvc0_screen_get_param(const struct pipe_screen *pscreen, enum pipe_cap param)
> {
> - const uint16_t class_3d = nouveau_screen(pscreen)->class_3d;
> + const uint16_t class_3d = nouveau_screen_const(pscreen)->class_3d;
>
> switch (param) {
> case PIPE_CAP_MAX_COMBINED_SAMPLERS:
> @@ -186,10 +186,10 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
> }
>
> static int
> -nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> +nvc0_screen_get_shader_param(const struct pipe_screen *pscreen, unsigned shader,
> enum pipe_shader_cap param)
> {
> - const uint16_t class_3d = nouveau_screen(pscreen)->class_3d;
> + const uint16_t class_3d = nouveau_screen_const(pscreen)->class_3d;
>
> switch (shader) {
> case PIPE_SHADER_VERTEX:
> @@ -271,7 +271,7 @@ nvc0_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
> }
>
> static float
> -nvc0_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> +nvc0_screen_get_paramf(const struct pipe_screen *pscreen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> @@ -292,11 +292,11 @@ nvc0_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_capf param)
> }
>
> static int
> -nvc0_screen_get_compute_param(struct pipe_screen *pscreen,
> +nvc0_screen_get_compute_param(const struct pipe_screen *pscreen,
> enum pipe_compute_cap param, void *data)
> {
> uint64_t *data64 = (uint64_t *)data;
> - const uint16_t obj_class = nvc0_screen(pscreen)->compute->oclass;
> + const uint16_t obj_class = nvc0_screen_const(pscreen)->compute->oclass;
>
> switch (param) {
> case PIPE_COMPUTE_CAP_GRID_DIMENSION:
> diff --git a/src/gallium/drivers/nvc0/nvc0_screen.h b/src/gallium/drivers/nvc0/nvc0_screen.h
> index 826014e..6e054db 100644
> --- a/src/gallium/drivers/nvc0/nvc0_screen.h
> +++ b/src/gallium/drivers/nvc0/nvc0_screen.h
> @@ -84,6 +84,13 @@ nvc0_screen(struct pipe_screen *screen)
> return (struct nvc0_screen *)screen;
> }
>
> +static INLINE const struct nvc0_screen *
> +nvc0_screen_const(const struct pipe_screen *screen)
> +{
> + return (const struct nvc0_screen *)screen;
> +}
> +
> +
>
> /* Performance counter queries:
> */
> diff --git a/src/gallium/drivers/nvc0/nvc0_video.c b/src/gallium/drivers/nvc0/nvc0_video.c
> index ad40b94..50a0f3e 100644
> --- a/src/gallium/drivers/nvc0/nvc0_video.c
> +++ b/src/gallium/drivers/nvc0/nvc0_video.c
> @@ -29,7 +29,7 @@
> #include <fcntl.h>
>
> int
> -nvc0_screen_get_video_param(struct pipe_screen *pscreen,
> +nvc0_screen_get_video_param(const struct pipe_screen *pscreen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> @@ -40,7 +40,7 @@ nvc0_screen_get_video_param(struct pipe_screen *pscreen,
> return 1;
> case PIPE_VIDEO_CAP_MAX_WIDTH:
> case PIPE_VIDEO_CAP_MAX_HEIGHT:
> - return nouveau_screen(pscreen)->device->chipset < 0xd0 ? 2048 : 4096;
> + return nouveau_screen_const(pscreen)->device->chipset < 0xd0 ? 2048 : 4096;
> case PIPE_VIDEO_CAP_PREFERED_FORMAT:
> return PIPE_FORMAT_NV12;
> case PIPE_VIDEO_CAP_SUPPORTS_INTERLACED:
> diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
> index 9c5d5f2..d5e54db 100644
> --- a/src/gallium/drivers/r300/r300_screen.c
> +++ b/src/gallium/drivers/r300/r300_screen.c
> @@ -42,7 +42,7 @@
> * ...I should have just put "Corbin Simpson", but I'm not that cool.
> *
> * (Or egotistical. Yet.) */
> -static const char* r300_get_vendor(struct pipe_screen* pscreen)
> +static const char* r300_get_vendor(const struct pipe_screen* pscreen)
> {
> return "X.Org R300 Project";
> }
> @@ -74,16 +74,16 @@ static const char* chip_families[] = {
> "ATI RV570"
> };
>
> -static const char* r300_get_name(struct pipe_screen* pscreen)
> +static const char* r300_get_name(const struct pipe_screen* pscreen)
> {
> - struct r300_screen* r300screen = r300_screen(pscreen);
> + const struct r300_screen* r300screen = r300_screen_const(pscreen);
>
> return chip_families[r300screen->caps.family];
> }
>
> -static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> +static int r300_get_param(const struct pipe_screen* pscreen, enum pipe_cap param)
> {
> - struct r300_screen* r300screen = r300_screen(pscreen);
> + const struct r300_screen* r300screen = r300_screen_const(pscreen);
> boolean is_r500 = r300screen->caps.is_r500;
>
> switch (param) {
> @@ -194,9 +194,9 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> return 0;
> }
>
> -static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum pipe_shader_cap param)
> +static int r300_get_shader_param(const struct pipe_screen *pscreen, unsigned shader, enum pipe_shader_cap param)
> {
> - struct r300_screen* r300screen = r300_screen(pscreen);
> + const struct r300_screen* r300screen = r300_screen_const(pscreen);
> boolean is_r400 = r300screen->caps.is_r400;
> boolean is_r500 = r300screen->caps.is_r500;
>
> @@ -300,10 +300,10 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e
> return 0;
> }
>
> -static float r300_get_paramf(struct pipe_screen* pscreen,
> +static float r300_get_paramf(const struct pipe_screen* pscreen,
> enum pipe_capf param)
> {
> - struct r300_screen* r300screen = r300_screen(pscreen);
> + const struct r300_screen* r300screen = r300_screen_const(pscreen);
>
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> @@ -337,7 +337,7 @@ static float r300_get_paramf(struct pipe_screen* pscreen,
> }
> }
>
> -static int r300_get_video_param(struct pipe_screen *screen,
> +static int r300_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h
> index e129cee..85d68d4 100644
> --- a/src/gallium/drivers/r300/r300_screen.h
> +++ b/src/gallium/drivers/r300/r300_screen.h
> @@ -55,6 +55,11 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
> return (struct r300_screen*)screen;
> }
>
> +static INLINE const struct r300_screen* r300_screen_const(
> + const struct pipe_screen* screen) {
> + return (const struct r300_screen*)screen;
> +}
> +
> static INLINE struct radeon_winsys *
> radeon_winsys(struct pipe_screen *screen) {
> return r300_screen(screen)->rws;
> diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c
> index a4e88ce..cd01948 100644
> --- a/src/gallium/drivers/r600/r600_pipe.c
> +++ b/src/gallium/drivers/r600/r600_pipe.c
> @@ -508,7 +508,7 @@ fail:
> /*
> * pipe_screen
> */
> -static const char* r600_get_vendor(struct pipe_screen* pscreen)
> +static const char* r600_get_vendor(const struct pipe_screen* pscreen)
> {
> return "X.Org";
> }
> @@ -545,16 +545,16 @@ static const char *r600_get_family_name(enum radeon_family family)
> }
> }
>
> -static const char* r600_get_name(struct pipe_screen* pscreen)
> +static const char* r600_get_name(const struct pipe_screen* pscreen)
> {
> struct r600_screen *rscreen = (struct r600_screen *)pscreen;
>
> return r600_get_family_name(rscreen->family);
> }
>
> -static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> +static int r600_get_param(const struct pipe_screen* pscreen, enum pipe_cap param)
> {
> - struct r600_screen *rscreen = (struct r600_screen *)pscreen;
> + const struct r600_screen *rscreen = (const struct r600_screen *)pscreen;
> enum radeon_family family = rscreen->family;
>
> switch (param) {
> @@ -682,7 +682,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> return 0;
> }
>
> -static float r600_get_paramf(struct pipe_screen* pscreen,
> +static float r600_get_paramf(const struct pipe_screen* pscreen,
> enum pipe_capf param)
> {
> struct r600_screen *rscreen = (struct r600_screen *)pscreen;
> @@ -710,7 +710,7 @@ static float r600_get_paramf(struct pipe_screen* pscreen,
> return 0.0f;
> }
>
> -static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> +static int r600_get_shader_param(const struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> {
> switch(shader)
> {
> @@ -772,7 +772,7 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
> return 0;
> }
>
> -static int r600_get_video_param(struct pipe_screen *screen,
> +static int r600_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> @@ -865,7 +865,7 @@ const char * r600_llvm_gpu_string(enum radeon_family family)
> }
>
>
> -static int r600_get_compute_param(struct pipe_screen *screen,
> +static int r600_get_compute_param(const struct pipe_screen *screen,
> enum pipe_compute_cap param,
> void *ret)
> {
> diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h
> index 3fad311..bc9bca2 100644
> --- a/src/gallium/drivers/r600/r600_pipe.h
> +++ b/src/gallium/drivers/r600/r600_pipe.h
> @@ -899,7 +899,7 @@ struct pipe_video_decoder *r600_uvd_create_decoder(struct pipe_context *context,
> struct pipe_video_buffer *r600_video_buffer_create(struct pipe_context *pipe,
> const struct pipe_video_buffer *tmpl);
>
> -int r600_uvd_get_video_param(struct pipe_screen *screen,
> +int r600_uvd_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param);
>
> diff --git a/src/gallium/drivers/r600/r600_uvd.c b/src/gallium/drivers/r600/r600_uvd.c
> index a077a50..9339b5e 100644
> --- a/src/gallium/drivers/r600/r600_uvd.c
> +++ b/src/gallium/drivers/r600/r600_uvd.c
> @@ -178,7 +178,7 @@ struct pipe_video_decoder *r600_uvd_create_decoder(struct pipe_context *context,
> ctx->ws, r600_uvd_set_dtb);
> }
>
> -int r600_uvd_get_video_param(struct pipe_screen *screen,
> +int r600_uvd_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> diff --git a/src/gallium/drivers/radeon/radeon_uvd.c b/src/gallium/drivers/radeon/radeon_uvd.c
> index caf3e90..1c6a66b 100644
> --- a/src/gallium/drivers/radeon/radeon_uvd.c
> +++ b/src/gallium/drivers/radeon/radeon_uvd.c
> @@ -1081,7 +1081,7 @@ void ruvd_set_dt_surfaces(struct ruvd_msg *msg, struct radeon_surface *luma,
> msg->body.decode.dt_surf_tile_config |= RUVD_MACRO_TILE_ASPECT_RATIO(macro_tile_aspect(luma->mtilea));
> }
>
> -int ruvd_get_video_param(struct pipe_screen *screen,
> +int ruvd_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> diff --git a/src/gallium/drivers/radeon/radeon_uvd.h b/src/gallium/drivers/radeon/radeon_uvd.h
> index 1e97425..710162f 100644
> --- a/src/gallium/drivers/radeon/radeon_uvd.h
> +++ b/src/gallium/drivers/radeon/radeon_uvd.h
> @@ -365,7 +365,7 @@ void ruvd_set_dt_surfaces(struct ruvd_msg *msg, struct radeon_surface *luma,
> struct radeon_surface *chroma);
>
> /* returns supported codecs and other parameters */
> -int ruvd_get_video_param(struct pipe_screen *screen,
> +int ruvd_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param);
>
> diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> index 463cc72..9d8d600 100644
> --- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> +++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
> @@ -286,7 +286,7 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void
> /*
> * pipe_screen
> */
> -static const char* r600_get_vendor(struct pipe_screen* pscreen)
> +static const char* r600_get_vendor(const struct pipe_screen* pscreen)
> {
> return "X.Org";
> }
> @@ -321,16 +321,16 @@ static const char *r600_get_family_name(enum radeon_family family)
> }
> }
>
> -static const char* r600_get_name(struct pipe_screen* pscreen)
> +static const char* r600_get_name(const struct pipe_screen* pscreen)
> {
> - struct r600_screen *rscreen = (struct r600_screen *)pscreen;
> + const struct r600_screen *rscreen = (const struct r600_screen *)pscreen;
>
> return r600_get_family_name(rscreen->family);
> }
>
> -static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> +static int r600_get_param(const struct pipe_screen* pscreen, enum pipe_cap param)
> {
> - struct r600_screen *rscreen = (struct r600_screen *)pscreen;
> + const struct r600_screen *rscreen = (const struct r600_screen *)pscreen;
>
> switch (param) {
> /* Supported features (boolean caps). */
> @@ -444,7 +444,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
> return 0;
> }
>
> -static float r600_get_paramf(struct pipe_screen* pscreen,
> +static float r600_get_paramf(const struct pipe_screen* pscreen,
> enum pipe_capf param)
> {
> switch (param) {
> @@ -466,7 +466,7 @@ static float r600_get_paramf(struct pipe_screen* pscreen,
> return 0.0f;
> }
>
> -static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> +static int r600_get_shader_param(const struct pipe_screen* pscreen, unsigned shader, enum pipe_shader_cap param)
> {
> switch(shader)
> {
> @@ -530,7 +530,7 @@ static int r600_get_shader_param(struct pipe_screen* pscreen, unsigned shader, e
> return 0;
> }
>
> -static int r600_get_video_param(struct pipe_screen *screen,
> +static int r600_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> @@ -549,11 +549,11 @@ static int r600_get_video_param(struct pipe_screen *screen,
> }
> }
>
> -static int r600_get_compute_param(struct pipe_screen *screen,
> +static int r600_get_compute_param(const struct pipe_screen *screen,
> enum pipe_compute_cap param,
> void *ret)
> {
> - struct r600_screen *rscreen = (struct r600_screen *)screen;
> + const struct r600_screen *rscreen = (const struct r600_screen *)screen;
> //TODO: select these params by asic
> switch (param) {
> case PIPE_COMPUTE_CAP_IR_TARGET: {
> diff --git a/src/gallium/drivers/rbug/rbug_screen.c b/src/gallium/drivers/rbug/rbug_screen.c
> index 2471fdb..ec79317 100644
> --- a/src/gallium/drivers/rbug/rbug_screen.c
> +++ b/src/gallium/drivers/rbug/rbug_screen.c
> @@ -51,28 +51,28 @@ rbug_screen_destroy(struct pipe_screen *_screen)
> }
>
> static const char *
> -rbug_screen_get_name(struct pipe_screen *_screen)
> +rbug_screen_get_name(const struct pipe_screen *_screen)
> {
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> + const struct rbug_screen *rb_screen = rbug_screen_const(_screen);
> struct pipe_screen *screen = rb_screen->screen;
>
> return screen->get_name(screen);
> }
>
> static const char *
> -rbug_screen_get_vendor(struct pipe_screen *_screen)
> +rbug_screen_get_vendor(const struct pipe_screen *_screen)
> {
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> + const struct rbug_screen *rb_screen = rbug_screen_const(_screen);
> struct pipe_screen *screen = rb_screen->screen;
>
> return screen->get_vendor(screen);
> }
>
> static int
> -rbug_screen_get_param(struct pipe_screen *_screen,
> +rbug_screen_get_param(const struct pipe_screen *_screen,
> enum pipe_cap param)
> {
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> + const struct rbug_screen *rb_screen = rbug_screen_const(_screen);
> struct pipe_screen *screen = rb_screen->screen;
>
> return screen->get_param(screen,
> @@ -80,10 +80,10 @@ rbug_screen_get_param(struct pipe_screen *_screen,
> }
>
> static int
> -rbug_screen_get_shader_param(struct pipe_screen *_screen,
> +rbug_screen_get_shader_param(const struct pipe_screen *_screen,
> unsigned shader, enum pipe_shader_cap param)
> {
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> + const struct rbug_screen *rb_screen = rbug_screen_const(_screen);
> struct pipe_screen *screen = rb_screen->screen;
>
> return screen->get_shader_param(screen, shader,
> @@ -91,10 +91,10 @@ rbug_screen_get_shader_param(struct pipe_screen *_screen,
> }
>
> static float
> -rbug_screen_get_paramf(struct pipe_screen *_screen,
> +rbug_screen_get_paramf(const struct pipe_screen *_screen,
> enum pipe_capf param)
> {
> - struct rbug_screen *rb_screen = rbug_screen(_screen);
> + const struct rbug_screen *rb_screen = rbug_screen_const(_screen);
> struct pipe_screen *screen = rb_screen->screen;
>
> return screen->get_paramf(screen,
> diff --git a/src/gallium/drivers/rbug/rbug_screen.h b/src/gallium/drivers/rbug/rbug_screen.h
> index a53afac..9a00c26 100644
> --- a/src/gallium/drivers/rbug/rbug_screen.h
> +++ b/src/gallium/drivers/rbug/rbug_screen.h
> @@ -66,6 +66,13 @@ rbug_screen(struct pipe_screen *screen)
> return (struct rbug_screen *)screen;
> }
>
> +static INLINE const struct rbug_screen *
> +rbug_screen_const(const struct pipe_screen *screen)
> +{
> + return (const struct rbug_screen *)screen;
> +}
> +
> +
> #define rbug_screen_add_to_list(scr, name, obj) \
> do { \
> pipe_mutex_lock(scr->list_mutex); \
> diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
> index 2abfe89..b8acda5 100644
> --- a/src/gallium/drivers/softpipe/sp_screen.c
> +++ b/src/gallium/drivers/softpipe/sp_screen.c
> @@ -49,21 +49,21 @@
> DEBUG_GET_ONCE_BOOL_OPTION(use_llvm, "SOFTPIPE_USE_LLVM", FALSE)
>
> static const char *
> -softpipe_get_vendor(struct pipe_screen *screen)
> +softpipe_get_vendor(const struct pipe_screen *screen)
> {
> return "VMware, Inc.";
> }
>
>
> static const char *
> -softpipe_get_name(struct pipe_screen *screen)
> +softpipe_get_name(const struct pipe_screen *screen)
> {
> return "softpipe";
> }
>
>
> static int
> -softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
> +softpipe_get_param(const struct pipe_screen *screen, enum pipe_cap param)
> {
> switch (param) {
> case PIPE_CAP_MAX_COMBINED_SAMPLERS:
> @@ -190,9 +190,9 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
> }
>
> static int
> -softpipe_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> +softpipe_get_shader_param(const struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> {
> - struct softpipe_screen *sp_screen = softpipe_screen(screen);
> + const struct softpipe_screen *sp_screen = softpipe_screen_const(screen);
> switch(shader)
> {
> case PIPE_SHADER_FRAGMENT:
> @@ -218,7 +218,7 @@ softpipe_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe
> }
>
> static float
> -softpipe_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> +softpipe_get_paramf(const struct pipe_screen *screen, enum pipe_capf param)
> {
> switch (param) {
> case PIPE_CAPF_MAX_LINE_WIDTH:
> @@ -245,7 +245,7 @@ softpipe_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> }
>
> static int
> -softpipe_get_video_param(struct pipe_screen *screen,
> +softpipe_get_video_param(const struct pipe_screen *screen,
> enum pipe_video_profile profile,
> enum pipe_video_cap param)
> {
> diff --git a/src/gallium/drivers/softpipe/sp_screen.h b/src/gallium/drivers/softpipe/sp_screen.h
> index 007feec..2ad5ca5 100644
> --- a/src/gallium/drivers/softpipe/sp_screen.h
> +++ b/src/gallium/drivers/softpipe/sp_screen.h
> @@ -55,6 +55,11 @@ softpipe_screen( struct pipe_screen *pipe )
> return (struct softpipe_screen *)pipe;
> }
>
> +static INLINE const struct softpipe_screen *
> +softpipe_screen_const( const struct pipe_screen *pipe )
> +{
> + return (const struct softpipe_screen *)pipe;
> +}
>
>
> #endif /* SP_SCREEN_H */
> diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
> index 7bf6285..f0a79d4 100644
> --- a/src/gallium/drivers/svga/svga_screen.c
> +++ b/src/gallium/drivers/svga/svga_screen.c
> @@ -63,14 +63,14 @@ static const struct debug_named_value svga_debug_flags[] = {
> #endif
>
> static const char *
> -svga_get_vendor( struct pipe_screen *pscreen )
> +svga_get_vendor( const struct pipe_screen *pscreen )
> {
> return "VMware, Inc.";
> }
>
>
> static const char *
> -svga_get_name( struct pipe_screen *pscreen )
> +svga_get_name( const struct pipe_screen *pscreen )
> {
> const char *build = "", *llvm = "", *mutex = "";
> static char name[100];
> @@ -94,9 +94,9 @@ svga_get_name( struct pipe_screen *pscreen )
>
>
> static float
> -svga_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
> +svga_get_paramf(const struct pipe_screen *screen, enum pipe_capf param)
> {
> - struct svga_screen *svgascreen = svga_screen(screen);
> + const struct svga_screen *svgascreen = svga_screen_const(screen);
> struct svga_winsys_screen *sws = svgascreen->sws;
> SVGA3dDevCapResult result;
>
> @@ -131,9 +131,9 @@ svga_get_paramf(struct pipe_screen *screen, enum pipe_capf param)
>
>
> static int
> -svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
> +svga_get_param(const struct pipe_screen *screen, enum pipe_cap param)
> {
> - struct svga_screen *svgascreen = svga_screen(screen);
> + const struct svga_screen *svgascreen = svga_screen_const(screen);
> struct svga_winsys_screen *sws = svgascreen->sws;
> SVGA3dDevCapResult result;
>
> @@ -276,9 +276,9 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
> return 0;
> }
>
> -static int svga_get_shader_param(struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> +static int svga_get_shader_param(const struct pipe_screen *screen, unsigned shader, enum pipe_shader_cap param)
> {
> - struct svga_screen *svgascreen = svga_screen(screen);
> + const struct svga_screen *svgascreen = svga_screen_const(screen);
> struct svga_winsys_screen *sws = svgascreen->sws;
> SVGA3dDevCapResult result;
>
> @@ -680,4 +680,12 @@ svga_screen(struct pipe_screen *screen)
> assert(screen->destroy == svga_destroy_screen);
> return (struct svga_screen *)screen;
> }
> +
> +const struct svga_screen *
> +svga_screen_const(const struct pipe_screen *screen)
> +{
> + assert(screen);
> + assert(screen->destroy == svga_destroy_screen);
> + return (const struct svga_screen *)screen;
> +}
> #endif
> diff --git a/src/gallium/drivers/svga/svga_screen.h b/src/gallium/drivers/svga/svga_screen.h
> index 77b552a..970fef2 100644
> --- a/src/gallium/drivers/svga/svga_screen.h
> +++ b/src/gallium/drivers/svga/svga_screen.h
> @@ -85,9 +85,18 @@ svga_screen(struct pipe_screen *pscreen)
> {
> return (struct svga_screen *) pscreen;
> }
> +
> +static INLINE const struct svga_screen *
> +svga_screen(const struct pipe_screen *pscreen)
> +{
> + return (const struct svga_screen *) pscreen;
> +}
> #else
> struct svga_screen *
> svga_screen(struct pipe_screen *screen);
> +
> +const struct svga_screen *
> +svga_screen_const(const struct pipe_screen *screen);
> #endif
>
> #endif /* SVGA_SCREEN_H */
> diff --git a/src/gallium/drivers/trace/tr_screen.c b/src/gallium/drivers/trace/tr_screen.c
> index 5281ba8..6a9234f 100644
> --- a/src/gallium/drivers/trace/tr_screen.c
> +++ b/src/gallium/drivers/trace/tr_screen.c
> @@ -42,9 +42,9 @@
> static boolean trace = FALSE;
>
> static const char *
> -trace_screen_get_name(struct pipe_screen *_screen)
> +trace_screen_get_name(const struct pipe_screen *_screen)
> {
> - struct trace_screen *tr_scr = trace_screen(_screen);
> + const struct trace_screen *tr_scr = trace_screen_const(_screen);
> struct pipe_screen *screen = tr_scr->screen;
> const char *result;
>
> @@ -63,9 +63,9 @@ trace_screen_get_name(struct pipe_screen *_screen)
>
>
> static const char *
> -trace_screen_get_vendor(struct pipe_screen *_screen)
> +trace_screen_get_vendor(const struct pipe_screen *_screen)
> {
> - struct trace_screen *tr_scr = trace_screen(_screen);
> + const struct trace_screen *tr_scr = trace_screen_const(_screen);
> struct pipe_screen *screen = tr_scr->screen;
> const char *result;
>
> @@ -84,10 +84,10 @@ trace_screen_get_vendor(struct pipe_screen *_screen)
>
>
> static int
> -trace_screen_get_param(struct pipe_screen *_screen,
> +trace_screen_get_param(const struct pipe_screen *_screen,
> enum pipe_cap param)
> {
> - struct trace_screen *tr_scr = trace_screen(_screen);
> + const struct trace_screen *tr_scr = trace_screen_const(_screen);
> struct pipe_screen *screen = tr_scr->screen;
> int result;
>
> @@ -107,10 +107,10 @@ trace_screen_get_param(struct pipe_screen *_screen,
>
>
> static int
> -trace_screen_get_shader_param(struct pipe_screen *_screen, unsigned shader,
> +trace_screen_get_shader_param(const struct pipe_screen *_screen, unsigned shader,
> enum pipe_shader_cap param)
> {
> - struct trace_screen *tr_scr = trace_screen(_screen);
> + const struct trace_screen *tr_scr = trace_screen_const(_screen);
> struct pipe_screen *screen = tr_scr->screen;
> int result;
>
> @@ -131,10 +131,10 @@ trace_screen_get_shader_param(struct pipe_screen *_screen, unsigned shader,
>
>
> static float
> -trace_screen_get_paramf(struct pipe_screen *_screen,
> +trace_screen_get_paramf(const struct pipe_screen *_screen,
> enum pipe_capf param)
> {
> - struct trace_screen *tr_scr = trace_screen(_screen);
> + const struct trace_screen *tr_scr = trace_screen_const(_screen);
> struct pipe_screen *screen = tr_scr->screen;
> float result;
>
> @@ -508,3 +508,11 @@ trace_screen(struct pipe_screen *screen)
> assert(screen->destroy == trace_screen_destroy);
> return (struct trace_screen *)screen;
> }
> +
> +const struct trace_screen *
> +trace_screen_const(const struct pipe_screen *screen)
> +{
> + assert(screen);
> + assert(screen->destroy == trace_screen_destroy);
> + return (const struct trace_screen *)screen;
> +}
> diff --git a/src/gallium/drivers/trace/tr_screen.h b/src/gallium/drivers/trace/tr_screen.h
> index 385015d..d0ce350 100644
> --- a/src/gallium/drivers/trace/tr_screen.h
> +++ b/src/gallium/drivers/trace/tr_screen.h
> @@ -57,6 +57,8 @@ struct trace_screen
> struct trace_screen *
> trace_screen(struct pipe_screen *screen);
>
> +const struct trace_screen *
> +trace_screen_const(const struct pipe_screen *screen);
>
> #ifdef __cplusplus
> }
> diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
> index c487e8e..decc08e 100644
> --- a/src/gallium/include/pipe/p_screen.h
> +++ b/src/gallium/include/pipe/p_screen.h
> @@ -66,33 +66,33 @@ struct pipe_transfer;
> struct pipe_screen {
> void (*destroy)( struct pipe_screen * );
>
> - const char *(*get_name)( struct pipe_screen * );
> + const char *(*get_name)( const struct pipe_screen * );
>
> - const char *(*get_vendor)( struct pipe_screen * );
> + const char *(*get_vendor)( const struct pipe_screen * );
>
> /**
> * Query an integer-valued capability/parameter/limit
> * \param param one of PIPE_CAP_x
> */
> - int (*get_param)( struct pipe_screen *, enum pipe_cap param );
> + int (*get_param)( const struct pipe_screen *, enum pipe_cap param );
>
> /**
> * Query a float-valued capability/parameter/limit
> * \param param one of PIPE_CAP_x
> */
> - float (*get_paramf)( struct pipe_screen *, enum pipe_capf param );
> + float (*get_paramf)( const struct pipe_screen *, enum pipe_capf param );
>
> /**
> * Query a per-shader-stage integer-valued capability/parameter/limit
> * \param param one of PIPE_CAP_x
> */
> - int (*get_shader_param)( struct pipe_screen *, unsigned shader, enum pipe_shader_cap param );
> + int (*get_shader_param)( const struct pipe_screen *, unsigned shader, enum pipe_shader_cap param );
>
> /**
> * Query an integer-valued capability/parameter/limit for a codec/profile
> * \param param one of PIPE_VIDEO_CAP_x
> */
> - int (*get_video_param)( struct pipe_screen *,
> + int (*get_video_param)( const struct pipe_screen *,
> enum pipe_video_profile profile,
> enum pipe_video_cap param );
>
> @@ -104,7 +104,7 @@ struct pipe_screen {
> * \return size in bytes of the parameter value that would be
> * returned.
> */
> - int (*get_compute_param)(struct pipe_screen *,
> + int (*get_compute_param)(const struct pipe_screen *,
> enum pipe_compute_cap param,
> void *ret);
>
> diff --git a/src/gallium/state_trackers/clover/core/device.hpp b/src/gallium/state_trackers/clover/core/device.hpp
> index 465af9f..4d89315 100644
> --- a/src/gallium/state_trackers/clover/core/device.hpp
> +++ b/src/gallium/state_trackers/clover/core/device.hpp
> @@ -74,6 +74,7 @@ public:
> clover::supported_formats(cl_context, cl_mem_object_type);
>
> clover::platform &platform;
> + const struct pipe_screen *get_pipe() const { return pipe; }
>
> private:
> pipe_screen *pipe;
> --
> 1.7.11.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list