diff options
author | Rafael Antognolli <[email protected]> | 2019-12-06 14:38:07 -0800 |
---|---|---|
committer | Rafael Antognolli <[email protected]> | 2019-12-13 20:53:44 +0000 |
commit | e87d7fea8a5554b29f3f5a6d57af5ce0136073e1 (patch) | |
tree | 5917df0b481ffdac35e10a2a2a2a9bb7d7ac797b /src/vulkan | |
parent | ef5266ebd50e7fa65c56bdb623e12ca8c233b470 (diff) |
vulkan/overlay: Add a control socket.
v2: Use a socket instead of named pipe.
Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/vulkan')
-rw-r--r-- | src/vulkan/overlay-layer/overlay.cpp | 3 | ||||
-rw-r--r-- | src/vulkan/overlay-layer/overlay_params.c | 20 | ||||
-rw-r--r-- | src/vulkan/overlay-layer/overlay_params.h | 2 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/vulkan/overlay-layer/overlay.cpp b/src/vulkan/overlay-layer/overlay.cpp index 652478407e7..f1cfb172b19 100644 --- a/src/vulkan/overlay-layer/overlay.cpp +++ b/src/vulkan/overlay-layer/overlay.cpp @@ -37,6 +37,7 @@ #include "util/list.h" #include "util/ralloc.h" #include "util/os_time.h" +#include "util/os_socket.h" #include "util/simple_mtx.h" #include "vk_enum_to_str.h" @@ -320,6 +321,8 @@ static void destroy_instance_data(struct instance_data *data) { if (data->params.output_file) fclose(data->params.output_file); + if (data->params.control >= 0) + os_socket_close(data->params.control); unmap_object(HKEY(data->instance)); ralloc_free(data); } diff --git a/src/vulkan/overlay-layer/overlay_params.c b/src/vulkan/overlay-layer/overlay_params.c index 2a09b6cf081..afc17ec07a9 100644 --- a/src/vulkan/overlay-layer/overlay_params.c +++ b/src/vulkan/overlay-layer/overlay_params.c @@ -24,9 +24,13 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> +#include <string.h> +#include <errno.h> #include "overlay_params.h" +#include "util/os_socket.h" + static enum overlay_param_position parse_position(const char *str) { @@ -47,6 +51,21 @@ parse_output_file(const char *str) return fopen(str, "w+"); } +static int +parse_control(const char *str) +{ + int ret = os_socket_listen_abstract(str, 1); + if (ret < 0) { + fprintf(stderr, "ERROR: Couldn't create socket pipe at '%s'\n", str); + fprintf(stderr, "ERROR: '%s'\n", strerror(errno)); + return ret; + } + + os_socket_block(ret, false); + + return ret; +} + static uint32_t parse_fps_sampling_period(const char *str) { @@ -148,6 +167,7 @@ parse_overlay_env(struct overlay_params *params, params->enabled[OVERLAY_PARAM_ENABLED_frame_timing] = true; params->fps_sampling_period = 500000; /* 500ms */ params->width = params->height = 300; + params->control = -1; if (!env) return; diff --git a/src/vulkan/overlay-layer/overlay_params.h b/src/vulkan/overlay-layer/overlay_params.h index a145dd42934..7ff092daeff 100644 --- a/src/vulkan/overlay-layer/overlay_params.h +++ b/src/vulkan/overlay-layer/overlay_params.h @@ -69,6 +69,7 @@ extern "C" { OVERLAY_PARAM_CUSTOM(width) \ OVERLAY_PARAM_CUSTOM(height) \ OVERLAY_PARAM_CUSTOM(no_display) \ + OVERLAY_PARAM_CUSTOM(control) \ OVERLAY_PARAM_CUSTOM(help) enum overlay_param_position { @@ -91,6 +92,7 @@ struct overlay_params { bool enabled[OVERLAY_PARAM_ENABLED_MAX]; enum overlay_param_position position; FILE *output_file; + int control; uint32_t fps_sampling_period; /* us */ bool help; bool no_display; |