การทดสอบโปรแกรมคุณภาพของ drawElements

AOSP มีชุดทดสอบ GPU ของโปรแกรมคุณภาพของ drawElements (deqp) ที่ https://android.googlesource.com/platform/external/deqp หน้านี้จะอธิบายรายละเอียดวิธีทำให้ชุดทดสอบ deqp ใช้งานได้ในสภาพแวดล้อมใหม่

หากต้องการทำงานกับโค้ดที่ส่งล่าสุด ให้ใช้สาขา deqp-dev สำหรับโค้ดที่ตรงกับรุ่น Android CTS ที่เฉพาะเจาะจง ให้ใช้สาขา release-code-name-release (เช่น สำหรับ Android 6.0 ให้ใช้สาขา marshmallow-release)

เลย์เอาต์แหล่งที่มา

เลย์เอาต์ซอร์สโค้ดสําหรับโมดูลทดสอบ deqp และไลบรารีสนับสนุนแสดงอยู่ในตารางด้านล่าง (รายการนี้ไม่ครอบคลุมทั้งหมด แต่ไฮไลต์ไดเรกทอรีที่สําคัญที่สุด)

ไดเรกทอรี คำอธิบาย
android

แหล่งที่มาของผู้ทดสอบ Android และสคริปต์การสร้าง

data

ไฟล์ข้อมูลทดสอบ

modules

แหล่งที่มาของโมดูลทดสอบ

modules/egl

โมดูล EGL

modules/gles2

โมดูล GLES2

modules/gles3

โมดูล GLES3

modules/gles31

โมดูล GLES3.1

modules/gles32

โมดูล GLES3.2

targets

ไฟล์การกำหนดค่าการสร้างสำหรับเป้าหมายที่เฉพาะเจาะจง

framework

เฟรมเวิร์กและยูทิลิตีของโมดูลทดสอบ deqp

framework/delibs

ความสามารถในการย้ายข้อมูลพื้นฐานและไลบรารีการสร้าง

framework/platform

พอร์ตแพลตฟอร์ม

framework/qphelper

ไลบรารีการผสานรวมโปรแกรมทดสอบ (ค)

framework/common

เฟรมเวิร์ก Deqp (C++)

framework/opengl, framework/egl

ยูทิลิตีเฉพาะ API

execserver

แหล่งที่มาของ ExecServer ฝั่งอุปกรณ์

executor

เครื่องมือและยูทิลิตีเชลล์ของโปรแกรมดำเนินการทดสอบฝั่งโฮสต์

external

สร้างไดเรกทอรีสแต็บสำหรับไลบรารีภายนอก libpng และ zlib

คอมโพเนนต์โอเพนซอร์ส

deqp ใช้ libpng และ zlib ซึ่งดึงข้อมูลได้โดยใช้สคริปต์ platform/external/deqp/external/fetch_sources.py หรือผ่าน git จาก platform/external/[libpng,zlib]

สร้างโปรแกรมทดสอบ

เฟรมเวิร์กการทดสอบได้รับการออกแบบโดยคำนึงถึงความสามารถในการเคลื่อนย้ายได้ง่าย ข้อกำหนดที่จําเป็นเพียงอย่างเดียวคือต้องรองรับ C++ อย่างเต็มรูปแบบและไลบรารีระบบมาตรฐานสําหรับ I/O, เทรด และซ็อกเก็ต

ระบบบิลด์ CMake

แหล่งที่มาของ deqp มีสคริปต์การสร้างสำหรับ CMake ซึ่งเป็นเครื่องมือที่แนะนำสำหรับการคอมไพล์โปรแกรมทดสอบ

CMake เป็นระบบการต่อยอดแบบโอเพนซอร์สที่รองรับแพลตฟอร์มและเครื่องมือต่างๆ หลายรายการ CMake จะสร้างไฟล์ make ดั้งเดิมหรือไฟล์โปรเจ็กต์ IDE จากไฟล์การกำหนดค่าที่ไม่ขึ้นอยู่กับเป้าหมาย ดูข้อมูลเพิ่มเติมเกี่ยวกับ CMake ได้ที่เอกสารประกอบของ CMake

CMake รองรับและแนะนำให้ใช้บิลด์นอกสคีมาซอร์สโค้ด กล่าวคือ คุณควรสร้างไฟล์ make หรือไฟล์โปรเจ็กต์ในไดเรกทอรีบิลด์แยกต่างหากเสมอ ซึ่งอยู่นอกสคีมาซอร์สโค้ด CMake ไม่มีเป้าหมาย "distclean" ใดๆ คุณจึงต้องนําไฟล์ที่ CMake สร้างขึ้นออกด้วยตนเอง

ตัวเลือกการกำหนดค่าจะส่งไปยัง CMake โดยใช้ไวยากรณ์ -DOPTION_NAME=VALUE ตัวเลือกที่ใช้กันโดยทั่วไปสำหรับ deqp มีดังนี้

ตัวเลือกการกําหนดค่า คำอธิบาย
DEQP_TARGET

ชื่อเป้าหมาย เช่น "android"

สคริปต์ CMake ของ deqp จะมีไฟล์ targets/DEQP_TARGET/DEQP_TARGET.cmake และคุณควรเห็นตัวเลือกการสร้างสำหรับเป้าหมายที่เฉพาะเจาะจงจากตรงนั้น

CMAKE_TOOLCHAIN_FILE

เส้นทางไปยังไฟล์เครื่องมือสำหรับ CMake ใช้สำหรับการคอมไพล์ข้าม

CMAKE_BUILD_TYPE

ประเภทการสร้างสำหรับเป้าหมายของไฟล์ Make ค่าที่ใช้ได้มีดังนี้ "Debug" และ "Release"

โปรดทราบว่าการตีความและประเภทเริ่มต้นจะขึ้นอยู่กับระบบการสร้างที่กำหนดเป้าหมาย ดูรายละเอียดได้ในเอกสารประกอบของ CMake

สร้างไฟล์บิลด์เป้าหมาย

ระบบบิลด์ deqp ได้รับการกําหนดค่าสําหรับเป้าหมายใหม่โดยใช้ไฟล์บิลด์เป้าหมาย ไฟล์บิลด์เป้าหมายจะกำหนดฟีเจอร์ที่แพลตฟอร์มรองรับ รวมถึงไลบรารีหรือเส้นทางรวมเพิ่มเติมที่จำเป็น ชื่อไฟล์เป้าหมายต้องเป็นไปตามtargets/NAME/NAME.cmakeรูปแบบ และระบบจะเลือกเป้าหมายโดยใช้พารามิเตอร์บิลด์ DEQP_TARGET

