diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-10-02 14:05:41 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-10-02 14:49:00 +0200 |
commit | a6f9e72ec227a152b04d608992e6bb419599a378 (patch) | |
tree | 3bbdacdc8ff32b5348b1279df393e23e2b5a2c18 | |
parent | 34993cbdfc320f617cb9f756c880db9cbba8084c (diff) |
driver: fix mipmap size compotation for npot
GL uses a round-down convention.
-rw-r--r-- | native/driver/etna_resource.c | 4 | ||||
-rw-r--r-- | native/driver/etna_texture.c | 3 |
2 files changed, 3 insertions, 4 deletions
diff --git a/native/driver/etna_resource.c b/native/driver/etna_resource.c index f2a2f13..54dac4b 100644 --- a/native/driver/etna_resource.c +++ b/native/driver/etna_resource.c @@ -206,8 +206,8 @@ static struct pipe_resource * etna_screen_resource_create(struct pipe_screen *sc offset += align(mip->size, ETNA_PE_ALIGNMENT); /* align mipmaps to 64 bytes to be able to render to them */ if(ix == max_mip_level || (x == 1 && y == 1)) break; // stop at last level - x = (x+1)>>1; - y = (y+1)>>1; + x = MAX2(x >> 1, 1); + y = MAX2(y >> 1, 1); ix += 1; } diff --git a/native/driver/etna_texture.c b/native/driver/etna_texture.c index 45b27b1..94043fe 100644 --- a/native/driver/etna_texture.c +++ b/native/driver/etna_texture.c @@ -41,13 +41,11 @@ static void *etna_pipe_create_sampler_state(struct pipe_context *pipe, //struct etna_pipe_context *priv = etna_pipe_context(pipe); struct compiled_sampler_state *cs = CALLOC_STRUCT(compiled_sampler_state); cs->TE_SAMPLER_CONFIG0 = - /* XXX get from sampler view: VIVS_TE_SAMPLER_CONFIG0_TYPE(TEXTURE_TYPE_2D)| */ VIVS_TE_SAMPLER_CONFIG0_UWRAP(translate_texture_wrapmode(ss->wrap_s))| VIVS_TE_SAMPLER_CONFIG0_VWRAP(translate_texture_wrapmode(ss->wrap_t))| VIVS_TE_SAMPLER_CONFIG0_MIN(translate_texture_filter(ss->min_img_filter))| VIVS_TE_SAMPLER_CONFIG0_MIP(translate_texture_mipfilter(ss->min_mip_filter))| VIVS_TE_SAMPLER_CONFIG0_MAG(translate_texture_filter(ss->mag_img_filter)); - /* XXX get from sampler view: VIVS_TE_SAMPLER_CONFIG0_FORMAT(tex_format) */ cs->TE_SAMPLER_CONFIG1 = 0; /* VIVS_TE_SAMPLER_CONFIG1 (swizzle, extended format) fully determined by sampler view */ cs->TE_SAMPLER_LOD_CONFIG = (ss->lod_bias != 0.0 ? VIVS_TE_SAMPLER_LOD_CONFIG_BIAS_ENABLE : 0) | @@ -119,6 +117,7 @@ static struct pipe_sampler_view *etna_pipe_create_sampler_view(struct pipe_conte VIVS_TE_SAMPLER_CONFIG0_TYPE(translate_texture_target(res->base.target, false)) | VIVS_TE_SAMPLER_CONFIG0_FORMAT(translate_texture_format(sv->base.format, false)); /* merged with sampler state */ + cs->TE_SAMPLER_CONFIG1 = VIVS_TE_SAMPLER_CONFIG1_SWIZZLE_R(templat->swizzle_r) | VIVS_TE_SAMPLER_CONFIG1_SWIZZLE_G(templat->swizzle_g) | |