diff options
author | Marek Olšák <[email protected]> | 2017-08-17 03:32:23 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2017-09-11 02:10:24 +0200 |
commit | 22ed1ba01a4d1a331775cf8d8faf256d69276e83 (patch) | |
tree | a98d18ff65baa75e317bdcc9985d102e1e661df0 /src/gallium/drivers | |
parent | 43247c440e65e41ea8a7d48249aef66f508601e3 (diff) |
gallium/u_blitter: use draw_rectangle for all blits except cubemaps
Add ZW coordinates to the draw_rectangle callback and use it.
Reviewed-by: Nicolai Hähnle <[email protected]>
Tested-by: Brian Paul <[email protected]>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/r300/r300_render.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/r600_pipe_common.c | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 1f896da22e9..ddd24523ca6 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -1125,13 +1125,14 @@ void r300_blitter_draw_rectangle(struct blitter_context *blitter, unsigned vertex_size = type == UTIL_BLITTER_ATTRIB_COLOR || !r300->draw ? 8 : 4; unsigned dwords = 13 + vertex_size + - (type == UTIL_BLITTER_ATTRIB_TEXCOORD ? 7 : 0); + (type == UTIL_BLITTER_ATTRIB_TEXCOORD_XY ? 7 : 0); static const union blitter_attrib zeros; CS_LOCALS(r300); /* XXX workaround for a lockup in MSAA resolve on SWTCL chipsets, this * function most probably doesn't handle type=NONE correctly */ if ((!r300->screen->caps.has_tcl && type == UTIL_BLITTER_ATTRIB_NONE) || + type == UTIL_BLITTER_ATTRIB_TEXCOORD_XYZW || num_instances > 1) { util_blitter_draw_rectangle(blitter, x1, y1, x2, y2, depth, num_instances, type, attrib); @@ -1141,7 +1142,7 @@ void r300_blitter_draw_rectangle(struct blitter_context *blitter, if (r300->skip_rendering) return; - if (type == UTIL_BLITTER_ATTRIB_TEXCOORD) + if (type == UTIL_BLITTER_ATTRIB_TEXCOORD_XY) r300->sprite_coord_enable = 1; r300_update_derived_state(r300); @@ -1158,7 +1159,7 @@ void r300_blitter_draw_rectangle(struct blitter_context *blitter, /* Set up GA. */ OUT_CS_REG(R300_GA_POINT_SIZE, (height * 6) | ((width * 6) << 16)); - if (type == UTIL_BLITTER_ATTRIB_TEXCOORD) { + if (type == UTIL_BLITTER_ATTRIB_TEXCOORD_XY) { /* Set up the GA to generate texcoords. */ OUT_CS_REG(R300_GB_ENABLE, R300_GB_POINT_STUFF_ENABLE | (R300_GB_TEX_STR << R300_GB_TEX0_SOURCE_SHIFT)); diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index f5f15246176..72553292f59 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -266,7 +266,11 @@ void r600_draw_rectangle(struct blitter_context *blitter, memcpy(vb+12, attrib->color, sizeof(float)*4); memcpy(vb+20, attrib->color, sizeof(float)*4); break; - case UTIL_BLITTER_ATTRIB_TEXCOORD: + case UTIL_BLITTER_ATTRIB_TEXCOORD_XYZW: + vb[6] = vb[14] = vb[22] = attrib->texcoord.z; + vb[7] = vb[15] = vb[23] = attrib->texcoord.w; + /* fall through */ + case UTIL_BLITTER_ATTRIB_TEXCOORD_XY: vb[4] = attrib->texcoord.x1; vb[5] = attrib->texcoord.y1; vb[12] = attrib->texcoord.x1; |