P4 to Git Change 1161664 by rili@rili_opencl_stg on 2015/06/15 18:01:53
EPR #421679 - remove all source code related to open video Affected files ... ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/Makefile#3 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVDecode.cpp#15 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVDecode.def#5 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVDecode.h#7 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVDecode.rc#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVDecodeTypes.h#6 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVEncode.cpp#37 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVEncode.h#11 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OVEncodeTypes.h#16 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.cpp#6 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.def#3 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.h#5 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.rc#3 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.sln#5 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.vcxproj#11 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo.vcxproj.filters#3 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo_2008.sln#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/OpenVideo_2008.vcproj#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/atiumdva.cap#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/build.bat#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/build/Makefile#6 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/build/Makefile.ov#18 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/build/Makefile.ovd#27 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/buildOV/Makefile#5 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/OpenVideo/res/OpenVideo.rc2#2 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/build/Makefile.api#113 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_common.hpp#17 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#43 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#59 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_open_video.cpp#35 delete ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_open_video_amd.h#20 delete ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#273 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#91 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.cpp#24 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#247 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#512 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#145 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#311 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#91 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#366 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.hpp#130 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLContext.cpp#73 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gslbe/src/rt/GSLContext.h#45 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsadevice.cpp#92 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsadevice.hpp#49 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa/hsavirtual.hpp#28 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.cpp#34 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsadevice.hpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsavirtual.hpp#20 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#78 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.cpp#21 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.hpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/object.hpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/video_session.hpp#13 delete ... //depot/stg/opencl/drivers/opencl/runtime/top.hpp#22 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#235 edit
This commit is contained in:
@@ -395,10 +395,6 @@ Device::init()
|
||||
}
|
||||
info.spirVersions_ = "1.2";
|
||||
|
||||
#if cl_amd_open_video
|
||||
info.openVideo_ = CL_FALSE;
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
info.partitionCreateInfo_.type_.value_ = 0;
|
||||
info.partitionProperties_.value_ = 0;
|
||||
if (info.maxComputeUnits_ > 1) {
|
||||
|
||||
@@ -555,18 +555,6 @@ VirtualCPU::flush(amd::Command* list, bool wait)
|
||||
}
|
||||
}
|
||||
|
||||
#if cl_amd_open_video
|
||||
void VirtualCPU::submitRunVideoProgram(amd::RunVideoProgramCommand& cmd)
|
||||
{
|
||||
cmd.setStatus(CL_INVALID_OPERATION);
|
||||
}
|
||||
|
||||
void VirtualCPU::submitSetVideoSession(amd::SetVideoSessionCommand& cmd)
|
||||
{
|
||||
cmd.setStatus(CL_INVALID_OPERATION);
|
||||
}
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
void
|
||||
VirtualCPU::submitSignal(amd::SignalCommand & cmd)
|
||||
{
|
||||
|
||||
@@ -49,10 +49,6 @@ public:
|
||||
virtual void submitThreadTraceMemObjects(amd::ThreadTraceMemObjectsCommand& cmd);
|
||||
virtual void submitThreadTrace(amd::ThreadTraceCommand& cmd);
|
||||
virtual void flush(amd::Command* list = NULL, bool wait = false);
|
||||
#if cl_amd_open_video
|
||||
virtual void submitRunVideoProgram(amd::RunVideoProgramCommand& cmd);
|
||||
virtual void submitSetVideoSession(amd::SetVideoSessionCommand& cmd);
|
||||
#endif // cl_amd_open_video
|
||||
virtual void submitSignal(amd::SignalCommand & cmd);
|
||||
virtual void submitMakeBuffersResident(amd::MakeBuffersResidentCommand & cmd);
|
||||
virtual void submitSvmFreeMemory(amd::SvmFreeMemoryCommand& cmd);
|
||||
|
||||
@@ -51,10 +51,6 @@ class Marker;
|
||||
class KernelSignature;
|
||||
class ThreadTraceCommand;
|
||||
class ThreadTraceMemObjectsCommand;
|
||||
#if cl_amd_open_video
|
||||
class RunVideoProgramCommand;
|
||||
class SetVideoSessionCommand;
|
||||
#endif // cl_amd_open_video
|
||||
class SignalCommand;
|
||||
class MakeBuffersResidentCommand;
|
||||
class SvmFreeMemoryCommand;
|
||||
@@ -106,7 +102,6 @@ enum OclExtensions {
|
||||
#endif
|
||||
ClKhrImage2dFromBuffer,
|
||||
ClAmdImage2dFromBufferReadOnly,
|
||||
ClAmdOpenVideo,
|
||||
ClAmdSemaphore,
|
||||
ClAMDBusAddressableMemory,
|
||||
ClAMDC11Atomics,
|
||||
@@ -149,11 +144,6 @@ OclExtensionsString[] = {
|
||||
#endif
|
||||
"cl_khr_image2d_from_buffer ",
|
||||
"cl_amd_image2d_from_buffer_read_only ",
|
||||
#if cl_amd_open_video
|
||||
"cl_amd_open_video ",
|
||||
#else
|
||||
"",
|
||||
#endif // cl_amd_open_video
|
||||
"",
|
||||
"cl_amd_bus_addressable_memory ",
|
||||
"cl_amd_c11_atomics ",
|
||||
@@ -497,24 +487,9 @@ struct Info : public amd::EmbeddedObject
|
||||
//! of printf calls from a kernel
|
||||
size_t printfBufferSize_;
|
||||
|
||||
//! Indicates whether UVD interop is supported
|
||||
cl_bool openVideo_;
|
||||
|
||||
//! Indicates maximum number of supported global atomic counters
|
||||
cl_uint maxAtomicCounters_;
|
||||
|
||||
#if cl_amd_open_video
|
||||
// Decoder
|
||||
//! Maximum number of simultaneous video sessions/streams
|
||||
cl_uint maxVideoSessions_;
|
||||
//! List of supported video attributes (profile/format pairs)
|
||||
cl_video_attrib_amd* videoAttribs_;
|
||||
cl_uint numVideoAttribs_;
|
||||
//Encoder
|
||||
cl_video_attrib_encode_amd* videoEncAttribs_;
|
||||
cl_uint numVideoEncAttribs_;
|
||||
#endif //cl_amd_open_video
|
||||
|
||||
//! Returns the topology for the device
|
||||
cl_device_topology_amd deviceTopology_;
|
||||
|
||||
@@ -1435,10 +1410,6 @@ public:
|
||||
virtual void submitThreadTraceMemObjects(amd::ThreadTraceMemObjectsCommand& cmd) = 0;
|
||||
virtual void submitThreadTrace(amd::ThreadTraceCommand& cmd) = 0;
|
||||
virtual void flush(amd::Command* list = NULL, bool wait = false) = 0;
|
||||
#if cl_amd_open_video
|
||||
virtual void submitRunVideoProgram(amd::RunVideoProgramCommand& cmd) = 0;
|
||||
virtual void submitSetVideoSession(amd::SetVideoSessionCommand& cmd) = 0;
|
||||
#endif // cl_amd_open_video
|
||||
virtual void submitSignal(amd::SignalCommand & cmd) = 0;
|
||||
virtual void submitMakeBuffersResident(amd::MakeBuffersResidentCommand & cmd) = 0;
|
||||
virtual void submitSvmFreeMemory(amd::SvmFreeMemoryCommand& cmd) = 0;
|
||||
|
||||
@@ -164,9 +164,6 @@ NullDevice::create(CALtarget target)
|
||||
gpu::Settings* gpuSettings = reinterpret_cast<gpu::Settings*>(settings_);
|
||||
// Create setting for the offline target
|
||||
if ((gpuSettings == NULL) || !gpuSettings->create(calAttr
|
||||
#if cl_amd_open_video
|
||||
, calVideoAttr
|
||||
#endif //cl_amd_open_video
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
@@ -178,9 +175,6 @@ NullDevice::create(CALtarget target)
|
||||
|
||||
// Fill the device info structure
|
||||
fillDeviceInfo(calAttr, calDevStatus, 4096, 1, true
|
||||
#if cl_amd_open_video
|
||||
, getVideoAttribs()
|
||||
#endif //cl_amd_open_video
|
||||
);
|
||||
|
||||
if (settings().hsail_ || (settings().oclVersion_ == OpenCL20)) {
|
||||
@@ -235,10 +229,6 @@ void NullDevice::fillDeviceInfo(
|
||||
size_t maxTextureSize,
|
||||
uint numComputeRings,
|
||||
bool isVirtualMode
|
||||
#if cl_amd_open_video
|
||||
,
|
||||
const CALdeviceVideoAttribs& calVideoAttr
|
||||
#endif // cl_amd_open_video
|
||||
)
|
||||
{
|
||||
info_.type_ = CL_DEVICE_TYPE_GPU;
|
||||
@@ -425,23 +415,6 @@ void NullDevice::fillDeviceInfo(
|
||||
|
||||
info_.platform_ = AMD_PLATFORM;
|
||||
|
||||
#if cl_amd_open_video
|
||||
// Open Video support
|
||||
// Decoder
|
||||
info_.openVideo_ = settings().openVideo_;
|
||||
info_.maxVideoSessions_ = calVideoAttr.max_decode_sessions;
|
||||
info_.numVideoAttribs_ = (calVideoAttr.data_size - 2 * sizeof(CALuint))
|
||||
/ sizeof(CALvideoAttrib);
|
||||
info_.videoAttribs_ = const_cast<cl_video_attrib_amd*>(
|
||||
reinterpret_cast<const cl_video_attrib_amd*>(calVideoAttr.video_attribs));
|
||||
|
||||
// Encoder
|
||||
info_.numVideoEncAttribs_ = (calVideoAttr.data_size - 2 * sizeof(CALuint))
|
||||
/ sizeof(CALvideoEncAttrib);
|
||||
info_.videoEncAttribs_ = const_cast<cl_video_attrib_encode_amd*>(
|
||||
reinterpret_cast<const cl_video_attrib_encode_amd*>(calVideoAttr.video_enc_attribs));
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
::strcpy(info_.name_, hwInfo()->targetName_);
|
||||
::strcpy(info_.vendor_, "Advanced Micro Devices, Inc.");
|
||||
::snprintf(info_.driverVersion_, sizeof(info_.driverVersion_) - 1,
|
||||
@@ -817,9 +790,6 @@ Device::create(CALuint ordinal, CALuint numOfDevices)
|
||||
settings_ = new gpu::Settings();
|
||||
gpu::Settings* gpuSettings = reinterpret_cast<gpu::Settings*>(settings_);
|
||||
if ((gpuSettings == NULL) || !gpuSettings->create(getAttribs()
|
||||
#if cl_amd_open_video
|
||||
, getVideoAttribs()
|
||||
#endif // cl_amd_open_video
|
||||
, appProfile_.reportAsOCL12Device()
|
||||
)) {
|
||||
return false;
|
||||
@@ -928,9 +898,6 @@ Device::create(CALuint ordinal, CALuint numOfDevices)
|
||||
fillDeviceInfo(getAttribs(), getStatus(),
|
||||
static_cast<size_t>(getMaxTextureSize()),
|
||||
engines().numComputeRings(), heap()->isVirtual()
|
||||
#if cl_amd_open_video
|
||||
, getVideoAttribs()
|
||||
#endif //cl_amd_open_video
|
||||
);
|
||||
|
||||
if (settings().hsail_ || (settings().oclVersion_ == OpenCL20)) {
|
||||
@@ -1075,9 +1042,6 @@ Device::initializeHeapResources()
|
||||
xferQueue_ = new VirtualGPU(*this);
|
||||
if (!(xferQueue_ && xferQueue_->create(
|
||||
false
|
||||
#if cl_amd_open_video
|
||||
,NULL
|
||||
#endif // cl_amd_open_video
|
||||
))) {
|
||||
delete xferQueue_;
|
||||
xferQueue_ = NULL;
|
||||
@@ -1100,9 +1064,6 @@ Device::createVirtualDevice(
|
||||
bool interopQueue = false;
|
||||
uint rtCUs = 0;
|
||||
uint deviceQueueSize = 0;
|
||||
#if cl_amd_open_video
|
||||
void* calVideoProperties = NULL;
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
if (queue != NULL) {
|
||||
profiling = queue->properties().test(CL_QUEUE_PROFILING_ENABLE);
|
||||
@@ -1130,9 +1091,6 @@ Device::createVirtualDevice(
|
||||
VirtualGPU* vgpu = new VirtualGPU(*this);
|
||||
if (vgpu && vgpu->create(
|
||||
profiling
|
||||
#if cl_amd_open_video
|
||||
, calVideoProperties
|
||||
#endif // cl_amd_open_video
|
||||
, deviceQueueSize
|
||||
)) {
|
||||
return vgpu;
|
||||
|
||||
@@ -127,10 +127,6 @@ protected:
|
||||
size_t maxTextureSize, //!< Maximum texture size supported in HW
|
||||
uint numComputeRings, //!< Number of compute rings
|
||||
bool isVirtualMode //!< Device is in virtual mode
|
||||
#if cl_amd_open_video
|
||||
,
|
||||
const CALdeviceVideoAttribs& calVideoAttr //!< -"- video attrib. info
|
||||
#endif //cl_amd_open_video
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -65,11 +65,6 @@ Settings::Settings()
|
||||
|
||||
libSelector_ = amd::LibraryUndefined;
|
||||
|
||||
#if cl_amd_open_video
|
||||
// By default Open Video extension is not yet supported
|
||||
openVideo_ = false;
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
// Enable workload split by default (for 24 bit arithmetic or timeout)
|
||||
workloadSplitSize_ = 1 << GPU_WORKLOAD_SPLIT;
|
||||
|
||||
@@ -152,9 +147,6 @@ Settings::Settings()
|
||||
bool
|
||||
Settings::create(
|
||||
const CALdeviceattribs& calAttr
|
||||
#if cl_amd_open_video
|
||||
, const CALdeviceVideoAttribs& calVideoAttr
|
||||
#endif // cl_amd_open_video
|
||||
, bool reportAsOCL12Device
|
||||
)
|
||||
{
|
||||
@@ -411,15 +403,6 @@ Settings::create(
|
||||
// Use kernels for blit if appropriate
|
||||
blitEngine_ = BlitEngineKernel;
|
||||
|
||||
#if cl_amd_open_video
|
||||
// Enable OpenVideo by default if CAL supports it
|
||||
if (calVideoAttr.max_decode_sessions > 0) {
|
||||
openVideo_ = true;
|
||||
if (GPU_OPEN_VIDEO)
|
||||
enableExtension(ClAmdOpenVideo);
|
||||
}
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
hostMemDirectAccess_ |= HostMemBuffer;
|
||||
// HW doesn't support untiled image writes
|
||||
// hostMemDirectAccess_ |= HostMemImage;
|
||||
|
||||
@@ -51,7 +51,6 @@ public:
|
||||
uint useAliases_: 1; //!< Enables global heap aliases in HW
|
||||
uint imageSupport_: 1; //!< Report images support
|
||||
uint doublePrecision_: 1; //!< Enables double precision support
|
||||
uint openVideo_: 1; //!< Open Video interop support
|
||||
uint reportFMAF_: 1; //!< Report FP_FAST_FMAF define in CL program
|
||||
uint reportFMA_: 1; //!< Report FP_FAST_FMA define in CL program
|
||||
uint use64BitPtr_: 1; //!< Use 64bit pointers on GPU
|
||||
@@ -113,9 +112,6 @@ public:
|
||||
//! Creates settings
|
||||
bool create(
|
||||
const CALdeviceattribs& calAttr //!< CAL attributes structure
|
||||
#if cl_amd_open_video
|
||||
, const CALdeviceVideoAttribs& calVideoAttr //!< CAL video attributes
|
||||
#endif // cl_amd_open_video
|
||||
, bool reportAsOCL12Device = false //!< Report As OpenCL1.2 Device
|
||||
);
|
||||
|
||||
|
||||
@@ -212,7 +212,6 @@ VirtualGPU::gslOpen(uint nEngines, gslEngineDescriptor *engines)
|
||||
void
|
||||
VirtualGPU::gslDestroy()
|
||||
{
|
||||
closeVideoSession();
|
||||
close(dev().getNative());
|
||||
}
|
||||
|
||||
@@ -421,9 +420,6 @@ VirtualGPU::VirtualGPU(
|
||||
bool
|
||||
VirtualGPU::create(
|
||||
bool profiling
|
||||
#if cl_amd_open_video
|
||||
, void* calVideoProperties
|
||||
#endif // cl_amd_open_video
|
||||
, uint deviceQueueSize
|
||||
)
|
||||
{
|
||||
@@ -440,56 +436,6 @@ VirtualGPU::create(
|
||||
// Virtual GPU will have profiling enabled
|
||||
state_.profiling_ = profiling;
|
||||
|
||||
#if cl_amd_open_video
|
||||
if(calVideoProperties) {
|
||||
cl_video_encode_desc_amd* ptr_ovSessionProperties =
|
||||
reinterpret_cast<cl_video_encode_desc_amd *>(calVideoProperties);
|
||||
CALvideoProperties* ptr_calVideoProperties =
|
||||
reinterpret_cast<CALvideoProperties *>(ptr_ovSessionProperties->calVideoProperties);
|
||||
|
||||
switch (ptr_calVideoProperties->VideoEngine_name) {
|
||||
case CAL_CONTEXT_VIDEO:
|
||||
engineMask = dev().engines().getMask(GSL_ENGINEID_UVD);
|
||||
num = dev().engines().getRequested(engineMask, engines);
|
||||
// Open GSL context
|
||||
if ((num == 0) || !gslOpen(num, engines)) {
|
||||
return false;
|
||||
}
|
||||
openVideoSession(*ptr_calVideoProperties);
|
||||
break;
|
||||
case CAL_CONTEXT_VIDEO_VCE:
|
||||
engineMask = dev().engines().getMask(GSL_ENGINEID_VCE);
|
||||
num = dev().engines().getRequested(engineMask, engines);
|
||||
// Open GSL context
|
||||
if ((num == 0) || !gslOpen(num, engines)) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
assert(false && "Unknown video engine!");
|
||||
break;
|
||||
}
|
||||
if (ptr_calVideoProperties->VideoEngine_name == CAL_CONTEXT_VIDEO_VCE) {
|
||||
CALEncodeCreateVCE encodeVCE;
|
||||
createVCE(&encodeVCE, 0);
|
||||
|
||||
CAL_VID_PROFILE_LEVEL encode_profile_level;
|
||||
encode_profile_level.profile = ptr_ovSessionProperties->attrib.profile;
|
||||
encode_profile_level.level = ptr_ovSessionProperties->attrib.level;
|
||||
createEncodeSession(
|
||||
0,
|
||||
(CALencodeMode)ptr_ovSessionProperties->encodeMode,//CAL_VID_encode_AVC_FULL
|
||||
encode_profile_level,
|
||||
(CAL_VID_PICTURE_FORMAT)ptr_ovSessionProperties->attrib.format, //CAL_VID_PICTURE_NV12
|
||||
ptr_ovSessionProperties->image_width,
|
||||
ptr_ovSessionProperties->image_height,
|
||||
ptr_ovSessionProperties->frameRateNumerator,
|
||||
ptr_ovSessionProperties->frameRateDenominator,
|
||||
(CAL_VID_ENCODE_JOB_PRIORITY)ptr_ovSessionProperties->priority); //CAL_VID_ENCODE_JOB_PRIORITY_LEVEL1
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif // !cl_amd_open_video
|
||||
{
|
||||
if (dev().engines().numComputeRings()) {
|
||||
uint idx = index() % dev().engines().numComputeRings();
|
||||
@@ -2621,158 +2567,6 @@ VirtualGPU::submitReleaseExtObjects(amd::ReleaseExtObjectsCommand& vcmd)
|
||||
profilingEnd(vcmd);
|
||||
}
|
||||
|
||||
#if cl_amd_open_video
|
||||
void
|
||||
VirtualGPU::submitRunVideoProgram(amd::RunVideoProgramCommand& vcmd)
|
||||
{
|
||||
// Make sure VirtualGPU has an exclusive access to the resources
|
||||
amd::ScopedLock lock(execution());
|
||||
|
||||
profilingBegin(vcmd);
|
||||
|
||||
switch(vcmd.type()) {
|
||||
case CL_COMMAND_VIDEO_DECODE_AMD: {
|
||||
CALprogramVideoDecode calVideoData;
|
||||
cl_video_decode_data_amd* clVideoData =
|
||||
static_cast<cl_video_decode_data_amd*>(vcmd.videoData());
|
||||
|
||||
//Convert cl_video_program_type_amd to CALvideoType
|
||||
calVideoData.videoType.type = CAL_VIDEO_DECODE;
|
||||
calVideoData.videoType.size = sizeof(CALprogramVideoDecode);
|
||||
// Copy video data from CL to CAL structure
|
||||
calVideoData.videoType.flags = clVideoData->video_type.flags;
|
||||
calVideoData.picture_parameter_1 = clVideoData->picture_parameter_1;
|
||||
calVideoData.picture_parameter_2 = clVideoData->picture_parameter_2;
|
||||
calVideoData.picture_parameter_2_size = clVideoData->picture_parameter_2_size;
|
||||
calVideoData.bitstream_data = clVideoData->bitstream_data;
|
||||
calVideoData.bitstream_data_size = clVideoData->bitstream_data_size;
|
||||
calVideoData.slice_data_control = clVideoData->slice_data_control;
|
||||
calVideoData.slice_data_size = clVideoData->slice_data_control_size;
|
||||
|
||||
gpu::Memory* gpuMem = dev().getGpuMemory(&vcmd.memory());
|
||||
|
||||
GpuEvent event;
|
||||
if (!runProgramVideoDecode(event, gpuMem->gslResource(),
|
||||
reinterpret_cast<CALprogramVideoDecode&>(calVideoData))) {
|
||||
vcmd.setStatus(CL_INVALID_OPERATION);
|
||||
return;
|
||||
}
|
||||
// Mark source and destination as busy
|
||||
gpuMem->setBusy(*this, event);
|
||||
|
||||
// Update the global GPU event and flush the DMA buffer,
|
||||
// so runtime can synchronize UVD and SDMA engines
|
||||
// @todo - do we need to flush here?
|
||||
setGpuEvent(event, true);
|
||||
}
|
||||
break;
|
||||
case CL_COMMAND_VIDEO_ENCODE_AMD: {
|
||||
cl_video_encode_data_amd* clVideoData =
|
||||
static_cast<cl_video_encode_data_amd*>(vcmd.videoData());
|
||||
|
||||
CAL_VID_ENCODE_PARAMETERS_H264 *ppicture_parameter =
|
||||
reinterpret_cast<CAL_VID_ENCODE_PARAMETERS_H264*>(clVideoData->pictureParam2);
|
||||
uint num_of_encode_task_input_buffer =
|
||||
(uint)(clVideoData->pictureParam1Size);
|
||||
CAL_VID_BUFFER_DESCRIPTION *encode_task_input_buffer_list =
|
||||
reinterpret_cast<CAL_VID_BUFFER_DESCRIPTION *>(clVideoData->pictureParam1);
|
||||
|
||||
CAL_VID_BUFFER_DESCRIPTION *encode_task_input_buffer_listbackup =
|
||||
new CAL_VID_BUFFER_DESCRIPTION [num_of_encode_task_input_buffer];
|
||||
if (encode_task_input_buffer_listbackup == NULL) {
|
||||
LogError("calCtxRunProgramVideo unable to allocate memory");
|
||||
vcmd.setStatus(CL_OUT_OF_RESOURCES);
|
||||
return;
|
||||
}
|
||||
|
||||
// Entropy mode
|
||||
cl_mem buffer_surface;
|
||||
gpu::Memory* gpuMem;
|
||||
|
||||
// Convert cl_mem object to gslMemObject object
|
||||
for (uint i = 0; i < num_of_encode_task_input_buffer; i++) {
|
||||
encode_task_input_buffer_listbackup[i] = encode_task_input_buffer_list[i];
|
||||
buffer_surface = (cl_mem)encode_task_input_buffer_list[i].buffer.pPicture;
|
||||
gpuMem = dev().getGpuMemory(as_amd(buffer_surface));
|
||||
encode_task_input_buffer_listbackup[i].buffer.pPicture = gpuMem->gslResource();
|
||||
}
|
||||
|
||||
gpuMem = dev().getGpuMemory(&(vcmd.memory()));
|
||||
|
||||
// Encode the picture - call QueryTask to get the results...
|
||||
GpuEvent event;
|
||||
EncodeePicture(event, num_of_encode_task_input_buffer,
|
||||
encode_task_input_buffer_listbackup, ppicture_parameter,
|
||||
&(clVideoData->uiTaskID),
|
||||
gpuMem->gslResource(), 0);
|
||||
|
||||
// Mark source and destination as busy
|
||||
gpuMem->setBusy(*this, event);
|
||||
|
||||
// Update the global GPU event and flush the DMA buffer,
|
||||
// so runtime can synchronize VCE and SDMA engines
|
||||
// @todo - do we need to flush here?
|
||||
setGpuEvent(event, true);
|
||||
delete[] encode_task_input_buffer_listbackup;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
vcmd.setStatus(CL_INVALID_VIDEO_CONFIG_TYPE_AMD);
|
||||
LogError("Invalid video command type");
|
||||
return;
|
||||
}
|
||||
profilingEnd(vcmd);
|
||||
}
|
||||
|
||||
void
|
||||
VirtualGPU::submitSetVideoSession(amd::SetVideoSessionCommand& cmd)
|
||||
{
|
||||
switch (cmd.operation()) {
|
||||
case amd::SetVideoSessionCommand::CloseSession:
|
||||
closeVideoEncodeSession(0);
|
||||
destroyVCE(0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::ConfigTypePictureControl:
|
||||
getPictureConfig(
|
||||
(CALEncodeGetPictureControlConfig*)(cmd.paramValue()), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::ConfigTypeRateControl:
|
||||
getRateControlConfig(
|
||||
(CALEncodeGetRateControlConfig*)(cmd.paramValue()), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::ConfigTypeMotionEstimation:
|
||||
getMotionEstimationConfig(
|
||||
(CALEncodeGetMotionEstimationConfig*)(cmd.paramValue()), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::ConfigTypeRDO:
|
||||
getRDOConfig(
|
||||
(CALEncodeGetRDOControlConfig*)(cmd.paramValue()), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::SendEncodeConfig:
|
||||
SendConfig(
|
||||
cmd.numBuffers(), (CAL_VID_CONFIG*)(cmd.paramValue()), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::GetDeviceCapVCE: {
|
||||
CALEncodeGetDeviceCAP EncodeCAP;
|
||||
EncodeCAP.num_of_encode_cap = 1;
|
||||
EncodeCAP.encode_caps = (CAL_VID_ENCODE_CAPS *)(cmd.paramValue());
|
||||
getDeviceCAPVCE(0, cmd.numBuffers(), &EncodeCAP, 0);
|
||||
}
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::EncodeQueryTaskDescription:
|
||||
QueryTaskDescription(
|
||||
cmd.numBuffers(), cmd.paramValue2(),
|
||||
(CAL_VID_OUTPUT_DESCRIPTION *)cmd.paramValue(), 0);
|
||||
break;
|
||||
case amd::SetVideoSessionCommand::ReleaseOutputResource:
|
||||
ReleaseOutputResource(cmd.numBuffers(), 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
void
|
||||
VirtualGPU::submitSignal(amd::SignalCommand & vcmd)
|
||||
{
|
||||
|
||||
@@ -206,9 +206,6 @@ public:
|
||||
VirtualGPU(Device& device);
|
||||
bool create(
|
||||
bool profiling
|
||||
#if cl_amd_open_video
|
||||
, void* calVideoProperties
|
||||
#endif // cl_amd_open_video
|
||||
, uint deviceQueueSize = 0
|
||||
);
|
||||
~VirtualGPU();
|
||||
@@ -242,10 +239,6 @@ public:
|
||||
void submitPerfCounter(amd::PerfCounterCommand& vcmd);
|
||||
void submitThreadTraceMemObjects(amd::ThreadTraceMemObjectsCommand& cmd);
|
||||
void submitThreadTrace(amd::ThreadTraceCommand& vcmd);
|
||||
#if cl_amd_open_video
|
||||
void submitRunVideoProgram(amd::RunVideoProgramCommand& vcmd);
|
||||
void submitSetVideoSession(amd::SetVideoSessionCommand& cmd);
|
||||
#endif // cl_amd_open_video
|
||||
void submitSignal(amd::SignalCommand & vcmd);
|
||||
void submitMakeBuffersResident(amd::MakeBuffersResidentCommand & vcmd);
|
||||
virtual void submitSvmFreeMemory(amd::SvmFreeMemoryCommand& cmd);
|
||||
|
||||
@@ -44,7 +44,6 @@ CALGSLContext::CALGSLContext()
|
||||
|
||||
m_scratchBuffers = 0;
|
||||
|
||||
m_videoSession = 0;
|
||||
m_waitType = CAL_WAIT_LOW_CPU_UTILIZATION;
|
||||
}
|
||||
|
||||
@@ -434,8 +433,6 @@ CALGSLContext::runProgramVideoDecode(GpuEvent& event, gslMemObject mo, const CAL
|
||||
eventBegin(MainEngine);
|
||||
eventEnd(MainEngine, event);
|
||||
|
||||
gslVidDecode(&m_videocontext, m_videoSession, data);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -802,46 +799,6 @@ CALGSLContext::MakeBuffersResident(CALuint numObjects, gslMemObject* pMemObjects
|
||||
return res;
|
||||
}
|
||||
|
||||
bool
|
||||
CALGSLContext::openVideoSession(CALvideoProperties& properties)
|
||||
{
|
||||
gslVidSessionCreateData data;
|
||||
|
||||
assert(properties.size == sizeof(CALvideoProperties));
|
||||
|
||||
data.size = sizeof(gslVidSessionCreateData);
|
||||
data.type = (gslDecodeProfile) properties.profile;
|
||||
data.format = (gslDecodeFormat) properties.format;
|
||||
data.width = properties.width;
|
||||
data.height = properties.height;
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = static_cast<gslVidContextEnum>(properties.VideoEngine_name);
|
||||
m_videoSession = gslVidSessionCreate(&m_videocontext, data);
|
||||
|
||||
if (m_videoSession == NULL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CALGSLContext::closeVideoSession(void)
|
||||
{
|
||||
if (m_videoSession)
|
||||
{
|
||||
//! @note: GSL device isn't thread safe
|
||||
amd::ScopedLock k(dev()->gslDeviceOps());
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO;
|
||||
gslVidSessionDestroy(&m_videocontext, m_videoSession);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CALGSLContext::bindAtomicCounter(uint32 index, gslMemObject obj)
|
||||
{
|
||||
@@ -862,238 +819,6 @@ CALGSLContext::syncAtomicCounter(GpuEvent& event, uint32 index, bool read)
|
||||
eventEnd(MainEngine, event);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::createVCE(CALEncodeCreateVCE* pEncodeVCE, CALuint flags)
|
||||
{
|
||||
gslVidEncodeCreateVCEData data;
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeCreateVCE(&m_videocontext, &data);
|
||||
|
||||
pEncodeVCE->VCEsession = reinterpret_cast<CALvoid *>(data.session);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::destroyVCE(CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeDestroyVCE(&m_videocontext);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::getDeviceInfoVCE(CALuint *num_device, CALEncodeGetDeviceInfo* pEncodeDeviceInfo, CALuint flags)
|
||||
{
|
||||
gslVidEncodeGetDeviceInfo(num_device, (gslVidEncodeGetDeviceInfoData *) pEncodeDeviceInfo);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::getNumberOfModesVCE(CALEncodeGetNumberOfModes* pEncodeNumberOfModes, CALuint flags)
|
||||
{
|
||||
uint32 device_id =0;
|
||||
gslVidEncodeQueryNumberOfModesData data;
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeGetNumberOfModes(&m_videocontext, device_id, &data);
|
||||
pEncodeNumberOfModes->num_of_encode_Mode = data.num_of_encode_Mode;
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::getModesVCE(CALuint device_id, CALuint NumEncodeModesToRetrieve, CALEncodeGetModes* pEncodeMode, CALuint flags)
|
||||
{
|
||||
gslVidEncodeGetModesData data;
|
||||
data.NumEncodeModesToRetrieve = NumEncodeModesToRetrieve ;
|
||||
data.pEncodeModes = (GSL_VID_ENCODE_MODE *)malloc(sizeof(GSL_VID_ENCODE_MODE)*NumEncodeModesToRetrieve);
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeGetModes(&m_videocontext, device_id, &data);
|
||||
|
||||
// pEncodeMode = ( CALEncodeGetModes *) data.pEncodeModes;
|
||||
pEncodeMode->NumEncodeModesToRetrieve = data.NumEncodeModesToRetrieve;
|
||||
CALencodeMode *pEncodeModes = pEncodeMode->pEncodeModes;
|
||||
|
||||
for (CALuint mode_id = 0; mode_id < NumEncodeModesToRetrieve; mode_id++)
|
||||
{
|
||||
switch(data.pEncodeModes[mode_id])
|
||||
{
|
||||
case GSL_VID_encode_AVC_FULL:
|
||||
pEncodeModes[mode_id] = CAL_VID_encode_AVC_FULL;
|
||||
break;
|
||||
case GSL_VID_encode_AVC_ENTROPY:
|
||||
pEncodeModes[mode_id] = CAL_VID_encode_AVC_ENTROPY;
|
||||
break;
|
||||
default:
|
||||
pEncodeModes[mode_id] = CAL_VID_encode_MODE_NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
free(data.pEncodeModes);
|
||||
}
|
||||
void
|
||||
CALGSLContext::getDeviceCAPVCE(CALuint device_id,
|
||||
CALuint encode_cap_total_size,
|
||||
CALEncodeGetDeviceCAP *pEncodeCAP,
|
||||
CALuint flags)
|
||||
{
|
||||
gslVidEncodeGetDeviceCAPData *data = (gslVidEncodeGetDeviceCAPData *) pEncodeCAP;
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
data->num_of_encode_cap = encode_cap_total_size;
|
||||
|
||||
gslVidEncodeGetDeviceCAP(device_id, encode_cap_total_size, data);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::createEncodeSession(CALuint device_id,
|
||||
CALencodeMode encode_mode,
|
||||
CAL_VID_PROFILE_LEVEL encode_profile_level,
|
||||
CAL_VID_PICTURE_FORMAT encode_formatm,
|
||||
CALuint encode_width,
|
||||
CALuint encode_height,
|
||||
CALuint frameRateNum,
|
||||
CALuint frameRateDenom,
|
||||
CAL_VID_ENCODE_JOB_PRIORITY encode_priority_level)
|
||||
{
|
||||
gslVidEncodeSessionCreateData data;
|
||||
|
||||
data.encode_mode = (GSL_VID_ENCODE_MODE)encode_mode;
|
||||
data.encode_profile_level.profile = encode_profile_level.profile;
|
||||
data.encode_profile_level.level = encode_profile_level.level;
|
||||
data.encode_formatm = (GSL_VID_PICTURE_FORMAT)encode_formatm;
|
||||
data.encode_width = encode_width;
|
||||
data.encode_height = encode_height;
|
||||
data.frameRateNumerator = frameRateNum;
|
||||
data.frameRateDenominator = frameRateDenom;
|
||||
data.encode_priority_level = (GSL_VID_ENCODE_JOB_PRIORITY)encode_priority_level;
|
||||
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
m_EncodevideoSession = gslVidEncodeCreateSession(&m_videocontext, device_id, &data);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::closeVideoEncodeSession(CALuint device_id)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
if (m_EncodevideoSession)
|
||||
{
|
||||
gslVidEncodeSessionDestroy(&m_videocontext, device_id, m_EncodevideoSession);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CALGSLContext::setState(CALEncodeSetState EncodeState, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
gslVidEncodeSetState(&m_videocontext, m_EncodevideoSession, (GSL_VID_ENCODE_STATE) EncodeState.encode_states);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::getPictureConfig(CALEncodeGetPictureControlConfig *pPictureControlConfig, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeGetPictureControlConfig(&m_videocontext, m_EncodevideoSession, (GSL_VID_CONFIG_PICTURE_CONTROL *) pPictureControlConfig);
|
||||
}
|
||||
void
|
||||
CALGSLContext::getRateControlConfig(CALEncodeGetRateControlConfig *pRateControConfig, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeGetRateControlConfig(&m_videocontext, m_EncodevideoSession, (GSL_VID_CONFIG_RATE_CONTROL *) pRateControConfig);
|
||||
}
|
||||
void
|
||||
CALGSLContext::getMotionEstimationConfig(CALEncodeGetMotionEstimationConfig *pMotionEstimationConfig, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
gslVidEncodeGetMotionEstimationConfig(&m_videocontext, m_EncodevideoSession, (GSL_VID_CONFIG_MOTION_ESTIMATION *) pMotionEstimationConfig);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::getRDOConfig(CALEncodeGetRDOControlConfig *pRODConfig, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeGetRDOControlConfig(&m_videocontext, m_EncodevideoSession, (GSL_VID_CONFIG_RDO *) pRODConfig);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::SendConfig(CALuint num_of_config_buffers, CAL_VID_CONFIG *pConfigBuffers, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeSendConfig(&m_videocontext, m_EncodevideoSession, num_of_config_buffers, (GSL_VID_CONFIG *)pConfigBuffers);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::EncodeePicture(GpuEvent& event,
|
||||
CALuint num_of_encode_task_input_buffer,
|
||||
CAL_VID_BUFFER_DESCRIPTION *encode_task_input_buffer_list,
|
||||
void* picture_parameter,
|
||||
CALuint *pTaskID,
|
||||
gslMemObject input_NV12_surface,
|
||||
CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
eventBegin(MainEngine);
|
||||
eventEnd(MainEngine, event);
|
||||
|
||||
gslVidEncodeePicture(
|
||||
&m_videocontext,
|
||||
m_EncodevideoSession,
|
||||
num_of_encode_task_input_buffer,
|
||||
(GSL_VID_BUFFER_DESCRIPTION *)encode_task_input_buffer_list,
|
||||
picture_parameter,
|
||||
pTaskID,
|
||||
input_NV12_surface);
|
||||
}
|
||||
|
||||
void
|
||||
CALGSLContext::QueryTaskDescription(CALuint num_of_task_description_request,
|
||||
CALuint *num_of_task_description_return,
|
||||
CAL_VID_OUTPUT_DESCRIPTION *task_description_list,
|
||||
CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeeQueryTaskDescription(
|
||||
&m_videocontext,
|
||||
m_EncodevideoSession,
|
||||
num_of_task_description_request,
|
||||
num_of_task_description_return,
|
||||
(GSL_VID_OUTPUT_DESCRIPTION *)task_description_list);
|
||||
}
|
||||
void
|
||||
CALGSLContext::ReleaseOutputResource(CALuint taskID, CALuint flags)
|
||||
{
|
||||
m_videocontext.m_gsCtx = m_cs;
|
||||
m_videocontext.VideoEngine_name = GSL_VID_CONTEXT_VIDEO_VCE;
|
||||
|
||||
gslVidEncodeeReleaseOutputResource(&m_videocontext, m_EncodevideoSession, taskID);
|
||||
}
|
||||
|
||||
bool
|
||||
CALGSLContext::moduleLoad(CALimage image,
|
||||
gslProgramObject* func, gslMemObject* constants, CALUavMask* uavMask)
|
||||
|
||||
@@ -94,9 +94,6 @@ public:
|
||||
|
||||
void getFuncInfo(gslProgramObject func, gslProgramTarget target, CALfuncInfo* pInfo);
|
||||
|
||||
bool openVideoSession(CALvideoProperties& properties);
|
||||
void closeVideoSession(void);
|
||||
|
||||
void bindAtomicCounter(uint32 index, gslMemObject obj);
|
||||
void syncAtomicCounter(GpuEvent& event, uint32 index, bool read);
|
||||
|
||||
@@ -178,10 +175,6 @@ private:
|
||||
gslScratchBufferObject m_scratchBuffers;
|
||||
EventQueue m_eventQueue[AllEngines];
|
||||
bool m_allowDMA;
|
||||
|
||||
gslVidSession m_videoSession;
|
||||
gslVideoContext m_videocontext;
|
||||
gslVidSession m_EncodevideoSession;
|
||||
};
|
||||
|
||||
#endif // __GSLContext_h__
|
||||
|
||||
@@ -87,10 +87,6 @@ public:
|
||||
// when integrating HSA and OpenCL branches.
|
||||
// TODO: After inegration, whoever is working on VirtualGPU should write
|
||||
// actual implemention.
|
||||
#if cl_amd_open_video
|
||||
virtual void submitRunVideoProgram(amd::RunVideoProgramCommand &cmd) {}
|
||||
virtual void submitSetVideoSession(amd::SetVideoSessionCommand &cmd) {}
|
||||
#endif // cl_amd_open_video
|
||||
virtual void submitSignal(amd::SignalCommand &cmd) {}
|
||||
virtual void submitMakeBuffersResident(amd::MakeBuffersResidentCommand &cmd) {}
|
||||
virtual void submitSvmFreeMemory(amd::SvmFreeMemoryCommand& cmd);
|
||||
|
||||
@@ -1202,129 +1202,6 @@ private:
|
||||
State state_; //!< State of the issued command
|
||||
};
|
||||
|
||||
#if cl_amd_open_video
|
||||
class RunVideoProgramCommand: public OneMemoryArgCommand
|
||||
{
|
||||
private:
|
||||
//! Store pointer to video data structure
|
||||
void* videoData_;
|
||||
|
||||
public:
|
||||
//! Construct a new AcquireExtObjectsCommand
|
||||
RunVideoProgramCommand(
|
||||
HostQueue& queue,
|
||||
const EventWaitList& eventWaitList,
|
||||
void* videoData,
|
||||
Memory& memory,
|
||||
cl_command_type cmdType)
|
||||
: OneMemoryArgCommand(queue, cmdType, eventWaitList, memory)
|
||||
, videoData_(NULL)
|
||||
{
|
||||
unsigned int size = *static_cast<unsigned int*>(videoData);
|
||||
videoData_ = static_cast<void*>(new char[size]);
|
||||
if (videoData_) {
|
||||
memcpy(videoData_, videoData, size);
|
||||
}
|
||||
}
|
||||
virtual ~RunVideoProgramCommand()
|
||||
{
|
||||
if (videoData_) delete[] static_cast<char*>(videoData_);
|
||||
}
|
||||
|
||||
virtual void submit(device::VirtualDevice& device) {
|
||||
device.submitRunVideoProgram(*this);
|
||||
}
|
||||
|
||||
// Accessor methods
|
||||
void* videoData() const { return videoData_; }
|
||||
|
||||
//! Read the memory object
|
||||
Memory& memory() const { return *memory_; }
|
||||
};
|
||||
|
||||
class SetVideoSessionCommand: public Command
|
||||
{
|
||||
public:
|
||||
enum Operation {
|
||||
CloseSession,
|
||||
ConfigTypePictureControl,
|
||||
ConfigTypeRateControl,
|
||||
ConfigTypeMotionEstimation,
|
||||
ConfigTypeRDO,
|
||||
SendEncodeConfig,
|
||||
GetDeviceCapVCE,
|
||||
EncodeQueryTaskDescription,
|
||||
ReleaseOutputResource
|
||||
};
|
||||
|
||||
//! Construct a new SetVideoSessionCommand
|
||||
SetVideoSessionCommand(
|
||||
HostQueue& queue,
|
||||
const EventWaitList& eventWaitList,
|
||||
Operation oper,
|
||||
void* paramValue = 0
|
||||
)
|
||||
: Command(queue, 0, eventWaitList)
|
||||
, oper_(oper)
|
||||
, paramValue_(paramValue)
|
||||
, numBuffers_(0)
|
||||
, paramValue2_(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
//! Construct a new SetVideoSessionCommand
|
||||
SetVideoSessionCommand(
|
||||
HostQueue& queue,
|
||||
const EventWaitList& eventWaitList,
|
||||
Operation oper,
|
||||
void* paramValue,
|
||||
uint numBuffers
|
||||
)
|
||||
: Command(queue, 0, eventWaitList)
|
||||
, oper_(oper)
|
||||
, paramValue_(paramValue)
|
||||
, numBuffers_(numBuffers)
|
||||
, paramValue2_(NULL)
|
||||
{
|
||||
}
|
||||
//! Construct a new SetVideoSessionCommand
|
||||
SetVideoSessionCommand(
|
||||
HostQueue& queue,
|
||||
const EventWaitList& eventWaitList,
|
||||
Operation oper,
|
||||
uint numBuffers,
|
||||
void* paramValue,
|
||||
uint* paramValue2
|
||||
)
|
||||
: Command(queue, 0, eventWaitList)
|
||||
, oper_(oper)
|
||||
, paramValue_(paramValue)
|
||||
, numBuffers_(numBuffers)
|
||||
, paramValue2_(paramValue2)
|
||||
{
|
||||
}
|
||||
virtual ~SetVideoSessionCommand()
|
||||
{
|
||||
}
|
||||
|
||||
virtual void submit(device::VirtualDevice& device) {
|
||||
device.submitSetVideoSession(*this);
|
||||
}
|
||||
|
||||
// Accessor methods
|
||||
Operation operation() const { return oper_; }
|
||||
void* paramValue() const { return paramValue_; }
|
||||
uint* paramValue2() const { return paramValue2_; }
|
||||
uint numBuffers() const { return numBuffers_; }
|
||||
|
||||
private:
|
||||
Operation oper_; //!< Video session operation
|
||||
void* paramValue_; //!< Store pointer to parameter data
|
||||
uint numBuffers_; //!<
|
||||
uint* paramValue2_; //!< Store pointer to parameter data
|
||||
};
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
class SignalCommand:public OneMemoryArgCommand
|
||||
{
|
||||
|
||||
|
||||
@@ -19,15 +19,9 @@ namespace amd {
|
||||
|
||||
HostQueue::HostQueue(
|
||||
Context& context, Device& device, cl_command_queue_properties properties, uint queueRTCUs
|
||||
#if cl_amd_open_video
|
||||
, void* calVideoProperties
|
||||
#endif // cl_amd_open_video
|
||||
)
|
||||
: CommandQueue(context, device, properties, device.info().queueProperties_
|
||||
| CL_QUEUE_COMMAND_INTERCEPT_ENABLE_AMD, queueRTCUs)
|
||||
#if cl_amd_open_video
|
||||
, calVideoProperties_(calVideoProperties)
|
||||
#endif // cl_amd_open_video
|
||||
{
|
||||
if (thread_.state() >= Thread::INITIALIZED) {
|
||||
ScopedLock sl(queueLock_);
|
||||
|
||||
@@ -169,10 +169,6 @@ private:
|
||||
protected:
|
||||
virtual bool terminate();
|
||||
|
||||
#if cl_amd_open_video
|
||||
void* calVideoProperties_;
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
public:
|
||||
/*! \brief Construct a new host queue.
|
||||
*
|
||||
@@ -184,9 +180,6 @@ public:
|
||||
Device& device,
|
||||
cl_command_queue_properties properties,
|
||||
uint queueRTCUs = 0
|
||||
#if cl_amd_open_video
|
||||
, void* calVideoProperties = NULL
|
||||
#endif // cl_amd_open_video
|
||||
);
|
||||
|
||||
//! Returns TRUE if this command queue can accept commands.
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
F(cl_sampler, Sampler) \
|
||||
F(cl_counter_amd, Counter) \
|
||||
F(cl_perfcounter_amd, PerfCounter) \
|
||||
F(cl_video_session_amd, VideoSession) \
|
||||
F(cl_threadtrace_amd, ThreadTrace)
|
||||
|
||||
// Forward declare ::cl_* types and amd::Class types
|
||||
@@ -184,8 +183,7 @@ public:
|
||||
ObjectTypeProgram = 7,
|
||||
ObjectTypeQueue = 8,
|
||||
ObjectTypeSampler = 9,
|
||||
ObjectTypeThreadTrace = 10,
|
||||
ObjectTypeVideoSession= 11
|
||||
ObjectTypeThreadTrace = 10
|
||||
};
|
||||
|
||||
ObjectMetadata& metadata() { return metadata_; }
|
||||
|
||||
@@ -1,79 +0,0 @@
|
||||
//
|
||||
// Copyright (c) 2010 Advanced Micro Devices, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#ifndef VIDEO_SESSION_HPP_
|
||||
#define VIDEO_SESSION_HPP_
|
||||
|
||||
#include "top.hpp"
|
||||
#include "platform/object.hpp"
|
||||
#include "device/device.hpp"
|
||||
#include "platform/commandqueue.hpp"
|
||||
|
||||
#if cl_amd_open_video
|
||||
|
||||
namespace amd
|
||||
{
|
||||
//! VideoSession class
|
||||
class VideoSession : public RuntimeObject
|
||||
{
|
||||
private:
|
||||
Context& context_; //!< OpenCL context
|
||||
Device& device_; //!< OpenCL device
|
||||
HostQueue* queue_; //!< Open CL video command queue
|
||||
cl_bitfield& video_session_flags_; //!< Creation flags
|
||||
cl_video_config_type_amd type_; //!< config buffer type
|
||||
cl_uint size_; //!< config buffer size
|
||||
void* buffer_; //!< pointer to config buffer
|
||||
|
||||
public:
|
||||
VideoSession(
|
||||
Context& context, //!< OpenCL context
|
||||
Device& device, //!< OpenCL device
|
||||
HostQueue* queue, //!< OpenCL command queue
|
||||
cl_bitfield flags, //!< Video Session flags
|
||||
cl_video_config_type_amd type, //!< config buffer type
|
||||
cl_uint size, //!< config buffer size
|
||||
void* buffer //!< pointer to config buffer
|
||||
)
|
||||
: context_(context)
|
||||
, device_(device)
|
||||
, queue_(queue)
|
||||
, video_session_flags_(flags)
|
||||
, type_(type)
|
||||
, size_(size)
|
||||
, buffer_(NULL)
|
||||
{
|
||||
if (size > 0 && buffer) {
|
||||
buffer_ = new char[size];
|
||||
memcpy(buffer_, buffer, size);
|
||||
}
|
||||
}
|
||||
|
||||
virtual ~VideoSession()
|
||||
{
|
||||
if (queue_) {
|
||||
queue_->release();
|
||||
}
|
||||
if (buffer_) {
|
||||
delete[] static_cast<char*>(buffer_);
|
||||
}
|
||||
}
|
||||
|
||||
//! Accessor functions
|
||||
Context& context() const { return context_; }
|
||||
Device& device() const { return device_; }
|
||||
HostQueue& queue() const { return *queue_; }
|
||||
cl_bitfield& flags() const { return video_session_flags_; }
|
||||
cl_video_config_type_amd type() const { return type_; }
|
||||
void * configbuffer() const {return buffer_;}
|
||||
|
||||
//! RTTI internal implementation
|
||||
virtual ObjectType objectType() const {return ObjectTypeVideoSession;}
|
||||
};
|
||||
|
||||
} // namespace amd
|
||||
|
||||
#endif // cl_amd_open_video
|
||||
|
||||
#endif /*VIDEO_SESSION_HPP_*/
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
#include "utils/macros.hpp"
|
||||
#include "CL/opencl.h"
|
||||
#include "amdocl/cl_open_video_amd.h"
|
||||
|
||||
#if defined(CL_VERSION_2_0)
|
||||
/* Deprecated in OpenCL 2.0 */
|
||||
|
||||
@@ -76,8 +76,6 @@ release(bool, ENABLE_CAL_SHUTDOWN, false, \
|
||||
"Enable explicit CAL shutdown (for PM4 capture)") \
|
||||
release(bool, CL_KHR_FP64, true, \
|
||||
"Enable/Disable support for double precision") \
|
||||
release(uint, GPU_OPEN_VIDEO, 0, \
|
||||
"Non-zero value allows to report Open Video extension on GPU") \
|
||||
release(cstring, AMD_OCL_BUILD_OPTIONS, 0, \
|
||||
"Set clBuildProgram() and clCompileProgram()'s options (override)") \
|
||||
release(cstring, AMD_OCL_BUILD_OPTIONS_APPEND, 0, \
|
||||
|
||||
Reference in New Issue
Block a user