aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2019-07-19 23:11:27 (GMT)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2019-07-22 15:20:34 (GMT)
commitf1dcaa0df67aa92ff236418e125adf3299bbf0fd (patch)
tree731a75d470b11318cec1a7056fc19a662f34cb6c
parent9e3dc703ffd1fe78b3d99a0e2b3093415fbae610 (diff)
downloadexternal_mesa3d-f1dcaa0df67aa92ff236418e125adf3299bbf0fd.zip
external_mesa3d-f1dcaa0df67aa92ff236418e125adf3299bbf0fd.tar.gz
external_mesa3d-f1dcaa0df67aa92ff236418e125adf3299bbf0fd.tar.bz2
panfrost: Set `initialized` in more cases
Indirect linear writes were not being marked as initialized, causing the back blit to be dropped, breaking the listed tests. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
-rw-r--r--src/gallium/drivers/panfrost/ci/expected-failures.txt5
-rw-r--r--src/gallium/drivers/panfrost/pan_resource.c14
2 files changed, 9 insertions, 10 deletions
diff --git a/src/gallium/drivers/panfrost/ci/expected-failures.txt b/src/gallium/drivers/panfrost/ci/expected-failures.txt
index 54be6f9..440231b 100644
--- a/src/gallium/drivers/panfrost/ci/expected-failures.txt
+++ b/src/gallium/drivers/panfrost/ci/expected-failures.txt
@@ -237,8 +237,3 @@ dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.line_2_fragment
dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.line_2_vertex
dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_fragment
dEQP-GLES2.functional.shaders.scoping.valid.local_variable_hides_function_parameter_vertex
-dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_alpha
-dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_luminance
-dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_luminance_alpha
-dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgb
-dEQP-GLES2.functional.texture.specification.basic_copytexsubimage2d.cube_rgba
diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c
index 3f8d50c..e7bd444 100644
--- a/src/gallium/drivers/panfrost/pan_resource.c
+++ b/src/gallium/drivers/panfrost/pan_resource.c
@@ -592,23 +592,24 @@ panfrost_transfer_unmap(struct pipe_context *pctx,
struct panfrost_gtransfer *trans = pan_transfer(transfer);
struct panfrost_resource *prsrc = (struct panfrost_resource *) transfer->resource;
+ /* Mark whatever we wrote as written */
+ if (transfer->usage & PIPE_TRANSFER_WRITE)
+ prsrc->slices[transfer->level].initialized = true;
+
if (trans->map) {
struct panfrost_bo *bo = prsrc->bo;
if (transfer->usage & PIPE_TRANSFER_WRITE) {
- unsigned level = transfer->level;
- prsrc->slices[level].initialized = true;
-
if (prsrc->layout == PAN_AFBC) {
DBG("Unimplemented: writes to AFBC\n");
} else if (prsrc->layout == PAN_TILED) {
assert(transfer->box.depth == 1);
panfrost_store_tiled_image(
- bo->cpu + prsrc->slices[level].offset,
+ bo->cpu + prsrc->slices[transfer->level].offset,
trans->map,
&transfer->box,
- prsrc->slices[level].stride,
+ prsrc->slices[transfer->level].stride,
transfer->stride,
util_format_get_blocksize(prsrc->base.format));
}
@@ -638,6 +639,9 @@ panfrost_transfer_flush_region(struct pipe_context *pctx,
util_range_add(&rsc->valid_buffer_range,
transfer->box.x + box->x,
transfer->box.x + box->x + box->width);
+ } else {
+ unsigned level = transfer->level;
+ rsc->slices[level].initialized = true;
}
}