aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2019-11-25 10:00:20 +1100
committerTimothy Arceri <[email protected]>2019-11-25 10:10:14 +1100
commitef54f15da9ac11fafcbd6c91a7fcdac734436db8 (patch)
tree5bd3bd116fe99116a7767a042a0b1150a894d295
parenta2689ebcd68ccf9b3bcbf9bae926c70beccd6a11 (diff)
radv: add some infrastructure for fresh forks for each secure compile
In the following commits we want to be able to fork an existing lightweight fork created at device creation time. In order for the user facing process to communicate with this new fresh fork we create some members here to hold FIFO file descriptors and a unique id. Here we also add a new fork enum that we use to tell the lightweight process to create a fresh fork. For more information on why we create a fresh fork see the following commits.
-rw-r--r--src/amd/vulkan/radv_private.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index e4ea4d25635..8066505e245 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -135,6 +135,7 @@ enum radv_secure_compile_type {
RADV_SC_TYPE_COMPILE_PIPELINE_FINISHED,
RADV_SC_TYPE_READ_DISK_CACHE,
RADV_SC_TYPE_WRITE_DISK_CACHE,
+ RADV_SC_TYPE_FORK_DEVICE,
RADV_SC_TYPE_DESTROY_DEVICE,
RADV_SC_TYPE_COUNT
};
@@ -745,10 +746,19 @@ struct radv_bo_list {
};
struct radv_secure_compile_process {
- /* Secure process file descriptors */
+ /* Secure process file descriptors. Used to communicate between the
+ * user facing device and the idle forked device used to fork a clean
+ * process for each new pipeline compile.
+ */
int fd_secure_input;
int fd_secure_output;
+ /* FIFO file descriptors used to communicate between the user facing
+ * device and the secure process that does the actual secure compile.
+ */
+ int fd_server;
+ int fd_client;
+
/* Secure compile process id */
pid_t sc_pid;
@@ -760,6 +770,9 @@ struct radv_secure_compile_state {
struct radv_secure_compile_process *secure_compile_processes;
uint32_t secure_compile_thread_counter;
mtx_t secure_compile_mutex;
+
+ /* Unique process ID used to build name for FIFO file descriptor */
+ char *uid;
};
struct radv_device {