เส้นทางไฟล์ในไฟล์เป้าหมายจะสัมพันธ์กับไดเรกทอรี deqp หลัก ไม่ใช่ไดเรกทอรี targets/NAME ตัวแปรมาตรฐานต่อไปนี้สามารถตั้งค่าได้โดยไฟล์บิลด์เป้าหมาย

ตัวแปร คำอธิบาย
DEQP_TARGET_NAME

ชื่อเป้าหมาย (จะรวมอยู่ในบันทึกการทดสอบ)

DEQP_SUPPORT_GLES2

รองรับ GLES2 หรือไม่ (ค่าเริ่มต้น: ปิด)

DEQP_GLES2_LIBRARIES

ไลบรารี GLES2 (เว้นว่างไว้หากระบบไม่รองรับหรือใช้การโหลดแบบไดนามิก)

DEQP_SUPPORT_GLES3

รองรับ GLES3.x หรือไม่ (ค่าเริ่มต้น: ปิด)

DEQP_GLES3_LIBRARIES

ไลบรารี GLES3.x (ปล่อยว่างไว้หากไม่รองรับหรือใช้การโหลดแบบไดนามิก)

DEQP_SUPPORT_VG

รองรับ OpenVG หรือไม่ (ค่าเริ่มต้น: ปิด)

DEQP_OPENVG_LIBRARIES

ไลบรารี OpenVG (ปล่อยว่างไว้หากระบบไม่รองรับหรือใช้การโหลดแบบไดนามิก)

DEQP_SUPPORT_EGL

รองรับ EGL หรือไม่ (ค่าเริ่มต้น: ปิด)

DEQP_EGL_LIBRARIES

ไลบรารี EGL (ปล่อยว่างไว้หากระบบไม่รองรับหรือใช้การโหลดแบบไดนามิก)

DEQP_PLATFORM_LIBRARIES

ไลบรารีเฉพาะแพลตฟอร์มเพิ่มเติมที่จําเป็นสําหรับการลิงก์

DEQP_PLATFORM_COPY_LIBRARIES

รายการไลบรารีที่คัดลอกไปยังไดเรกทอรีบิลด์ไบนารีทดสอบแต่ละรายการ ใช้เพื่อคัดลอกไลบรารีที่จําเป็นสําหรับการทดสอบแต่ไม่อยู่ในเส้นทางการค้นหาเริ่มต้นได้

TCUTIL_PLATFORM_SRCS

รายการแหล่งที่มาของพอร์ตแพลตฟอร์ม แหล่งที่มาเริ่มต้นจะกำหนดตามความสามารถและระบบปฏิบัติการ

หมายเหตุ: เส้นทางจะสัมพันธ์กับ framework/platform

ไฟล์บิลด์เป้าหมายสามารถเพิ่มเส้นทางรวมหรือลิงก์เพิ่มเติมได้โดยใช้ฟังก์ชัน CMake include_directories() และ link_directories()

บิลด์ Win32

วิธีที่ง่ายที่สุดในการสร้างโมดูล deqp สำหรับ Windows คือการใช้ระบบการคอมไพล์ CMake คุณจะต้องมี CMake 2.6.12 ขึ้นไปและคอมไพเลอร์ Microsoft Visual C/C++ deqp ได้รับการทดสอบกับ Visual Studio 2013 แล้ว

คุณสร้างไฟล์โปรเจ็กต์ Visual Studio ได้ด้วยคำสั่งต่อไปนี้

cmake path\to\src\deqp -G "Visual Studio 12"

คุณสร้างบิลด์ 64 บิตได้โดยเลือก "Visual Studio VERSION Win64" เป็นเครื่องมือสร้าง

cmake path\to\src\deqp -G "Visual Studio 12 Win64"

คุณยังสร้างไฟล์ Make ของ NMake ด้วยตัวเลือก -G "NMake Makefiles" และประเภทบิลด์ (-DCMAKE_BUILD_TYPE="Debug" หรือ "Release") ได้ด้วย

การสร้างบริบทการแสดงผล

คุณสร้างบริบทการแสดงภาพได้โดยใช้ WGL หรือ EGL ใน Windows

การรองรับ WGL

ไฟล์ไบนารี Win32 ทั้งหมดรองรับการสร้างบริบท GL ด้วย WGL เนื่องจากต้องใช้เฉพาะไลบรารีมาตรฐาน คุณเลือกบริบท WGL ได้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --deqp-gl-context-type=wgl ในโหมด WGL นั้น deqp จะใช้ส่วนขยาย WGL_EXT_create_context_es_profile เพื่อสร้างบริบท OpenGL ES โปรแกรมนี้ได้รับการทดสอบให้ทำงานร่วมกับไดรเวอร์ล่าสุดจาก NVIDIA และ Intel ไดรเวอร์ AMD ไม่รองรับส่วนขยายที่จําเป็น

การรองรับ EGL

deqp สร้างขึ้นด้วยการโหลดแบบไดนามิกสําหรับ EGL ใน Windows หาก DEQP_SUPPORT_EGL อยู่ในสถานะเปิด ซึ่งเป็นค่าเริ่มต้นในเป้าหมายส่วนใหญ่ จากนั้น หากโฮสต์มีไลบรารี EGL ให้ใช้งาน คุณจะทำการทดสอบกับไลบรารีเหล่านั้นได้โดยใช้พารามิเตอร์บรรทัดคำสั่ง --deqp-gl-context-type=egl

บิลด์ Android

บิลด์ Android ใช้สคริปต์บิลด์ CMake เพื่อสร้างโค้ดทดสอบเนทีฟ ส่วน Java เช่น เซิร์ฟเวอร์การเรียกใช้การทดสอบและ Test Application Stub จะคอมไพล์โดยใช้เครื่องมือสร้าง Android มาตรฐาน

หากต้องการคอมไพล์โปรแกรมทดสอบ deqp สําหรับ Android ด้วยสคริปต์การสร้างที่ให้มา คุณจะต้องมีสิ่งต่อไปนี้

  • Android NDK เวอร์ชันล่าสุด ไฟล์ android/scripts/common.py จะแสดงเวอร์ชันที่จําเป็น
  • SDK แบบสแตนด์อโลนของ Android ที่มี API 13, SDK Tools, SDK Platform-tools และ SDK packages เครื่องมือสร้าง
  • Apache Ant 1.9.4 (จําเป็นสําหรับการสร้างโค้ด Java)
  • CMake 2.8.12 ขึ้นไป
  • Python 2.6 ขึ้นไปในซีรีส์ 2.x ไม่รองรับ Python 3.x
  • สําหรับ Windows: NMake หรือ JOM ใน PATH
    • JOM ช่วยให้คุณสร้างได้เร็วขึ้น
  • ไม่บังคับ: Linux รองรับ Ninja make ด้วย

