gallium: implement seamless cubemap extensions
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
@@ -107,3 +107,7 @@ max_anisotropy
|
||||
Set to zero to disable anisotropic filtering. Any other setting enables
|
||||
anisotropic filtering, however it's not unexpected some drivers only will
|
||||
change their filtering with a setting of 2 and higher.
|
||||
seamless_cube_map
|
||||
If set, the bilinear filter of a cube map may take samples from adjacent
|
||||
cube map faces when sampled near a texture border to produce a seamless
|
||||
look.
|
@@ -466,6 +466,8 @@ enum pipe_cap {
|
||||
PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR = 44,
|
||||
PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL = 45,
|
||||
PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46,
|
||||
PIPE_CAP_SEAMLESS_CUBE_MAP = 47,
|
||||
PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE = 48,
|
||||
};
|
||||
|
||||
/* Shader caps not specific to any single stage */
|
||||
|
@@ -269,6 +269,7 @@ struct pipe_sampler_state
|
||||
unsigned compare_func:3; /**< PIPE_FUNC_x */
|
||||
unsigned normalized_coords:1; /**< Are coords normalized to [0,1]? */
|
||||
unsigned max_anisotropy:6;
|
||||
unsigned seamless_cube_map:1;
|
||||
float lod_bias; /**< LOD/lambda bias */
|
||||
float min_lod, max_lod; /**< LOD clamp range, after bias */
|
||||
float border_color[4];
|
||||
|
@@ -201,6 +201,9 @@ update_samplers(struct st_context *st)
|
||||
= st_compare_func_to_pipe(msamp->CompareFunc);
|
||||
}
|
||||
|
||||
sampler->seamless_cube_map =
|
||||
st->ctx->Texture.CubeMapSeamless || msamp->CubeMapSeamless;
|
||||
|
||||
st->state.num_samplers = su + 1;
|
||||
|
||||
/*printf("%s su=%u non-null\n", __FUNCTION__, su);*/
|
||||
|
@@ -595,4 +595,12 @@ void st_init_extensions(struct st_context *st)
|
||||
PIPE_BIND_SAMPLER_VIEW)) {
|
||||
ctx->Extensions.EXT_packed_float = GL_TRUE;
|
||||
}
|
||||
|
||||
if (screen->get_param(screen, PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE)) {
|
||||
ctx->Extensions.ARB_seamless_cube_map = GL_TRUE;
|
||||
ctx->Extensions.AMD_seamless_cubemap_per_texture = GL_TRUE;
|
||||
}
|
||||
else if (screen->get_param(screen, PIPE_CAP_SEAMLESS_CUBE_MAP)) {
|
||||
ctx->Extensions.ARB_seamless_cube_map = GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user