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 <airlied@redhat.com> Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -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;
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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 */
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user