ไฟล์ไบนารีของ Ant และ SDK จะอยู่ที่ตำแหน่งตามตัวแปรสภาพแวดล้อม PATH ที่มีค่าเริ่มต้นบางอย่างที่ลบล้าง ตรรกะควบคุมโดย android/scripts/common.py

ไดเรกทอรี NDK ต้องเป็น ~/android-ndk-VERSION หรือ C:/android/android-ndk-VERSION หรือกำหนดผ่านตัวแปรสภาพแวดล้อม ANDROID_NDK_PATH

คอมโพเนนต์ Deqp ในอุปกรณ์, บริการเรียกใช้การทดสอบ และโปรแกรมทดสอบสร้างขึ้นโดยการเรียกใช้สคริปต์ android/scripts/build.py ระบบจะสร้าง .apk เวอร์ชันสุดท้ายใน android/package/bin และสามารถติดตั้งได้ด้วยสคริปต์ install.py หากใช้โปรแกรมดำเนินการบรรทัดคำสั่ง ระบบจะเปิด ExecService ด้วยสคริปต์ launch.py ในอุปกรณ์ผ่าน ADB สคริปต์จะเรียกใช้ได้จากไดเรกทอรีใดก็ได้

บิลด์ Linux

คุณสร้างไฟล์ไบนารีทดสอบและยูทิลิตีบรรทัดคำสั่งสำหรับ Linux ได้โดยการสร้างไฟล์ Make โดยใช้ CMake มีเป้าหมายการสร้างที่กําหนดไว้ล่วงหน้าหลายรายการที่มีประโยชน์เมื่อสร้างสําหรับ Linux

สร้างเป้าหมาย คำอธิบาย
default

เป้าหมายเริ่มต้นที่ใช้การตรวจสอบแพลตฟอร์ม CMake เพื่อพิจารณาการรองรับ API ต่างๆ

x11_glx

ใช้ GLX เพื่อสร้างบริบท OpenGL (ES)

x11_egl

ใช้ EGL เพื่อสร้างบริบท OpenGL (ES)

x11_egl_glx

รองรับทั้ง GLX และ EGL ด้วย X11

ใช้ -DCMAKE_BUILD_TYPE=<Debug|Release> เพื่อกำหนดประเภทการสร้างเสมอ Release เป็นค่าเริ่มต้นที่ดี หากไม่มีไฟล์นี้ ระบบจะสร้างบิลด์รุ่นเริ่มต้นที่ไม่ได้เพิ่มประสิทธิภาพ

คุณสามารถใช้อาร์กิวเมนต์บรรทัดคำสั่ง -DCMAKE_C_FLAGS และ -DCMAKE_CXX_FLAGS เพื่อส่งต่ออาร์กิวเมนต์พิเศษไปยังคอมไพเลอร์ได้ เช่น บิลด์ 32 บิตหรือ 64 บิตจะสร้างได้โดยการตั้งค่า -DCMAKE_C(XX)_FLAGS="-m32" หรือ "-m64" ตามลำดับ หากไม่ได้ระบุ ระบบจะใช้สถาปัตยกรรมเนทีฟของเครื่องมือ ซึ่งโดยทั่วไปจะเป็น 64 บิตในเครื่องมือ 64 บิต

คุณสามารถใช้อาร์กิวเมนต์ -DCMAKE_LIBRARY_PATH และ -DCMAKE_INCLUDE_PATH เพื่อให้ CMake เพิ่มไลบรารีหรือรวมเส้นทางการค้นหา

ตัวอย่างบรรทัดคำสั่งแบบเต็มที่ใช้สร้างการแก้ไขข้อบกพร่องแบบ 32 บิตกับส่วนหัวและไลบรารีของไดรเวอร์ในตำแหน่งที่กำหนดเองมีดังนี้

cmake <path to src>/deqp -DDEQP_TARGET=x11_egl -DCMAKE_C_FLAGS="-m32"
-DCMAKE_CXX_FLAGS="-m32" -DCMAKE_BUILD_TYPE=Debug
-DCMAKE_LIBRARY_PATH="PATH_TO_DRIVER/lib"
-DCMAKE_INCLUDE_PATH="PATH_TO_DRIVER/inc"
make -j4

การคอมไพล์แบบข้ามระบบ

คุณสามารถคอมไพล์ข้ามได้โดยใช้ไฟล์ CMake toolchain ไฟล์เครื่องมือระบุคอมไพเลอร์ที่จะใช้ รวมถึงเส้นทางการค้นหาที่กำหนดเองสำหรับไลบรารีและส่วนหัว ไฟล์เครื่องมือหลายรายการสำหรับสถานการณ์ทั่วไปจะรวมอยู่ในแพ็กเกจรุ่นในไดเรกทอรี framework/delibs/cmake

นอกเหนือจากตัวแปร CMake มาตรฐานแล้ว คุณยังตั้งค่าตัวแปรเฉพาะ deqp ต่อไปนี้ได้จากไฟล์เครื่องมือ โดยทั่วไป CMake จะตรวจหา DE_OS, DE_COMPILER และ DE_PTR_SIZE ได้ถูกต้อง แต่ต้องตั้งค่า DE_CPU โดยไฟล์ toolchain

ตัวแปร คำอธิบาย
DE_OS

ระบบปฏิบัติการ ค่าที่รองรับมีดังนี้ DE_OS_WIN32, DE_OS_UNIX, DE_OS_WINCE, DE_OS_OSX, DE_OS_ANDROID, DE_OS_SYMBIAN, DE_OS_IOS

DE_COMPILER

ประเภทคอมไพเลอร์ ค่าที่รองรับมีดังนี้ DE_COMPILER_GCC, DE_COMPILER_MSC, DE_COMPILER_CLANG

DE_CPU

ประเภท CPU ค่าที่รองรับมีดังนี้ DE_CPU_ARM, DE_CPU_X86

DE_PTR_SIZE

sizeof(void*) ในแพลตฟอร์ม ค่าที่รองรับคือ 4 และ 8

คุณเลือกไฟล์เครื่องมือได้โดยใช้พารามิเตอร์บิลด์ CMAKE_TOOLCHAIN_FILE ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้างไฟล์ make สำหรับบิลด์โดยใช้คอมไพเลอร์ข้ามแพลตฟอร์ม CodeSourcery สำหรับ ARM/Linux

