功能:完善通用云管工作台、审计与诊断能力
这个提交包含在:
1 父节点
5ac692724d
当前提交
9f05aa20ea
225 个文件已更改
+14266
-141
没有与搜索条件相匹配的文件
@@ -0,0 +1,50 @@
|
||||
/* Fake NVIDIA entrypoints for exercising the real preload adapter's ABI.
|
||||
* No GPU or proprietary library is used. Compile with vendor/NvFBC.h.
|
||||
*/
|
||||
#include "NvFBC.h"
|
||||
extern void *dlsym(void *, const char *);
|
||||
static int test_case, captured_cursor, output_id, sampling;
|
||||
static NVFBCSTATUS NVFBCAPI mock_capture(const NVFBC_SESSION_HANDLE handle,
|
||||
NVFBC_CREATE_CAPTURE_SESSION_PARAMS *p) {
|
||||
(void)handle;
|
||||
captured_cursor = p->bWithCursor;
|
||||
output_id = p->dwOutputId;
|
||||
sampling = p->dwSamplingRateMs;
|
||||
return test_case == 6 ? NVFBC_ERR_INTERNAL : NVFBC_SUCCESS;
|
||||
}
|
||||
static NVFBCSTATUS NVFBCAPI mock_status(const NVFBC_SESSION_HANDLE handle,
|
||||
NVFBC_GET_STATUS_PARAMS *p) {
|
||||
(void)handle;
|
||||
p->bIsCapturePossible = test_case == 4 ? NVFBC_FALSE : NVFBC_TRUE;
|
||||
p->screenSize = (NVFBC_SIZE){test_case == 3 ? 1920 : 2560, 1440};
|
||||
p->bXRandRAvailable = NVFBC_TRUE;
|
||||
p->dwOutputNum = test_case == 5 ? 2 : 0;
|
||||
return NVFBC_SUCCESS;
|
||||
}
|
||||
NVFBCSTATUS NVFBCAPI NvFBCCreateInstance(NVFBC_API_FUNCTION_LIST *f) {
|
||||
f->nvFBCCreateCaptureSession = mock_capture;
|
||||
f->nvFBCGetStatus = mock_status;
|
||||
return NVFBC_SUCCESS;
|
||||
}
|
||||
int run_test(int which, int leased, int headless) {
|
||||
test_case = which;
|
||||
PNVFBCCREATEINSTANCE create = (PNVFBCCREATEINSTANCE)dlsym((void *)0, "NvFBCCreateInstance");
|
||||
if (!create) return 1;
|
||||
NVFBC_API_FUNCTION_LIST f = {.dwVersion=NVFBC_VERSION};
|
||||
if (create(&f) != NVFBC_SUCCESS) return 2;
|
||||
NVFBC_CREATE_CAPTURE_SESSION_PARAMS p = {
|
||||
.dwVersion = which == 7 ? 0 : NVFBC_CREATE_CAPTURE_SESSION_PARAMS_VER,
|
||||
.bWithCursor = NVFBC_TRUE, .dwOutputId = 73, .dwSamplingRateMs=16
|
||||
};
|
||||
NVFBCSTATUS status = f.nvFBCCreateCaptureSession(1, &p);
|
||||
if (status != (which == 6 ? NVFBC_ERR_INTERNAL : NVFBC_SUCCESS)) return 3;
|
||||
if (captured_cursor != (leased ? NVFBC_FALSE : NVFBC_TRUE)) return 4;
|
||||
if (p.bWithCursor != NVFBC_TRUE || p.dwOutputId != 73 || output_id != 73 || sampling != 16) return 5;
|
||||
NVFBC_GET_STATUS_PARAMS s = {.dwVersion=which == 8 ? 0 : NVFBC_GET_STATUS_PARAMS_VER};
|
||||
if (f.nvFBCGetStatus(1, &s) != NVFBC_SUCCESS) return 6;
|
||||
int enumerate_root = headless && which != 3 && which != 4 && which != 5;
|
||||
if (enumerate_root) {
|
||||
if (s.dwOutputNum != 1 || s.bXRandRAvailable || s.outputs[0].trackedBox.w != 2560 || s.outputs[0].trackedBox.h != 1440) return 7;
|
||||
} else if (s.dwOutputNum != (which == 5 ? 2U : 0U) || !s.bXRandRAvailable) return 8;
|
||||
return 0;
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户