[Mesa-dev] [PATCH 1/6] i965: Add various plumbing for cubemap arrays

Chad Versace chad.versace at linux.intel.com
Tue Nov 27 11:24:43 PST 2012


Chris,

I applied the series to master-8f3570efc, but got build failures due to some
undefined symbols. I assume that your series depends on some other uncommitted
series. Could you push a branch somewhere that successfully builds so we can
test it?

Thanks,
Chad

On 11/22/2012 04:35 AM, Chris Forbes wrote:
> Signed-off-by: Chris Forbes <chrisf at ijw.co.nz>
> ---
>  src/mesa/drivers/dri/i965/brw_tex_layout.c        | 4 ++++
>  src/mesa/drivers/dri/i965/brw_wm_sampler_state.c  | 3 ++-
>  src/mesa/drivers/dri/i965/brw_wm_surface_state.c  | 1 +
>  src/mesa/drivers/dri/i965/gen7_sampler_state.c    | 3 ++-
>  src/mesa/drivers/dri/i965/gen7_wm_surface_state.c | 3 ++-
>  5 files changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
> index 1a2bedb..1ba3c5b 100644
> --- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
> +++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
> @@ -70,6 +70,10 @@ void
>  brw_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree *mt)
>  {
>     switch (mt->target) {
> +   case GL_TEXTURE_CUBE_MAP_ARRAY:
> +	   brw_miptree_layout_texture_array(intel, mt);
> +	   break;
> +
>     case GL_TEXTURE_CUBE_MAP:
>        if (intel->gen >= 5) {
>  	 /* On Ironlake, cube maps are finally represented as just a series of
> diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> index fb9cb83..69669b3 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
> @@ -248,7 +248,8 @@ static void brw_update_sampler_state(struct brw_context *brw,
>     /* Cube-maps on 965 and later must use the same wrap mode for all 3
>      * coordinate dimensions.  Futher, only CUBE and CLAMP are valid.
>      */
> -   if (texObj->Target == GL_TEXTURE_CUBE_MAP) {
> +   if (texObj->Target == GL_TEXTURE_CUBE_MAP ||
> +		texObj->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
>        if (ctx->Texture.CubeMapSeamless &&
>  	  (gl_sampler->MinFilter != GL_NEAREST ||
>  	   gl_sampler->MagFilter != GL_NEAREST)) {
> diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> index a7866d5..5c4db83 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> @@ -65,6 +65,7 @@ translate_tex_target(GLenum target)
>        return BRW_SURFACE_3D;
>  
>     case GL_TEXTURE_CUBE_MAP: 
> +   case GL_TEXTURE_CUBE_MAP_ARRAY:
>        return BRW_SURFACE_CUBE;
>  
>     default: 
> diff --git a/src/mesa/drivers/dri/i965/gen7_sampler_state.c b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> index ea634a9..c2a695d 100644
> --- a/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> +++ b/src/mesa/drivers/dri/i965/gen7_sampler_state.c
> @@ -111,7 +111,8 @@ gen7_update_sampler_state(struct brw_context *brw, int unit, int ss_index,
>     /* Cube-maps on 965 and later must use the same wrap mode for all 3
>      * coordinate dimensions.  Futher, only CUBE and CLAMP are valid.
>      */
> -   if (texObj->Target == GL_TEXTURE_CUBE_MAP) {
> +   if (texObj->Target == GL_TEXTURE_CUBE_MAP ||
> +		   texObj->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
>        if (ctx->Texture.CubeMapSeamless &&
>  	  (gl_sampler->MinFilter != GL_NEAREST ||
>  	   gl_sampler->MagFilter != GL_NEAREST)) {
> diff --git a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
> index 466a038..25d8ffb 100644
> --- a/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
> +++ b/src/mesa/drivers/dri/i965/gen7_wm_surface_state.c
> @@ -328,7 +328,8 @@ gen7_update_texture_surface(struct gl_context *ctx,
>                                                     firstImage->InternalFormat,
>                                                     tObj->DepthMode,
>                                                     sampler->sRGBDecode);
> -   if (tObj->Target == GL_TEXTURE_CUBE_MAP) {
> +   if (tObj->Target == GL_TEXTURE_CUBE_MAP ||
> +		   tObj->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
>        surf->ss0.cube_pos_x = 1;
>        surf->ss0.cube_pos_y = 1;
>        surf->ss0.cube_pos_z = 1;
> 



More information about the mesa-dev mailing list