cmake PATH_TO_SRC/deqp –DDEQP_BUILD_TYPE="Release"
–DCMAKE_TOOLCHAIN_FILE=PATH_TO_SRC/delibs/cmake/toolchain-arm-cs.cmake
–DARM_CC_BASE=PATH_TO_CC_DIRECTORY

การลิงก์รันไทม์ของไลบรารี GLES และ EGL

deqp ไม่จำเป็นต้องมีจุดแรกเข้าของ API ที่กำลังทดสอบระหว่างการลิงก์ โค้ดทดสอบจะเข้าถึง API ผ่านตัวชี้ฟังก์ชันเสมอ จากนั้นระบบจะโหลดจุดแรกเข้าแบบไดนามิกเมื่อรันไทม์ หรือพอร์ตแพลตฟอร์มจะระบุจุดแรกเข้าได้เมื่อลิงก์

หากเปิดการรองรับ API ในการตั้งค่าบิลด์และไม่ได้ระบุไลบรารีลิงก์ไว้ deqp จะโหลดจุดแรกเข้าที่จำเป็นเมื่อรันไทม์ หากต้องการใช้การลิงก์แบบคงที่ ให้ระบุไลบรารีลิงก์ที่จำเป็นในตัวแปรการกำหนดค่าบิลด์ DEQP_<API>_LIBRARIES

พอร์ตเฟรมเวิร์กทดสอบ

การพอร์ต deqp ประกอบด้วย 3 ขั้นตอน ได้แก่ การปรับเปลี่ยนไลบรารีการย้ายข้อมูลพื้นฐาน การใช้อินเทอร์เฟซการผสานรวมแพลตฟอร์มเฟรมเวิร์กทดสอบ และการพอร์ตบริการการดําเนินการ

ตารางด้านล่างแสดงตำแหน่งที่อาจมีการเปลี่ยนแปลงการพอร์ต นอกเหนือจากนั้น อาจเป็นคำที่แปลกใหม่

ตำแหน่ง คำอธิบาย
framework/delibs/debase
framework/delibs/dethread
framework/delibs/deutil

การติดตั้งใช้งานโค้ดเฉพาะระบบปฏิบัติการที่จำเป็น

framework/qphelper/qpCrashHandler.c

ไม่บังคับ: การติดตั้งใช้งานสำหรับระบบปฏิบัติการของคุณ

framework/qphelper/qpWatchDog.c

การติดตั้งใช้งานสำหรับระบบปฏิบัติการ เวอร์ชันปัจจุบันอิงตาม dethread และไลบรารี C มาตรฐาน

framework/platform

คุณติดตั้งพอร์ตแพลตฟอร์มและสตับแอปพลิเคชันใหม่ได้ตามที่อธิบายไว้ในทดสอบพอร์ตแพลตฟอร์มเฟรมเวิร์ก

ไลบรารีการย้ายข้อมูลพื้นฐาน

ไลบรารีการย้ายข้อมูลพื้นฐานรองรับ Windows, Linux ส่วนใหญ่, Mac OS, iOS และ Android อยู่แล้ว หากเป้าหมายการทดสอบทำงานบนระบบปฏิบัติการใดระบบปฏิบัติการหนึ่งดังกล่าว ก็อาจไม่จำเป็นต้องแตะต้องไลบรารีการย้ายข้อมูลพื้นฐานเลย

พอร์ตแพลตฟอร์มเฟรมเวิร์กทดสอบ

พอร์ตแพลตฟอร์มเฟรมเวิร์กทดสอบ deqp ต้องใช้คอมโพเนนต์ 2 อย่าง ได้แก่ จุดแรกเข้าของแอปพลิเคชันและการใช้งานอินเทอร์เฟซแพลตฟอร์ม

จุดแรกเข้าของแอปพลิเคชันมีหน้าที่สร้างออบเจ็กต์แพลตฟอร์ม สร้างออบเจ็กต์บรรทัดคำสั่ง (tcu::CommandLine) เปิดบันทึกการทดสอบ (tcu::TestLog) และเรียกใช้แอปพลิเคชันทดสอบซ้ำ (tcu::App) หากระบบปฏิบัติการเป้าหมายรองรับจุดแรกเข้า main() มาตรฐาน คุณจะใช้ tcuMain.cpp เป็นการใช้งานจุดแรกเข้าได้

โปรดดูรายละเอียด API ของแพลตฟอร์ม deqp ในไฟล์ต่อไปนี้

ไฟล์ คำอธิบาย
framework/common/tcuPlatform.hpp

คลาสพื้นฐานสำหรับพอร์ตแพลตฟอร์มทั้งหมด

framework/opengl/gluPlatform.hpp

อินเทอร์เฟซแพลตฟอร์ม OpenGL

framework/egl/egluPlatform.hpp

อินเทอร์เฟซแพลตฟอร์ม EGL

framework/platform/tcuMain.cpp

จุดแรกเข้าของแอปพลิเคชันมาตรฐาน

คลาสพื้นฐานสำหรับพอร์ตแพลตฟอร์มทั้งหมดคือ tcu::Platform พอร์ตแพลตฟอร์มอาจรองรับอินเทอร์เฟซเฉพาะ GL และ EGL ดูภาพรวมของสิ่งที่ต้องติดตั้งใช้งานเพื่อทำการทดสอบได้ในตารางต่อไปนี้

โมดูล SDK โฆษณา B

โมดูลทดสอบ OpenGL (ES)

อินเทอร์เฟซแพลตฟอร์ม GL

โมดูลทดสอบ EGL

อินเทอร์เฟซแพลตฟอร์ม EGL

วิธีการโดยละเอียดในการใช้พอร์ตแพลตฟอร์มอยู่ในส่วนหัวของเลเยอร์การพอร์ต

บริการการดำเนินการทดสอบ

หากต้องการใช้โครงสร้างพื้นฐานการเรียกใช้การทดสอบ deqp หรือโปรแกรมที่ใช้เรียกใช้บรรทัดคำสั่ง บริการการเรียกใช้การทดสอบต้องพร้อมใช้งานบนเป้าหมาย การใช้งานบริการ C++ แบบพกพามีอยู่ในไดเรกทอรี execserver ไฟล์ไบนารีแบบสแตนด์อโลนสร้างขึ้นเป็นส่วนหนึ่งของโมดูลทดสอบ deqp ที่สร้างขึ้นสำหรับเป้าหมาย PC คุณสามารถแก้ไข execserver/CMakeLists.txt เพื่อเปิดใช้การสร้างในเป้าหมายอื่นๆ ได้

