summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/broadcom/vulkan/v3dv_meta_copy.c75
-rw-r--r--src/broadcom/vulkan/v3dv_private.h16
-rw-r--r--src/broadcom/vulkan/v3dv_queue.c56
3 files changed, 0 insertions, 147 deletions
diff --git a/src/broadcom/vulkan/v3dv_meta_copy.c b/src/broadcom/vulkan/v3dv_meta_copy.c
index c0ec888b8c7..b454486cd2e 100644
--- a/src/broadcom/vulkan/v3dv_meta_copy.c
+++ b/src/broadcom/vulkan/v3dv_meta_copy.c
@@ -3200,76 +3200,6 @@ copy_buffer_to_image_shader(struct v3dv_cmd_buffer *cmd_buffer,
}
}
-/**
- * Returns true if the implementation supports the requested operation (even if
- * it failed to process it, for example, due to an out-of-memory error).
- */
-static bool
-copy_buffer_to_image_cpu(struct v3dv_cmd_buffer *cmd_buffer,
- struct v3dv_image *image,
- struct v3dv_buffer *buffer,
- const VkBufferImageCopy2 *region)
-{
- /* FIXME */
- if (vk_format_is_depth_or_stencil(image->vk.format))
- return false;
-
- if (vk_format_is_compressed(image->vk.format))
- return false;
-
- if (image->vk.tiling == VK_IMAGE_TILING_LINEAR)
- return false;
-
- uint32_t buffer_width, buffer_height;
- if (region->bufferRowLength == 0)
- buffer_width = region->imageExtent.width;
- else
- buffer_width = region->bufferRowLength;
-
- if (region->bufferImageHeight == 0)
- buffer_height = region->imageExtent.height;
- else
- buffer_height = region->bufferImageHeight;
-
- uint8_t plane = v3dv_plane_from_aspect(region->imageSubresource.aspectMask);
- assert(plane < image->plane_count);
-
- uint32_t buffer_stride = buffer_width * image->planes[plane].cpp;
- uint32_t buffer_layer_stride = buffer_stride * buffer_height;
-
- uint32_t num_layers;
- if (image->vk.image_type != VK_IMAGE_TYPE_3D)
- num_layers = region->imageSubresource.layerCount;
- else
- num_layers = region->imageExtent.depth;
- assert(num_layers > 0);
-
- struct v3dv_job *job =
- v3dv_cmd_buffer_create_cpu_job(cmd_buffer->device,
- V3DV_JOB_TYPE_CPU_COPY_BUFFER_TO_IMAGE,
- cmd_buffer, -1);
- if (!job)
- return true;
-
- job->cpu.copy_buffer_to_image.image = image;
- job->cpu.copy_buffer_to_image.buffer = buffer;
- job->cpu.copy_buffer_to_image.buffer_stride = buffer_stride;
- job->cpu.copy_buffer_to_image.buffer_layer_stride = buffer_layer_stride;
- job->cpu.copy_buffer_to_image.buffer_offset = region->bufferOffset;
- job->cpu.copy_buffer_to_image.image_extent = region->imageExtent;
- job->cpu.copy_buffer_to_image.image_offset = region->imageOffset;
- job->cpu.copy_buffer_to_image.mip_level =
- region->imageSubresource.mipLevel;
- job->cpu.copy_buffer_to_image.base_layer =
- region->imageSubresource.baseArrayLayer;
- job->cpu.copy_buffer_to_image.layer_count = num_layers;
- job->cpu.copy_buffer_to_image.plane = plane;
-
- list_addtail(&job->list_link, &cmd_buffer->jobs);
-
- return true;
-}
-
VKAPI_ATTR void VKAPI_CALL
v3dv_CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,
const VkCopyBufferToImageInfo2 *info)
@@ -3330,11 +3260,6 @@ v3dv_CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,
* slow it might not be worth it and we should instead put more effort
* in handling more cases with the other paths.
*/
- if (copy_buffer_to_image_cpu(cmd_buffer, image, buffer, &info->pRegions[r])) {
- batch_size = 1;
- goto handled;
- }
-
if (copy_buffer_to_image_shader(cmd_buffer, image, buffer,
batch_size, &info->pRegions[r], false)) {
goto handled;
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index c6707211529..c9e3513e6bb 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -1125,7 +1125,6 @@ enum v3dv_job_type {
V3DV_JOB_TYPE_CPU_RESET_QUERIES,
V3DV_JOB_TYPE_CPU_END_QUERY,
V3DV_JOB_TYPE_CPU_COPY_QUERY_RESULTS,
- V3DV_JOB_TYPE_CPU_COPY_BUFFER_TO_IMAGE,
V3DV_JOB_TYPE_CPU_CSD_INDIRECT,
V3DV_JOB_TYPE_CPU_TIMESTAMP_QUERY,
};
@@ -1164,20 +1163,6 @@ struct v3dv_submit_sync_info {
struct vk_sync_signal *signals;
};
-struct v3dv_copy_buffer_to_image_cpu_job_info {
- struct v3dv_image *image;
- struct v3dv_buffer *buffer;
- uint32_t buffer_offset;
- uint32_t buffer_stride;
- uint32_t buffer_layer_stride;
- VkOffset3D image_offset;
- VkExtent3D image_extent;
- uint32_t mip_level;
- uint32_t base_layer;
- uint32_t layer_count;
- uint8_t plane;
-};
-
struct v3dv_csd_indirect_cpu_job_info {
struct v3dv_buffer *buffer;
uint32_t offset;
@@ -1331,7 +1316,6 @@ struct v3dv_job {
struct v3dv_reset_query_cpu_job_info query_reset;
struct v3dv_end_query_info query_end;
struct v3dv_copy_query_results_cpu_job_info query_copy_results;
- struct v3dv_copy_buffer_to_image_cpu_job_info copy_buffer_to_image;
struct v3dv_csd_indirect_cpu_job_info csd_indirect;
struct v3dv_timestamp_query_cpu_job_info query_timestamp;
} cpu;
diff --git a/src/broadcom/vulkan/v3dv_queue.c b/src/broadcom/vulkan/v3dv_queue.c
index b4aae195180..bb7880a33c1 100644
--- a/src/broadcom/vulkan/v3dv_queue.c
+++ b/src/broadcom/vulkan/v3dv_queue.c
@@ -296,60 +296,6 @@ handle_copy_query_results_cpu_job(struct v3dv_job *job)
}
static VkResult
-handle_copy_buffer_to_image_cpu_job(struct v3dv_queue *queue,
- struct v3dv_job *job,
- struct v3dv_submit_sync_info *sync_info)
-{
- assert(job->type == V3DV_JOB_TYPE_CPU_COPY_BUFFER_TO_IMAGE);
- struct v3dv_copy_buffer_to_image_cpu_job_info *info =
- &job->cpu.copy_buffer_to_image;
-
- /* Wait for all GPU work to finish first, since we may be accessing
- * the BOs involved in the operation.
- */
- VkResult result = queue_wait_idle(queue, sync_info);
- if (result != VK_SUCCESS)
- return result;
-
- /* Map BOs */
- struct v3dv_bo *dst_bo = info->image->planes[info->plane].mem->bo;
- assert(!dst_bo->map || dst_bo->map_size == dst_bo->size);
- if (!dst_bo->map && !v3dv_bo_map(job->device, dst_bo, dst_bo->size))
- return vk_error(job->device, VK_ERROR_OUT_OF_HOST_MEMORY);
- void *dst_ptr = dst_bo->map;
-
- struct v3dv_bo *src_bo = info->buffer->mem->bo;
- assert(!src_bo->map || src_bo->map_size == src_bo->size);
- if (!src_bo->map && !v3dv_bo_map(job->device, src_bo, src_bo->size))
- return vk_error(job->device, VK_ERROR_OUT_OF_HOST_MEMORY);
- void *src_ptr = src_bo->map;
-
- const struct v3d_resource_slice *slice =
- &info->image->planes[info->plane].slices[info->mip_level];
-
- const struct pipe_box box = {
- info->image_offset.x, info->image_offset.y, info->base_layer,
- info->image_extent.width, info->image_extent.height, info->layer_count,
- };
-
- /* Copy each layer */
- for (uint32_t i = 0; i < info->layer_count; i++) {
- const uint32_t dst_offset =
- v3dv_layer_offset(info->image, info->mip_level,
- info->base_layer + i, info->plane);
- const uint32_t src_offset =
- info->buffer->mem_offset + info->buffer_offset +
- info->buffer_layer_stride * i;
- v3d_store_tiled_image(
- dst_ptr + dst_offset, slice->stride,
- src_ptr + src_offset, info->buffer_stride,
- slice->tiling, info->image->planes[info->plane].cpp, slice->padded_height, &box);
- }
-
- return VK_SUCCESS;
-}
-
-static VkResult
handle_timestamp_query_cpu_job(struct v3dv_queue *queue, struct v3dv_job *job,
struct v3dv_submit_sync_info *sync_info)
{
@@ -1014,8 +960,6 @@ queue_handle_job(struct v3dv_queue *queue,
return handle_end_query_cpu_job(job, counter_pass_idx);
case V3DV_JOB_TYPE_CPU_COPY_QUERY_RESULTS:
return handle_copy_query_results_cpu_job(job);
- case V3DV_JOB_TYPE_CPU_COPY_BUFFER_TO_IMAGE:
- return handle_copy_buffer_to_image_cpu_job(queue, job, sync_info);
case V3DV_JOB_TYPE_CPU_CSD_INDIRECT:
return handle_csd_indirect_cpu_job(queue, job, sync_info);
case V3DV_JOB_TYPE_CPU_TIMESTAMP_QUERY: