Add render_format to get_outputs IPC command

Addresses https://github.com/swaywm/sway/issues/6681
This commit is contained in:
Ian Hattendorf 2023-08-15 13:30:58 -07:00
parent bb91b7f5fa
commit 1929112b23
No known key found for this signature in database
GPG key ID: BE8B1B445E06437D
5 changed files with 30 additions and 2 deletions

View file

@ -197,4 +197,6 @@ void handle_output_power_manager_set_mode(struct wl_listener *listener,
struct sway_output_non_desktop *output_non_desktop_create(struct wlr_output *wlr_output); struct sway_output_non_desktop *output_non_desktop_create(struct wlr_output *wlr_output);
const char *sway_render_format_to_string(uint32_t render_format);
#endif #endif

View file

@ -377,6 +377,21 @@ static const uint32_t *bit_depth_preferences[] = {
}, },
}; };
const char *sway_render_format_to_string(uint32_t render_format) {
switch (render_format) {
case DRM_FORMAT_XRGB2101010:
return "XRGB2101010";
case DRM_FORMAT_XBGR2101010:
return "XBGR2101010";
case DRM_FORMAT_XRGB8888:
return "XRGB8888";
case DRM_FORMAT_INVALID:
return "INVALID";
default:
return "UNKNOWN";
}
}
static void queue_output_config(struct output_config *oc, static void queue_output_config(struct output_config *oc,
struct sway_output *output, struct wlr_output_state *pending) { struct sway_output *output, struct wlr_output_state *pending) {
if (output == root->fallback_output) { if (output == root->fallback_output) {

View file

@ -689,6 +689,10 @@ void ipc_client_handle_command(struct ipc_client *client, uint32_t payload_lengt
const char *subpixel = sway_wl_output_subpixel_to_string(output->wlr_output->subpixel); const char *subpixel = sway_wl_output_subpixel_to_string(output->wlr_output->subpixel);
json_object_object_add(output_json, "subpixel_hinting", json_object_new_string(subpixel)); json_object_object_add(output_json, "subpixel_hinting", json_object_new_string(subpixel));
const char *render_format = sway_render_format_to_string(output->wlr_output->render_format);
json_object_object_add(output_json, "render_format", json_object_new_string(render_format));
json_object_array_add(outputs, output_json); json_object_array_add(outputs, output_json);
} }
struct sway_output *output; struct sway_output *output;

View file

@ -225,7 +225,10 @@ following properties:
: The scale currently in use on the output or _-1_ for disabled outputs : The scale currently in use on the output or _-1_ for disabled outputs
|- subpixel_hinting |- subpixel_hinting
: string : string
: The subpixel hinting current in use on the output. This can be _rgb_, _bgr_, _vrgb_, _vbgr_, or _none_ : The subpixel hinting currently in use on the output. This can be _rgb_, _bgr_, _vrgb_, _vbgr_, or _none_
|- render_format
: string
: The render format currently in use on the output.
|- transform |- transform
: string : string
: The transform currently in use for the output. This can be _normal_, _90_, : The transform currently in use for the output. This can be _normal_, _90_,
@ -258,6 +261,7 @@ following properties:
"primary": false, "primary": false,
"scale": 1.0, "scale": 1.0,
"subpixel_hinting": "rgb", "subpixel_hinting": "rgb",
"render_format": "XRGB8888",
"transform": "normal", "transform": "normal",
"current_workspace": "1", "current_workspace": "1",
"modes": [ "modes": [

View file

@ -194,13 +194,14 @@ static void pretty_print_output(json_object *o) {
json_object_object_get_ex(o, "current_workspace", &ws); json_object_object_get_ex(o, "current_workspace", &ws);
json_object_object_get_ex(o, "non_desktop", &non_desktop); json_object_object_get_ex(o, "non_desktop", &non_desktop);
json_object *make, *model, *serial, *scale, *scale_filter, *subpixel, json_object *make, *model, *serial, *scale, *scale_filter, *subpixel,
*transform, *max_render_time, *adaptive_sync_status; *render_format, *transform, *max_render_time, *adaptive_sync_status;
json_object_object_get_ex(o, "make", &make); json_object_object_get_ex(o, "make", &make);
json_object_object_get_ex(o, "model", &model); json_object_object_get_ex(o, "model", &model);
json_object_object_get_ex(o, "serial", &serial); json_object_object_get_ex(o, "serial", &serial);
json_object_object_get_ex(o, "scale", &scale); json_object_object_get_ex(o, "scale", &scale);
json_object_object_get_ex(o, "scale_filter", &scale_filter); json_object_object_get_ex(o, "scale_filter", &scale_filter);
json_object_object_get_ex(o, "subpixel_hinting", &subpixel); json_object_object_get_ex(o, "subpixel_hinting", &subpixel);
json_object_object_get_ex(o, "render_format", &render_format);
json_object_object_get_ex(o, "transform", &transform); json_object_object_get_ex(o, "transform", &transform);
json_object_object_get_ex(o, "max_render_time", &max_render_time); json_object_object_get_ex(o, "max_render_time", &max_render_time);
json_object_object_get_ex(o, "adaptive_sync_status", &adaptive_sync_status); json_object_object_get_ex(o, "adaptive_sync_status", &adaptive_sync_status);
@ -232,6 +233,7 @@ static void pretty_print_output(json_object *o) {
" Scale factor: %f\n" " Scale factor: %f\n"
" Scale filter: %s\n" " Scale filter: %s\n"
" Subpixel hinting: %s\n" " Subpixel hinting: %s\n"
" Render format: %s\n"
" Transform: %s\n" " Transform: %s\n"
" Workspace: %s\n", " Workspace: %s\n",
json_object_get_string(name), json_object_get_string(name),
@ -247,6 +249,7 @@ static void pretty_print_output(json_object *o) {
json_object_get_double(scale), json_object_get_double(scale),
json_object_get_string(scale_filter), json_object_get_string(scale_filter),
json_object_get_string(subpixel), json_object_get_string(subpixel),
json_object_get_string(render_format),
json_object_get_string(transform), json_object_get_string(transform),
json_object_get_string(ws) json_object_get_string(ws)
); );