บริการการเรียกใช้การทดสอบเวอร์ชัน C++ ยอมรับพารามิเตอร์บรรทัดคำสั่ง 2 รายการ ได้แก่

  • --port=<port> จะตั้งค่าพอร์ต TCP ที่เซิร์ฟเวอร์รอรับการเชื่อมต่อ ค่าเริ่มต้นคือ 50016
  • --single จะสิ้นสุดกระบวนการของเซิร์ฟเวอร์เมื่อไคลเอ็นต์ตัดการเชื่อมต่อ โดยค่าเริ่มต้น กระบวนการของเซิร์ฟเวอร์จะยังคงทำงานเพื่อให้บริการคำขอการเรียกใช้การทดสอบเพิ่มเติม

ทำการทดสอบ

หน้านี้มีวิธีการเรียกใช้การทดสอบ deqp ในสภาพแวดล้อม Linux และ Windows, การใช้อาร์กิวเมนต์บรรทัดคำสั่ง และการทํางานกับแพ็กเกจแอปพลิเคชัน Android

สภาพแวดล้อม Linux และ Windows

เริ่มต้นด้วยการคัดลอกไฟล์และไดเรกทอรีต่อไปนี้ไปยังปลายทาง

โมดูล ไดเรกทอรี เป้ายิง
เซิร์ฟเวอร์การดําเนินการ build/execserver/execserver <dst>/execserver
โมดูล EGL build/modules/egl/deqp-egl <dst>/deqp-egl
โมดูล GLES2 build/modules/gles2/deqp-gles2 <dst>/deqp-gles2
data/gles2 <dst>/gles2
โมดูล GLES3 build/modules/gles3/deqp-gles3 <dst>/deqp-gles3
data/gles3 <dst>/gles3
โมดูล GLES3.1 build/modules/gles31/deqp-gles31 <dst>/deqp-gles31
data/gles31 <dst>/gles31
โมดูล GLES3.2 build/modules/gles32/deqp-gles32 <dst>/deqp-gles32
data/gles32 <dst>/gles32

คุณสามารถติดตั้งใช้งานบริการการดําเนินการและทดสอบไบนารีได้ทุกที่ในระบบไฟล์เป้าหมาย แต่ไบนารีทดสอบจะคาดหวังว่าจะพบไดเรกทอรีข้อมูลในไดเรกทอรีทํางานปัจจุบัน เมื่อพร้อมแล้ว ให้เริ่มบริการการเรียกใช้การทดสอบในอุปกรณ์เป้าหมาย โปรดดูรายละเอียดเกี่ยวกับการเริ่มบริการที่หัวข้อทดสอบบริการการดำเนินการ

อาร์กิวเมนต์บรรทัดคำสั่ง

ตารางต่อไปนี้แสดงอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งผลต่อการดำเนินการของโปรแกรมทดสอบทั้งหมด

อาร์กิวเมนต์ คำอธิบาย
--deqp-case=<casename> เรียกใช้เคสที่ตรงกับรูปแบบที่ระบุ รองรับไวลด์การ์ด (*)
--deqp-log-filename=<filename> เขียนผลการทดสอบลงในไฟล์ที่คุณระบุชื่อ บริการเรียกใช้การทดสอบจะตั้งชื่อไฟล์เมื่อเริ่มการทดสอบ
--deqp-stdin-caselist
--deqp-caselist=<caselist>
--deqp-caselist-file=<filename>
อ่านรายการเคสจาก stdin หรือจากอาร์กิวเมนต์ที่ระบุ บริการการดำเนินการทดสอบจะตั้งค่าอาร์กิวเมนต์ตามคำขอการดำเนินการที่ได้รับ ดูคำอธิบายรูปแบบรายการเคสได้ในส่วนถัดไป
--deqp-test-iteration-count=<count> ลบล้างจํานวนรอบสําหรับการทดสอบที่รองรับจํานวนรอบที่เปลี่ยนแปลงได้
--deqp-base-seed=<seed> เมล็ดฐานสําหรับกรณีทดสอบที่ใช้การสุ่ม

อาร์กิวเมนต์เฉพาะ GLES2 และ GLES3

ตารางต่อไปนี้แสดงอาร์กิวเมนต์เฉพาะของ GLES2 และ GLES3
อาร์กิวเมนต์ คำอธิบาย
--deqp-gl-context-type=<type> ประเภทบริบท OpenGL ประเภทบริบทที่ใช้ได้จะขึ้นอยู่กับแพลตฟอร์ม ในแพลตฟอร์มที่รองรับ EGL คุณสามารถใช้ค่า egl เพื่อเลือกบริบท EGL
--deqp-gl-config-id=<id> เรียกใช้การทดสอบสําหรับรหัสการกําหนดค่า GL ที่ระบุ การตีความจะขึ้นอยู่กับแพลตฟอร์ม ในแพลตฟอร์ม EGL รหัสนี้คือรหัสการกําหนดค่า EGL
--deqp-gl-config-name=<name> เรียกใช้การทดสอบสําหรับการกําหนดค่า GL ที่มีชื่อ การตีความจะขึ้นอยู่กับแพลตฟอร์ม สำหรับ EGL รูปแบบจะเป็น rgb(a)<bits>d<bits>s<bits> ตัวอย่างเช่น ค่า rgb888s8 จะเลือกการกำหนดค่าแรกที่มีบัฟเฟอร์สีเป็น RGB888 และบัฟเฟอร์สเตนซิลเป็น 8 บิต
--deqp-gl-context-flags=<flags> สร้างบริบท ระบุ robust หรือ debug
--deqp-surface-width=<width>
--deqp-surface-height=<height>
ลองสร้างพื้นผิวที่มีขนาดที่กำหนด คุณจะรองรับหรือไม่ก็ได้
--deqp-surface-type=<type> ใช้ประเภทพื้นผิวที่ระบุเป็นเป้าหมายการแสดงผลการทดสอบหลัก ประเภทที่เป็นไปได้คือ window, pixmap, pbuffer และ fbo
--deqp-screen-rotation=<rotation> การวางแนวหน้าจอที่เพิ่มขึ้นทีละ 90 องศาสำหรับแพลตฟอร์มที่รองรับ

รูปแบบรายการ Test Case

รายการชุดทดสอบมี 2 รูปแบบ ตัวเลือกแรกคือการระบุชื่อเต็มของการทดสอบแต่ละรายการในบรรทัดแยกต่างหากในไฟล์ ASCII มาตรฐาน เมื่อชุดทดสอบมีจำนวนมากขึ้น การใช้คำนำหน้าซ้ำๆ อาจทำให้ยุ่งยาก หากต้องการหลีกเลี่ยงการใช้คำนำหน้าซ้ำ ให้ใช้ไวยากรณ์ไตร (หรือที่เรียกว่าต้นไม้คำนำหน้า) ที่แสดงด้านล่าง

{nodeName{firstChild{…},…lastChild{…}}}

เช่น

{dEQP-EGL{config-list,create_context{rgb565_depth_stencil}}}

ซึ่งแปลเป็น 2 กรณีทดสอบต่อไปนี้

dEQP-EGL.config_list
dEQP-EGL.create_context.rgb565_depth_stencil

Android

แพ็กเกจแอปพลิเคชัน Android มีคอมโพเนนต์ที่จำเป็นทั้งหมด รวมถึงบริการเรียกใช้การทดสอบ ไฟล์ไบนารีทดสอบ และไฟล์ข้อมูล กิจกรรมทดสอบคือ NativeActivity ที่ใช้ EGL (ต้องใช้ Android 3.2 ขึ้นไป)

ติดตั้งแพ็กเกจแอปพลิเคชันได้ด้วยคำสั่งต่อไปนี้ (ชื่อที่แสดงคือชื่อ APK ในแพ็กเกจ Android CTS ซึ่งชื่อจะขึ้นอยู่กับบิลด์)

adb –d install –r com.drawelements.deqp.apk

หากต้องการเปิดบริการการเรียกใช้การทดสอบและตั้งค่าการส่งต่อพอร์ต ให้ใช้สิ่งต่อไปนี้

adb –d forward tcp:50016 tcp:50016
adb –d shell am start –n com.drawelements.deqp/.execserver.ServiceStarter

คุณเปิดใช้การพิมพ์การแก้ไขข้อบกพร่องได้โดยทำตามขั้นตอนต่อไปนี้ก่อนเริ่มการทดสอบ

adb –d shell setprop log.tag.dEQP DEBUG

ทำการทดสอบใน Android ที่ไม่มี Android CTS

หากต้องการเริ่มกิจกรรมการเรียกใช้การทดสอบด้วยตนเอง ให้สร้าง Intent ของ Android ที่กําหนดเป้าหมายเป็น android.app.NativeActivity กิจกรรมจะอยู่ในแพ็กเกจ com.drawelements.deqp ต้องระบุบรรทัดคำสั่งเป็นสตริงเพิ่มเติมที่มีคีย์ "cmdLine" ใน Intent

ระบบจะเขียนบันทึกการทดสอบลงใน /sdcard/dEQP-log.qpa หากการทดสอบไม่เริ่มขึ้นตามปกติ โปรดดูข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมในบันทึกของอุปกรณ์

คุณเปิดกิจกรรมจากบรรทัดคำสั่งได้โดยใช้ยูทิลิตี am เช่น หากต้องการเรียกใช้การทดสอบ dEQP-GLES2.info ในแพลตฟอร์มที่รองรับ NativeActivity, ให้ใช้คำสั่งต่อไปนี้

adb -d shell am start -n com.drawelements.deqp/android.app.NativeActivity -e \
'cmdLine "deqp --deqp-case=dEQP-GLES2.info.* --deqp-log-filename=/sdcard/dEQP-Log.qpa"'

แก้ไขข้อบกพร่องใน Android

หากต้องการเรียกใช้การทดสอบภายใต้โปรแกรมแก้ไขข้อบกพร่อง GDB ใน Android ก่อนอื่นให้คอมไพล์และติดตั้งบิลด์แก้ไขข้อบกพร่องโดยเรียกใช้สคริปต์ 2 รายการต่อไปนี้

python android/scripts/build.py --native-build-type=Debug
python android/scripts/install.py

หลังจากติดตั้งบิลด์แก้ไขข้อบกพร่องในอุปกรณ์แล้ว หากต้องการเปิดการทดสอบภายใต้ GDB ที่ทำงานอยู่บนโฮสต์ ให้เรียกใช้คำสั่งต่อไปนี้

python android/scripts/debug.py \
--deqp-commandline="--deqp-log-filename=/sdcard/TestLog.qpa --deqp-case=dEQP-GLES2.functional.*"

บรรทัดคำสั่ง deqp ขึ้นอยู่กับกรณีทดสอบที่จะดำเนินการและพารามิเตอร์อื่นๆ ที่จําเป็น สคริปต์จะเพิ่มเบรกพอยต์เริ่มต้นที่จุดเริ่มต้นของการดำเนินการ deqp (tcu::App::App)

สคริปต์ debug.py ยอมรับอาร์กิวเมนต์บรรทัดคำสั่งหลายรายการสําหรับการดำเนินการต่างๆ เช่น การตั้งจุดหยุดพักสําหรับการแก้ไขข้อบกพร่อง พารามิเตอร์การเชื่อมต่อ gdbserver และเส้นทางไปยังไบนารีเพิ่มเติมเพื่อแก้ไขข้อบกพร่อง (ใช้ debug.py --help สําหรับอาร์กิวเมนต์และคำอธิบายทั้งหมด) สคริปต์จะคัดลอกไลบรารีเริ่มต้นบางส่วนจากอุปกรณ์เป้าหมายเพื่อดูรายการสัญลักษณ์ด้วย

หากต้องการดูโค้ดของไดรเวอร์ทีละขั้นตอน (เช่น เมื่อ GDB ต้องการทราบตำแหน่งของไฟล์ไบนารีที่มีข้อมูลการแก้ไขข้อบกพร่องแบบสมบูรณ์) ให้เพิ่มไลบรารีอื่นๆ ผ่านพารามิเตอร์บรรทัดคำสั่ง debug.py สคริปต์นี้จะเขียนไฟล์การกําหนดค่าสําหรับ GDB โดยเริ่มจากบรรทัด 132 ของไฟล์สคริปต์ คุณสามารถระบุเส้นทางเพิ่มเติมไปยังไบนารี ฯลฯ ได้ แต่การให้พารามิเตอร์บรรทัดคำสั่งที่ถูกต้องก็เพียงพอแล้ว

หมายเหตุ: ใน Windows ไบนารี GDB ต้องใช้ libpython2.7.dll ก่อนเปิด debug.py ให้เพิ่ม <path-to-ndk>/prebuilt/windows/bin ลงในตัวแปร PATH

หมายเหตุ: การแก้ไขข้อบกพร่องโค้ดที่มาพร้อมเครื่องใช้ไม่ได้กับ Android 4.3 เวอร์ชันสต็อก โปรดดูวิธีแก้ปัญหาชั่วคราวใน ข้อบกพร่องสาธารณะนี้ Android 4.4 ขึ้นไปจะไม่มีข้อบกพร่องนี้

ทำการทดสอบอัตโนมัติ

