Skip to content

Commit

Permalink
[host] all: tell the client if HDR PQ is in use or not
Browse files Browse the repository at this point in the history
  • Loading branch information
gnif committed Oct 26, 2023
1 parent 2f36aaf commit b41840b
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 15 deletions.
11 changes: 6 additions & 5 deletions host/include/interface/capture.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,10 @@ CaptureResult;
typedef enum CaptureFormat
{
// frame formats
CAPTURE_FMT_BGRA ,
CAPTURE_FMT_RGBA ,
CAPTURE_FMT_RGBA10_SDR,
CAPTURE_FMT_RGBA10_HDR,
CAPTURE_FMT_RGBA16F ,
CAPTURE_FMT_BGRA ,
CAPTURE_FMT_RGBA ,
CAPTURE_FMT_RGBA10 ,
CAPTURE_FMT_RGBA16F,

// pointer formats
CAPTURE_FMT_COLOR ,
Expand Down Expand Up @@ -79,6 +78,8 @@ typedef struct CaptureFrame
unsigned int pitch;
unsigned int stride;
CaptureFormat format;
bool hdr;
bool hdrPQ;
CaptureRotation rotation;
uint32_t damageRectsCount;
FrameDamageRect damageRects[KVMFR_MAX_DAMAGE_RECTS];
Expand Down
4 changes: 3 additions & 1 deletion host/platform/Windows/capture/DXGI/src/dxgi.c
Original file line number Diff line number Diff line change
Expand Up @@ -802,7 +802,7 @@ static bool dxgi_init(void)
// we convert to HDR10 to save bandwidth
case DXGI_FORMAT_R16G16B16A16_FLOAT:
this->dxgiFormat = DXGI_FORMAT_R10G10B10A2_UNORM;
this->format = CAPTURE_FMT_RGBA10_HDR;
this->format = CAPTURE_FMT_RGBA10;
break;

default:
Expand Down Expand Up @@ -1607,6 +1607,8 @@ static CaptureResult dxgi_waitFrame(CaptureFrame * frame, const size_t maxFrameS
frame->pitch = this->pitch;
frame->stride = this->stride;
frame->format = this->format;
frame->hdr = this->hdr;
frame->hdrPQ = false;
frame->rotation = this->rotation;

frame->damageRectsCount = tex->damageRectsCount;
Expand Down
6 changes: 4 additions & 2 deletions host/platform/Windows/capture/NVFBC/src/nvfbc.c
Original file line number Diff line number Diff line change
Expand Up @@ -757,8 +757,10 @@ static CaptureResult nvfbc_waitFrame(CaptureFrame * frame,

updateDamageRects(frame);

frame->format = this->grabInfo.bIsHDR ?
CAPTURE_FMT_RGBA10_HDR : CAPTURE_FMT_RGBA10_SDR;
frame->format = CAPTURE_FMT_RGBA10;
frame->hdr = this->grabInfo.bIsHDR;
frame->hdrPQ = true;

return CAPTURE_RESULT_OK;
}

Expand Down
11 changes: 4 additions & 7 deletions host/src/app.c
Original file line number Diff line number Diff line change
Expand Up @@ -244,22 +244,19 @@ static bool sendFrame(void)
app.frameIndex = 0;

KVMFRFrame * fi = lgmpHostMemPtr(app.frameMemory[app.frameIndex]);
KVMFRFrameFlags flags = 0;
KVMFRFrameFlags flags =
(frame.hdr ? FRAME_FLAG_HDR : 0) |
(frame.hdrPQ ? FRAME_FLAG_HDR_PQ : 0);

switch(frame.format)
{
case CAPTURE_FMT_BGRA : fi->type = FRAME_TYPE_BGRA ; break;
case CAPTURE_FMT_RGBA : fi->type = FRAME_TYPE_RGBA ; break;

case CAPTURE_FMT_RGBA10_SDR:
case CAPTURE_FMT_RGBA10:
fi->type = FRAME_TYPE_RGBA10;
break;

case CAPTURE_FMT_RGBA10_HDR:
fi->type = FRAME_TYPE_RGBA10;
flags |= FRAME_FLAG_HDR;
break;

case CAPTURE_FMT_RGBA16F:
fi->type = FRAME_TYPE_RGBA16F;
flags |= FRAME_FLAG_HDR;
Expand Down

0 comments on commit b41840b

Please sign in to comment.