[Mesa-dev] [PATCH 2/7] i965: Combine src/dest tex vs. rb checks in intel_copy_image_sub_data.
Kenneth Graunke
kenneth at whitecape.org
Sat May 21 01:35:46 UTC 2016
This simplifies things a little - now we only have one (tex or rb?)
if-ladder for src, and a second for dst, rather than four.
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
src/mesa/drivers/dri/i965/intel_copy_image.c | 33 +++++++++++-----------------
1 file changed, 13 insertions(+), 20 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/intel_copy_image.c b/src/mesa/drivers/dri/i965/intel_copy_image.c
index 0e72672..282e9ae 100644
--- a/src/mesa/drivers/dri/i965/intel_copy_image.c
+++ b/src/mesa/drivers/dri/i965/intel_copy_image.c
@@ -225,26 +225,6 @@ intel_copy_image_sub_data(struct gl_context *ctx,
if (src_image) {
src_mt = intel_texture_image(src_image)->mt;
- } else {
- assert(src_renderbuffer);
- src_mt = intel_renderbuffer(src_renderbuffer)->mt;
- src_image = src_renderbuffer->TexImage;
- }
-
- if (dst_image) {
- dst_mt = intel_texture_image(dst_image)->mt;
- } else {
- assert(dst_renderbuffer);
- dst_mt = intel_renderbuffer(dst_renderbuffer)->mt;
- dst_image = dst_renderbuffer->TexImage;
- }
-
- if (src_mt->num_samples > 0 || dst_mt->num_samples > 0) {
- _mesa_problem(ctx, "Failed to copy multisampled texture with meta path\n");
- return;
- }
-
- if (src_image) {
src_level = src_image->Level + src_image->TexObject->MinLevel;
/* Cube maps actually have different images per face */
@@ -253,10 +233,15 @@ intel_copy_image_sub_data(struct gl_context *ctx,
else
src_z += src_image->TexObject->MinLayer;
} else {
+ assert(src_renderbuffer);
+ src_mt = intel_renderbuffer(src_renderbuffer)->mt;
+ src_image = src_renderbuffer->TexImage;
src_level = 0;
}
if (dst_image) {
+ dst_mt = intel_texture_image(dst_image)->mt;
+
dst_level = dst_image->Level + dst_image->TexObject->MinLevel;
/* Cube maps actually have different images per face */
@@ -265,9 +250,17 @@ intel_copy_image_sub_data(struct gl_context *ctx,
else
dst_z += dst_image->TexObject->MinLayer;
} else {
+ assert(dst_renderbuffer);
+ dst_mt = intel_renderbuffer(dst_renderbuffer)->mt;
+ dst_image = dst_renderbuffer->TexImage;
dst_level = 0;
}
+ if (src_mt->num_samples > 0 || dst_mt->num_samples > 0) {
+ _mesa_problem(ctx, "Failed to copy multisampled texture with BLORP\n");
+ return;
+ }
+
/* We are now going to try and copy the texture using the blitter. If
* that fails, we will fall back mapping the texture and using memcpy.
* In either case, we need to do a full resolve.
--
2.8.2
More information about the mesa-dev
mailing list