mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 13:00:09 +01:00
vulkan/overlay: Add a control socket.
v2: Use a socket instead of named pipe. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
parent
ef5266ebd5
commit
e87d7fea8a
3 changed files with 25 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue