mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-29 00:27:18 +00:00
[host] all: tell the client if HDR PQ is in use or not
This commit is contained in:
parent
2f36aaff5c
commit
b41840b010
@ -44,11 +44,10 @@ CaptureResult;
|
|||||||
typedef enum CaptureFormat
|
typedef enum CaptureFormat
|
||||||
{
|
{
|
||||||
// frame formats
|
// frame formats
|
||||||
CAPTURE_FMT_BGRA ,
|
CAPTURE_FMT_BGRA ,
|
||||||
CAPTURE_FMT_RGBA ,
|
CAPTURE_FMT_RGBA ,
|
||||||
CAPTURE_FMT_RGBA10_SDR,
|
CAPTURE_FMT_RGBA10 ,
|
||||||
CAPTURE_FMT_RGBA10_HDR,
|
CAPTURE_FMT_RGBA16F,
|
||||||
CAPTURE_FMT_RGBA16F ,
|
|
||||||
|
|
||||||
// pointer formats
|
// pointer formats
|
||||||
CAPTURE_FMT_COLOR ,
|
CAPTURE_FMT_COLOR ,
|
||||||
@ -79,6 +78,8 @@ typedef struct CaptureFrame
|
|||||||
unsigned int pitch;
|
unsigned int pitch;
|
||||||
unsigned int stride;
|
unsigned int stride;
|
||||||
CaptureFormat format;
|
CaptureFormat format;
|
||||||
|
bool hdr;
|
||||||
|
bool hdrPQ;
|
||||||
CaptureRotation rotation;
|
CaptureRotation rotation;
|
||||||
uint32_t damageRectsCount;
|
uint32_t damageRectsCount;
|
||||||
FrameDamageRect damageRects[KVMFR_MAX_DAMAGE_RECTS];
|
FrameDamageRect damageRects[KVMFR_MAX_DAMAGE_RECTS];
|
||||||
|
@ -802,7 +802,7 @@ next_output:
|
|||||||
// we convert to HDR10 to save bandwidth
|
// we convert to HDR10 to save bandwidth
|
||||||
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
case DXGI_FORMAT_R16G16B16A16_FLOAT:
|
||||||
this->dxgiFormat = DXGI_FORMAT_R10G10B10A2_UNORM;
|
this->dxgiFormat = DXGI_FORMAT_R10G10B10A2_UNORM;
|
||||||
this->format = CAPTURE_FMT_RGBA10_HDR;
|
this->format = CAPTURE_FMT_RGBA10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -1607,6 +1607,8 @@ static CaptureResult dxgi_waitFrame(CaptureFrame * frame, const size_t maxFrameS
|
|||||||
frame->pitch = this->pitch;
|
frame->pitch = this->pitch;
|
||||||
frame->stride = this->stride;
|
frame->stride = this->stride;
|
||||||
frame->format = this->format;
|
frame->format = this->format;
|
||||||
|
frame->hdr = this->hdr;
|
||||||
|
frame->hdrPQ = false;
|
||||||
frame->rotation = this->rotation;
|
frame->rotation = this->rotation;
|
||||||
|
|
||||||
frame->damageRectsCount = tex->damageRectsCount;
|
frame->damageRectsCount = tex->damageRectsCount;
|
||||||
|
@ -757,8 +757,10 @@ static CaptureResult nvfbc_waitFrame(CaptureFrame * frame,
|
|||||||
|
|
||||||
updateDamageRects(frame);
|
updateDamageRects(frame);
|
||||||
|
|
||||||
frame->format = this->grabInfo.bIsHDR ?
|
frame->format = CAPTURE_FMT_RGBA10;
|
||||||
CAPTURE_FMT_RGBA10_HDR : CAPTURE_FMT_RGBA10_SDR;
|
frame->hdr = this->grabInfo.bIsHDR;
|
||||||
|
frame->hdrPQ = true;
|
||||||
|
|
||||||
return CAPTURE_RESULT_OK;
|
return CAPTURE_RESULT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,22 +244,19 @@ static bool sendFrame(void)
|
|||||||
app.frameIndex = 0;
|
app.frameIndex = 0;
|
||||||
|
|
||||||
KVMFRFrame * fi = lgmpHostMemPtr(app.frameMemory[app.frameIndex]);
|
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)
|
switch(frame.format)
|
||||||
{
|
{
|
||||||
case CAPTURE_FMT_BGRA : fi->type = FRAME_TYPE_BGRA ; break;
|
case CAPTURE_FMT_BGRA : fi->type = FRAME_TYPE_BGRA ; break;
|
||||||
case CAPTURE_FMT_RGBA : fi->type = FRAME_TYPE_RGBA ; 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;
|
fi->type = FRAME_TYPE_RGBA10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CAPTURE_FMT_RGBA10_HDR:
|
|
||||||
fi->type = FRAME_TYPE_RGBA10;
|
|
||||||
flags |= FRAME_FLAG_HDR;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CAPTURE_FMT_RGBA16F:
|
case CAPTURE_FMT_RGBA16F:
|
||||||
fi->type = FRAME_TYPE_RGBA16F;
|
fi->type = FRAME_TYPE_RGBA16F;
|
||||||
flags |= FRAME_FLAG_HDR;
|
flags |= FRAME_FLAG_HDR;
|
||||||
|
Loading…
Reference in New Issue
Block a user