From: Dave Airlie Date: Mon, 29 Aug 2011 13:35:16 +0000 (+0100) Subject: gallium: add caps for MIN/MAX texel offsets. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0b666106c5f75b581ef1ebeb354c29a00400404f;p=mesa.git gallium: add caps for MIN/MAX texel offsets. As per Brian's suggestion, add caps for drivers that support texture offsets to advertise a min/max via TGSI, also use it in the state tracker. Signed-off-by: Dave Airlie Reviewed-by: Brian Paul --- diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 821c0d75973..e02da6e4d98 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -407,6 +407,12 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TIMER_QUERY: return r600_get_clock_crystal_freq(rscreen->radeon) != 0; + case PIPE_CAP_MIN_TEXEL_OFFSET: + return -8; + + case PIPE_CAP_MAX_TEXEL_OFFSET: + return 7; + default: R600_ERR("r600: unknown param %d\n", param); return 0; diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c index 960ab8c96ae..d22ed4cdcaf 100644 --- a/src/gallium/drivers/softpipe/sp_screen.c +++ b/src/gallium/drivers/softpipe/sp_screen.c @@ -131,6 +131,10 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 1; case PIPE_CAP_ARRAY_TEXTURES: return 1; + case PIPE_CAP_MIN_TEXEL_OFFSET: + return -8; + case PIPE_CAP_MAX_TEXEL_OFFSET: + return 7; default: return 0; } diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 795de1fbf62..19c0cab3d3c 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -471,7 +471,9 @@ enum pipe_cap { PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46, PIPE_CAP_SEAMLESS_CUBE_MAP = 47, PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE = 48, - PIPE_CAP_SCALED_RESOLVE = 49 + PIPE_CAP_SCALED_RESOLVE = 49, + PIPE_CAP_MIN_TEXEL_OFFSET = 50, + PIPE_CAP_MAX_TEXEL_OFFSET = 51, }; /* Shader caps not specific to any single stage */ diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 322dbbfd51d..aa7f3b52cb2 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -203,6 +203,9 @@ void st_init_limits(struct st_context *st) /* XXX we'll need a better query here someday */ if (screen->get_param(screen, PIPE_CAP_GLSL)) { + c->MinProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MIN_TEXEL_OFFSET); + c->MaxProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MAX_TEXEL_OFFSET); + c->GLSLVersion = 120; } }