โมดูลทดสอบ Deqp สามารถผสานรวมเข้ากับระบบทดสอบอัตโนมัติได้หลายวิธี แนวทางที่ดีที่สุดขึ้นอยู่กับโครงสร้างพื้นฐานการทดสอบและสภาพแวดล้อมเป้าหมายที่มีอยู่

เอาต์พุตหลักจากการเรียกใช้การทดสอบคือไฟล์บันทึกการทดสอบเสมอ กล่าวคือไฟล์ที่มีส่วนต่อท้าย .qpa คุณสามารถแยกวิเคราะห์ผลการทดสอบทั้งหมดได้จากบันทึกการทดสอบ เอาต์พุตคอนโซลเป็นข้อมูลการแก้ไขข้อบกพร่องเท่านั้น และอาจไม่พร้อมใช้งานในบางแพลตฟอร์ม

เรียกใช้ไบนารีทดสอบได้โดยตรงจากระบบการทำงานอัตโนมัติของการทดสอบ คุณสามารถเปิดใช้งานไฟล์ทดสอบสำหรับกรณีหนึ่งๆ ชุดทดสอบ หรือทดสอบทั้งหมดที่มีได้ หากเกิดข้อผิดพลาดร้ายแรงระหว่างการดำเนินการ (เช่น ข้อผิดพลาดบางอย่างของ API หรือข้อขัดข้อง) การทดสอบจะหยุดดำเนินการ สําหรับการทดสอบรีเกรดชัน วิธีที่ดีที่สุดคือการเรียกใช้ไบนารีทดสอบสําหรับแต่ละกรณีหรือชุดทดสอบขนาดเล็กแยกกัน เพื่อให้ได้ผลลัพธ์บางส่วนในกรณีที่เกิดความล้มเหลว

deqp มาพร้อมกับเครื่องมือการทดสอบการเรียกใช้บรรทัดคำสั่งที่สามารถใช้ร่วมกับบริการการเรียกใช้เพื่อให้การผสานรวมมีประสิทธิภาพมากขึ้น ผู้ดำเนินการจะตรวจหาการสิ้นสุดกระบวนการทดสอบและจะดำเนินการทดสอบต่อในเคสถัดไปที่พร้อมใช้งาน ระบบจะสร้างไฟล์บันทึกไฟล์เดียวจากเซสชันการทดสอบทั้งหมด การตั้งค่านี้เหมาะสําหรับระบบการทดสอบแบบเบาๆ ที่ไม่มีห้องทดลองกู้คืนข้อขัดข้อง

เครื่องมือการเรียกใช้การทดสอบบรรทัดคำสั่ง

ชุดเครื่องมือบรรทัดคำสั่งปัจจุบันประกอบด้วยเครื่องมือการทดสอบระยะไกล เครื่องมือสร้างการเปรียบเทียบบันทึกการทดสอบสําหรับการวิเคราะห์การถดถอย ตัวแปลงบันทึกการทดสอบเป็น CSV ตัวแปลงบันทึกการทดสอบเป็น XML และตัวแปลงบันทึกการทดสอบเป็น JUnit

แหล่งที่มาของเครื่องมือเหล่านี้อยู่ในไดเรกทอรี executor และไฟล์ไบนารีจะฝังอยู่ในไดเรกทอรี <builddir>/executor

ผู้ดำเนินการทดสอบบรรทัดคำสั่ง

ผู้ดำเนินการทดสอบบรรทัดคำสั่งเป็นเครื่องมือ C++ แบบพกพาสำหรับการเปิดการทดสอบในอุปกรณ์และรวบรวมบันทึกผลลัพธ์จากอุปกรณ์ผ่าน TCP/IP Executor จะสื่อสารกับบริการการเรียกใช้ (execserver) ในอุปกรณ์เป้าหมาย ซึ่งร่วมกันให้ฟังก์ชันการทำงานต่างๆ เช่น การกู้คืนจากการขัดข้องของกระบวนการทดสอบ ตัวอย่างต่อไปนี้แสดงวิธีใช้โปรแกรมดำเนินการทดสอบบรรทัดคำสั่ง (ใช้ --help เพื่อดูรายละเอียดเพิ่มเติม)

ตัวอย่างที่ 1: เรียกใช้การทดสอบฟังก์ชันการทำงาน GLES2 ในอุปกรณ์ Android
executor --connect=127.0.0.1 --port=50016 --binaryname=
com.drawelements.deqp/android.app.NativeActivity
--caselistdir=caselists
--testset=dEQP-GLES2.* --out=BatchResult.qpa
--cmdline="--deqp-crashhandler=enable --deqp-watchdog=enable
--deqp-gl-config-name=rgba8888d24s8"
ตัวอย่างที่ 2: เรียกใช้การทดสอบ OpenGL ES 2 บางส่วนในเครื่องต่อ
executor --start-server=execserver/execserver --port=50016
--binaryname=deqp-gles2 --workdir=modules/opengl
--caselistdir=caselists
--testset=dEQP-GLES2.* --exclude=dEQP-GLES2.performance.* --in=BatchResult.qpa
--out=BatchResult.qpa

ทดสอบการส่งออกบันทึก CSV และเปรียบเทียบ

deqp มีเครื่องมือสำหรับแปลงบันทึกการทดสอบ (ไฟล์ .qpa) เป็นไฟล์ CSV เอาต์พุต CSV จะมีรายการชุดทดสอบและผลลัพธ์ นอกจากนี้ เครื่องมือนี้ยังเปรียบเทียบผลลัพธ์กลุ่มตั้งแต่ 2 กลุ่มขึ้นไปและแสดงเฉพาะกรณีทดสอบที่มีรหัสสถานะต่างกันในผลลัพธ์กลุ่มอินพุตได้ด้วย การเปรียบเทียบจะพิมพ์จํานวนกรณีที่ตรงกันด้วย

เอาต์พุตในรูปแบบ CSV เหมาะสําหรับการประมวลผลเพิ่มเติมด้วยยูทิลิตีบรรทัดคําสั่งมาตรฐานหรือเครื่องมือแก้ไขสเปรดชีต คุณสามารถเลือกรูปแบบข้อความธรรมดาที่มนุษย์อ่านได้เพิ่มเติมได้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --format=text

ตัวอย่างที่ 1: ส่งออกบันทึกการทดสอบในรูปแบบ CSV
testlog-to-csv --value=code BatchResult.qpa > Result_statuscodes.csv
testlog-to-csv --value=details BatchResult.qpa > Result_statusdetails.csv
ตัวอย่างที่ 2: แสดงรายการความแตกต่างของผลการทดสอบระหว่างบันทึกการทดสอบ 2 รายการ
testlog-to-csv --mode=diff --format=text Device_v1.qpa Device_v2.qpa

