summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-10-02 14:05:41 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2013-10-02 14:49:00 +0200
commita6f9e72ec227a152b04d608992e6bb419599a378 (patch)
tree3bbdacdc8ff32b5348b1279df393e23e2b5a2c18
parent34993cbdfc320f617cb9f756c880db9cbba8084c (diff)
driver: fix mipmap size compotation for npot
GL uses a round-down convention.
-rw-r--r--native/driver/etna_resource.c4
-rw-r--r--native/driver/etna_texture.c3
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) |