freedreno/ir3: use pipe_image_view's cpp
At least for PIPE_BUFFER, we could get the resource used as (for example) R32F imageBuffer. So using cpp=1 from the rsc is wrong. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
@@ -660,9 +660,14 @@ emit_image_dims(struct fd_context *ctx, const struct ir3_shader_variant *v,
|
|||||||
img = &si->si[index];
|
img = &si->si[index];
|
||||||
rsc = fd_resource(img->resource);
|
rsc = fd_resource(img->resource);
|
||||||
|
|
||||||
dims[off + 0] = rsc->cpp;
|
dims[off + 0] = util_format_get_blocksize(img->format);
|
||||||
if (img->resource->target != PIPE_BUFFER) {
|
if (img->resource->target != PIPE_BUFFER) {
|
||||||
unsigned lvl = img->u.tex.level;
|
unsigned lvl = img->u.tex.level;
|
||||||
|
/* note for 2d/cube/etc images, even if re-interpreted
|
||||||
|
* as a different color format, the pixel size should
|
||||||
|
* be the same, so use original dimensions for y and z
|
||||||
|
* stride:
|
||||||
|
*/
|
||||||
dims[off + 1] = rsc->slices[lvl].pitch * rsc->cpp;
|
dims[off + 1] = rsc->slices[lvl].pitch * rsc->cpp;
|
||||||
dims[off + 2] = rsc->slices[lvl].size0;
|
dims[off + 2] = rsc->slices[lvl].size0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user