หมายเหตุ: อาร์กิวเมนต์ --value=code จะแสดงผลรหัสผลการทดสอบ เช่น "ผ่าน" หรือ "ไม่ผ่าน" อาร์กิวเมนต์ --value=details จะเลือกคำอธิบายเพิ่มเติมเกี่ยวกับผลลัพธ์หรือค่าตัวเลขที่เกิดจากการทดสอบประสิทธิภาพ ความสามารถ หรือความแม่นยำ

ทดสอบการส่งออกบันทึกในรูปแบบ XML

ไฟล์บันทึกการทดสอบสามารถแปลงเป็นเอกสาร XML ที่ถูกต้องได้โดยใช้ยูทิลิตี testlog-to-xml รองรับโหมดเอาต์พุต 2 โหมด ได้แก่

  • โหมดเอกสารแยกต่างหาก ซึ่งระบบจะเขียนแต่ละกรณีทดสอบและcaselist.xmlเอกสารสรุป ไปยังไดเรกทอรีปลายทาง
  • โหมดไฟล์เดียว ซึ่งระบบจะเขียนผลลัพธ์ทั้งหมดในไฟล์ .qpa ลงในเอกสาร XML ไฟล์เดียว

คุณสามารถดูไฟล์บันทึกการทดสอบที่ส่งออกในเบราว์เซอร์ได้โดยใช้สไตล์ชีต XML เอกสารตัวอย่างชีตสไตล์ (testlog.xsl และ testlog.css) มีอยู่ในไดเรกทอรี doc/testlog-stylesheet หากต้องการแสดงผลไฟล์บันทึกในเบราว์เซอร์ ให้คัดลอกไฟล์สไตล์ชีต 2 ไฟล์ไปยังไดเรกทอรีเดียวกับที่มีเอกสาร XML ที่ส่งออก

หากใช้ Google Chrome คุณต้องเข้าถึงไฟล์ผ่าน HTTP เนื่องจาก Chrome จำกัดการเข้าถึงไฟล์ในเครื่องด้วยเหตุผลด้านความปลอดภัย การติดตั้ง Python มาตรฐานจะรวมเซิร์ฟเวอร์ HTTP พื้นฐานที่เปิดใช้งานเพื่อแสดงไดเรกทอรีปัจจุบันด้วยคำสั่ง python –m SimpleHTTPServer 8000 หลังจากเปิดเซิร์ฟเวอร์แล้ว ให้ไปที่เบราว์เซอร์ Chrome แล้วไปที่ http://localhost:8000 เพื่อดูบันทึกการทดสอบ

การแปลงเป็นบันทึกการทดสอบ JUnit

ระบบการทดสอบอัตโนมัติหลายระบบสามารถสร้างรายงานผลการทดสอบการเรียกใช้จากเอาต์พุต JUnit ได้ ไฟล์บันทึกการทดสอบ deqp สามารถแปลงเป็นรูปแบบเอาต์พุต JUnit ได้โดยใช้เครื่องมือ testlog-to-junit

ปัจจุบันเครื่องมือรองรับการแปลผลการตรวจสอบของเคสทดสอบเท่านั้น เนื่องจาก JUnit รองรับเฉพาะผลลัพธ์ "ผ่าน" และ "ไม่ผ่าน" ระบบจะจับคู่ผลลัพธ์ที่ผ่านของ deqp กับ "ผ่าน JUnit" และผลลัพธ์อื่นๆ จะถือว่าไม่ผ่าน โค้ดผลลัพธ์ deqp เดิมจะอยู่ในเอาต์พุต JUnit ระบบจะไม่เก็บข้อมูลอื่นๆ เช่น ข้อความบันทึกและรูปภาพผลลัพธ์ไว้ใน Conversion

ใช้กลุ่มทดสอบพิเศษ

กลุ่มทดสอบบางกลุ่มอาจต้องใช้หรือรองรับตัวเลือกบรรทัดคำสั่งพิเศษ หรือต้องใช้ความระมัดระวังเป็นพิเศษเมื่อใช้ในระบบบางระบบ

การทดสอบความเครียดการจัดสรรหน่วยความจำ

การทดสอบความเครียดของการจัดสรรหน่วยความจำจะทดสอบเงื่อนไขหน่วยความจําไม่เพียงพอโดยการจัดสรรทรัพยากรบางอย่างซ้ำๆ จนกว่าไดรเวอร์จะรายงานข้อผิดพลาดหน่วยความจําไม่เพียงพอ

ในบางแพลตฟอร์ม เช่น Android และตัวแปร Linux ส่วนใหญ่ ระบบปฏิบัติการอาจหยุดกระบวนการทดสอบแทนที่จะอนุญาตให้ไดรเวอร์จัดการหรือแสดงข้อผิดพลาดหน่วยความจำไม่เพียงพอ ในแพลตฟอร์มดังกล่าว การทดสอบที่ออกแบบมาเพื่อทำให้เกิดข้อผิดพลาดหน่วยความจำไม่เพียงพอจะปิดอยู่โดยค่าเริ่มต้น และต้องเปิดใช้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่ง --deqp-test-oom=enable เราขอแนะนำให้คุณทำการทดสอบดังกล่าวด้วยตนเองเพื่อตรวจสอบว่าระบบทำงานอย่างถูกต้องภายใต้แรงกดดันของทรัพยากรหรือไม่ อย่างไรก็ตาม ในสถานการณ์เช่นนี้ การขัดข้องของกระบวนการทดสอบควรตีความว่าเป็นการผ่าน

กลุ่มทดสอบ

dEQP-GLES2.stress.memory.*
dEQP-GLES3.stress.memory.*

การทดสอบความเครียดในการเรนเดอร์ที่ทำงานเป็นเวลานาน

การทดสอบการเรนเดอร์ภายใต้สภาวะความเสี่ยงจำลองออกแบบมาเพื่อแสดงปัญหาความเสถียรภายใต้ภาระการเรนเดอร์อย่างต่อเนื่อง โดยค่าเริ่มต้น การทดสอบจะดำเนินการซ้ำเพียงไม่กี่ครั้ง แต่สามารถกําหนดค่าให้ทํางานได้แบบไม่จํากัดโดยการระบุ--deqp-test-iteration-count=-1ตัวแปรบรรทัดคําสั่ง คุณควรปิดใช้เครื่องมือตรวจสอบการทดสอบ (--deqp-watchdog=disable) เมื่อทำการทดสอบเหล่านี้เป็นเวลานาน

กลุ่มทดสอบ

dEQP-GLES2.stress.long.*
dEQP-GLES3.stress.long.*