Esempio n. 1
0
	void DepthStencilBuffer::Create(uint32_t width, uint32_t height)
	{
		auto* device = GraphicsCore::GetDevice();

		// デプスステンシルテクスチャ
		D3D11_TEXTURE2D_DESC descDepth;
		ZeroMemory(&descDepth, sizeof(descDepth));
		descDepth.Width = width;
		descDepth.Height = height;
		descDepth.MipLevels = 1;
		descDepth.ArraySize = 1;
		descDepth.Format = DXGI_FORMAT_R24G8_TYPELESS;
		descDepth.SampleDesc.Count = 1;
		descDepth.SampleDesc.Quality = 0;
		descDepth.Usage = D3D11_USAGE_DEFAULT;
		descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL;
		descDepth.CPUAccessFlags = 0;
		descDepth.MiscFlags = 0;
		ID3D11Texture2D* texture2d;
		auto hr = device->CreateTexture2D(&descDepth, NULL, &texture2d);
		THROW_IF_FAILED(hr);
		resource_ = texture2d;

		// デプスステンシルビュー
		D3D11_DEPTH_STENCIL_VIEW_DESC descDSV;
		ZeroMemory(&descDSV, sizeof(descDSV));
		descDSV.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
		descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
		descDSV.Texture2D.MipSlice = 0;
		hr = device->CreateDepthStencilView(texture2d, &descDSV, &dsv_);
		THROW_IF_FAILED(hr);
	}
Esempio n. 2
0
	void VertexBuffer::Create(const void* data, uint32_t size, VertexAttributeFlags attributes, BufferUsage usage, bool unorderedAccess)
	{
		Assert(!resource_);

		size_ = size;

		// 頂点バッファの設定
		D3D11_BUFFER_DESC bd;
		ZeroMemory(&bd, sizeof(bd));
		bd.CPUAccessFlags = 0;
		bd.ByteWidth = size;

		if (unorderedAccess) {
			bd.BindFlags = D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_UNORDERED_ACCESS;
			bd.Usage = D3D11_USAGE_DEFAULT;
			bd.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS;
		}
		else {
			bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
			if (usage == BUFFER_USAGE_DYNAMIC) {
				bd.Usage = D3D11_USAGE_DYNAMIC;
				bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
			} else if (usage == BUFFER_USAGE_DEFAULT) {
				bd.Usage = D3D11_USAGE_DEFAULT;
			} else {
				bd.Usage = D3D11_USAGE_IMMUTABLE;
			}
		}

		// サブリソースの設定
		D3D11_SUBRESOURCE_DATA* pInit = nullptr;
		D3D11_SUBRESOURCE_DATA initData;
		if (data) {
			ZeroMemory(&initData, sizeof(initData));
			initData.pSysMem = data;
			pInit = &initData;
		}

		// 頂点バッファ生成
		ID3D11Buffer* buffer;
		THROW_IF_FAILED(GraphicsCore::GetDevice()->CreateBuffer(&bd, pInit, &buffer));

		resource_ = buffer;
		stride_ = ComputeVertexStride(attributes);
		attributes_ = attributes;

		// アンオーダードアクセスビューを生成
		if (unorderedAccess) {
			D3D11_UNORDERED_ACCESS_VIEW_DESC uavDesc;
			uavDesc.Buffer.FirstElement = 0;
			uavDesc.Buffer.Flags = D3D11_BUFFER_UAV_FLAG_RAW;
			uavDesc.Buffer.NumElements = size / 4;
			uavDesc.ViewDimension = D3D11_UAV_DIMENSION_BUFFER;
			uavDesc.Format = DXGI_FORMAT_R32_TYPELESS;
			THROW_IF_FAILED(GraphicsCore::GetDevice()->CreateUnorderedAccessView(resource_, &uavDesc, &uav_));
		}
	}
Esempio n. 3
0
tResult cSensorAnalyzer::Init(tInitStage eStage, __exception)
{
    RETURN_IF_FAILED(cBaseQtFilter::Init(eStage, __exception_ptr));

    if (eStage == StageFirst)
    {
        THROW_IF_FAILED(CreateInputPins(__exception_ptr));
    }  
    else if (StageNormal == eStage)
    {
        m_sensorPresets.resize(LIST_LENGTH);
        //THROW_IF_FAILED(LoadConfigurationData("default"));        
    }
    else if(eStage == StageGraphReady)
    {                
        //m_pWidget->SetSensorPresets(m_sensorPresets);
        cFilename filepath = GetPropertyStr("Directory for Sensorpresets");
        ADTF_GET_CONFIG_FILENAME(filepath);
        cString path = filepath.CreateAbsolutePath(".");
        emit DirectoryReceived(QString(path.GetPtr()));
        
        // no ids were set so far
        m_bIDsVoltageSet= tFalse;
        m_bIDsInerMeasUnitSet= tFalse;
        m_bIDsWheelDataSet= tFalse;
        m_bIDsUltrasonicSet = tFalse;
    }
    RETURN_NOERROR;
}
Esempio n. 4
0
void Run_NumericTests()
{
    HRESULT hr;

    CoreShimComActivation csact{ W("NETServer.dll"), W("NumericTesting") };

    ComSmartPtr<INumericTesting> numericTesting;
    THROW_IF_FAILED(::CoCreateInstance(CLSID_NumericTesting, nullptr, CLSCTX_INPROC, IID_INumericTesting, (void**)&numericTesting));

    int seed = 37;
    ::srand(seed);

    ::printf("Numeric RNG seed: %d\n", seed);

    int a = ::rand();
    int b = ::rand();

    MarshalByte(numericTesting, (byte)a, (byte)b);
    MarshalShort(numericTesting, (int16_t)a, (int16_t)b);
    MarshalUShort(numericTesting, (uint16_t)a, (uint16_t)b);
    MarshalInt(numericTesting, a, b);
    MarshalUInt(numericTesting, (uint32_t)a, (uint32_t)b);
    MarshalLong(numericTesting, (int64_t)a, (int64_t)b);
    MarshalULong(numericTesting, (uint64_t)a, (uint64_t)b);
    MarshalFloat(numericTesting, (float)a / 100.f, (float)b / 100.f);
    MarshalDouble(numericTesting, (double)a / 100.0, (double)b / 100.0);
    MarshalManyInts(numericTesting);
}
Esempio n. 5
0
	void IndexBuffer::Create(const void* data, uint32_t size, IndexBufferStride stride, BufferUsage usage)
	{
		stride_ = stride;
		bufferSize_ = size;
		indexCount_ = indexStrideList[stride];

		D3D11_BUFFER_DESC ibd;
		ibd.ByteWidth = size;
		ibd.BindFlags = D3D11_BIND_INDEX_BUFFER;
		ibd.CPUAccessFlags = 0;
		ibd.MiscFlags = 0;
		if (usage == BUFFER_USAGE_DYNAMIC) {
			ibd.Usage = D3D11_USAGE_DYNAMIC;
			ibd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
		} else if (usage == BUFFER_USAGE_DEFAULT) {
			ibd.Usage = D3D11_USAGE_DEFAULT;
		} else {
			ibd.Usage = D3D11_USAGE_IMMUTABLE;
		}

		D3D11_SUBRESOURCE_DATA* pInit = nullptr;
		D3D11_SUBRESOURCE_DATA initData;
		if (data) {
			ZeroMemory(&initData, sizeof(initData));
			initData.pSysMem = data;
			pInit = &initData;
		}

		ID3D11Buffer* buffer;
		HRESULT hr = GraphicsCore::GetDevice()->CreateBuffer(&ibd, pInit, &buffer);
		THROW_IF_FAILED(hr);
		resource_ = buffer;
	}
Esempio n. 6
0
	void ProceduralTexture::Create(const void* data, uint32_t width, uint32_t height, Format format, uint32_t bpp)
	{
		Assert(!resource_ && data);
		width_ = width;
		height_ = height;
		depth_ = 1;
		format_ = format;

		DXGI_FORMAT dxgiFormat = GetDXGIFormat(format);

		// テクスチャ生成
		D3D11_TEXTURE2D_DESC objdesc;
		ZeroMemory(&objdesc, sizeof(objdesc));
		objdesc.Width = width;
		objdesc.Height = height;
		objdesc.MipLevels = 1;
		objdesc.ArraySize = 1;
		objdesc.SampleDesc.Count = 1;
		objdesc.SampleDesc.Quality = 0;
		objdesc.MiscFlags = 0;
		objdesc.Format = dxgiFormat;
		objdesc.Usage = D3D11_USAGE_DEFAULT;
		objdesc.CPUAccessFlags = 0;
		objdesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;

		D3D11_SUBRESOURCE_DATA dataBin;
		dataBin.pSysMem = data;
		dataBin.SysMemPitch = bpp * width;
		dataBin.SysMemSlicePitch = 0;

		//	テクスチャ生成
		auto* device = GraphicsCore::GetDevice();
		ID3D11Texture2D* texture;
		THROW_IF_FAILED(device->CreateTexture2D(&objdesc, &dataBin, &texture));
		resource_ = texture;

		//	シェーダリソースビュー
		D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
		memset(&srvDesc, 0, sizeof(srvDesc));
		srvDesc.Format = dxgiFormat;
		srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
		srvDesc.Texture2D.MipLevels = 1;
		THROW_IF_FAILED(device->CreateShaderResourceView(texture, &srvDesc, &srv_));
	}
Esempio n. 7
0
void Run_StringTests()
{
    HRESULT hr;

    CoreShimComActivation csact{ W("NETServer.dll"), W("StringTesting") };

    ComSmartPtr<IStringTesting> stringTesting;
    THROW_IF_FAILED(::CoCreateInstance(CLSID_StringTesting, nullptr, CLSCTX_INPROC, IID_IStringTesting, (void**)&stringTesting));

    Marshal_LPString(stringTesting);
    Marshal_LPWString(stringTesting);
    Marshal_BStrString(stringTesting);
}
Esempio n. 8
0
	void Texture::LoadFromFile(const char* fileName)
	{
		wchar_t buffer[255] = { 0 };
		size_t size;
		mbstowcs_s(&size, buffer, fileName, sizeof(buffer));
		auto hr = DirectX::CreateDDSTextureFromFile(GraphicsCore::GetDevice(), buffer, &resource_, &srv_);
		THROW_IF_FAILED(hr);

		// 2D only
		ID3D11Texture2D* texture = (ID3D11Texture2D*)resource_;
		D3D11_TEXTURE2D_DESC desc;
		texture->GetDesc(&desc);
		width_ = desc.Width;
		height_ = desc.Height;
		depth_ = desc.ArraySize;
	}
Esempio n. 9
0
	void ConstantBuffer::Create(uint32_t size, BufferUsage usage)
	{
		Assert(size % 16 == 0);
		D3D11_BUFFER_DESC bd;
		ZeroMemory(&bd, sizeof(bd));
		bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
		bd.ByteWidth = size;
		switch (usage)
		{
		case BUFFER_USAGE_DYNAMIC:
			bd.Usage = D3D11_USAGE_DYNAMIC;
			bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
			break;
		default:
			bd.Usage = D3D11_USAGE_DEFAULT;
			bd.CPUAccessFlags = 0;
			break;
		}

		THROW_IF_FAILED(GraphicsCore::GetDevice()->CreateBuffer(&bd, nullptr, &buffer_));
		size_ = size;
	}
tResult StateControlManagementSlim::Init(tInitStage eStage, __exception)
{
    RETURN_IF_FAILED(cAsyncDataTriggeredFilter::Init(eStage, __exception_ptr));

    // pins need to be created at StageFirst
    if (eStage == StageFirst)    
    {
    	//LOG_WARNING("StateControlManagement: StageFirst;");

    	/* get Information regarding input and output pins for specific types */
    	RETURN_IF_FAILED(TActionStruct_object.StageFirst(__exception_ptr));
        RETURN_IF_FAILED(TFeedbackStruct_object.StageFirst(__exception_ptr));

    	// create and register the input pin
    	RETURN_IF_FAILED(CreateInputPins(__exception_ptr));
    	RETURN_IF_FAILED(CreateOutputPins(__exception_ptr));

        m_bDebugModeEnabled = GetPropertyBool("Debug Output to Console");
		#ifdef WRITE_DEBUG_OUTPUT_TO_FILE
		// creating logfile log file for SCM
        //LOG_WARNING("SCM: debug mode: 'logging' for scm-data enabled, writing to /opt/scm_log-'date-and-time'.log");
        time_t rawtime;
        struct tm * timeinfo;
        time(&rawtime);
        timeinfo = localtime(&rawtime);
//        cString fileDate = cString(asctime(timeinfo));
//        fileDate.Replace(" ", "_");
//        fileDate.Replace(":", "_");
//        cString logFilename = "/opt/scm_log_" + fileDate + ".log";
//        logFilename.Replace("\n", "");
//		  scm_logfile.open(logFilename, ios::out | ios::trunc);
//		  scm_logfile << "# SCM data log, recorded at: " << asctime(timeinfo) << std::endl;
		//scm_logfile.close();
        size_t N = 80;
        char dateAndTime[N];
        strftime(dateAndTime, N, "%Y_%m_%d-%H_%M_%S", timeinfo);

        cString dateAndTime_str = cString(dateAndTime);
        cString logFilename = "/opt/scm_log_" + cString(dateAndTime) + ".log";
        logFilename.Replace("\n", "");
        LOG_WARNING("SCM: debug mode: 'logging' for scm-data enabled, writing to '" + logFilename + "'.");
		scm_logfile.open(logFilename, ios::out | ios::trunc);
		scm_logfile << "# SCM data log, recorded at: " << asctime(timeinfo) << std::endl;
		#endif

        /* StateController Management*/
        i16CurrentScmManeuverID = -1;
        i16CurrentScmStepID = -1;
        i8CurrentActLvlMode = NOT_INITIALIZED;


    }
    else if (eStage == StageNormal)
    {
    	//LOG_WARNING("StateControlManagement: StageNormal;");
    	m_bPrintStrucModeEnabled = GetPropertyBool("Print Structure to Console");
        // load xml files for defining the structure of the StateController
        tResult scmLoadstate = LoadSCMStructureData();
        if(scmLoadstate < 0) {
        	LOG_ERROR(adtf_util::cString::Format("SCM: Structure could not be loaded!"));
        }
        THROW_IF_FAILED(scmLoadstate);
        if(m_bDebugModeEnabled && scmLoadstate == 0){
        	LOG_WARNING(adtf_util::cString::Format("SCM: Structure loaded successfully!"));
        }

        /* Initialization of SCM after successfully loading structure*/
        i16CurrentScmManeuverID = 0;
        i16CurrentScmStepID = 0;

        /* START StateControl Management in startup-state, wait for first PASSIVE request to start,
         *  e.g. verification of loaded maneuver list from JuryCommunication */
        i8CurrentActLvlMode = PASSIVE;

        if(m_bDebugModeEnabled) LOG_WARNING(adtf_util::cString::Format("SCM: initialized maneuverID, stepID and actLvlmode:Passive"));

    }
    else if(eStage == StageGraphReady)
    {
    	//LOG_WARNING("StateControlManagement: StageGraphReady;");

        // IDs for ActionStruct and FeedbackStruct are set
        RETURN_IF_FAILED(TActionStruct_object.StageGraphReady());
        RETURN_IF_FAILED(TFeedbackStruct_object.StageGraphReady());


        /* START StateControl Management in startup-state (maneuver 0, step 0) in passive mode, wait for response from JCom
         *  that maneuver list was successfully loaded */
        if(m_bDebugModeEnabled) LOG_WARNING(adtf_util::cString::Format("SCM: waiting for feedback from JCom regarding loaded maneuverlist."));
    }
    RETURN_NOERROR;
}
Esempio n. 11
0
	void * GraphicsContext::Map(GPUResource& resource, uint32_t subResource)
	{
		D3D11_MAPPED_SUBRESOURCE mapResource;
		THROW_IF_FAILED(deviceContext_->Map(resource.GetResource(), subResource, D3D11_MAP_WRITE_DISCARD, 0 , &mapResource));
		return mapResource.pData;
	}
Esempio n. 12
0
	void ColorBuffer::Create2D(Format format, uint32_t width, uint32_t height, uint32_t arraySize, uint32_t mips, bool unorderedAccess)
	{
		Assert(!resource_);
		mips = se::Max<uint32_t>(1, mips);
		width_ = width;
		height_ = height;
		depth_ = arraySize;
		format_ = format;

		DXGI_FORMAT dxgiFormat = GetDXGIFormat(format);

		// テクスチャ生成
		D3D11_TEXTURE2D_DESC objdesc;
		ZeroMemory(&objdesc, sizeof(objdesc));
		objdesc.Width = width;
		objdesc.Height = height;
		objdesc.MipLevels = mips;
		objdesc.ArraySize = arraySize;
		objdesc.SampleDesc.Count = 1;
		objdesc.SampleDesc.Quality = 0;
		objdesc.MiscFlags = 0;
		objdesc.Format = dxgiFormat;
		objdesc.Usage = D3D11_USAGE_DEFAULT;
		objdesc.CPUAccessFlags = 0;
		objdesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
		if(unorderedAccess)
			objdesc.BindFlags |= D3D11_BIND_UNORDERED_ACCESS;

		//	テクスチャ生成
		auto* device = GraphicsCore::GetDevice();
		ID3D11Texture2D* texture;
		THROW_IF_FAILED(device->CreateTexture2D(&objdesc, nullptr, &texture));
		resource_ = texture;

		//	シェーダリソースビュー
		bool isArray = (arraySize > 1);
		D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
		memset(&srvDesc, 0, sizeof(srvDesc));
		srvDesc.Format = dxgiFormat;
		if (isArray) {
			srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2DARRAY;
			srvDesc.Texture2DArray.ArraySize = arraySize;
			srvDesc.Texture2DArray.MipLevels = mips;
		}
		else {
			srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
			srvDesc.Texture2D.MipLevels = mips;
		}
		THROW_IF_FAILED(device->CreateShaderResourceView(texture, &srvDesc, &srv_));

		// レンダーターゲットビュー
		D3D11_RENDER_TARGET_VIEW_DESC rdesc;
		rdesc.Format = dxgiFormat;
		rdesc.ViewDimension = (arraySize > 1 || mips > 1) ? D3D11_RTV_DIMENSION_TEXTURE2DARRAY : D3D11_RTV_DIMENSION_TEXTURE2D;
		rdesc.Texture2DArray.ArraySize = 1;
		rdesc.Texture2DArray.MipSlice = 0;
		rdesc.Texture2DArray.FirstArraySlice = 0;
		THROW_IF_FAILED(device->CreateRenderTargetView(texture, &rdesc, &rtv_));

		// アンオーダードアクセスビューを生成
		if (unorderedAccess) {
			D3D11_UNORDERED_ACCESS_VIEW_DESC uavDesc;
			if (isArray) {
				uavDesc.Texture2DArray.ArraySize = arraySize;
				uavDesc.Texture2DArray.FirstArraySlice = 0;
				uavDesc.Texture2DArray.MipSlice = 0;
				uavDesc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2DARRAY;
			} else {
				uavDesc.Texture2D.MipSlice = 0;
				uavDesc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2D;
			}
			uavDesc.Format = dxgiFormat;
			THROW_IF_FAILED(GraphicsCore::GetDevice()->CreateUnorderedAccessView(resource_, &uavDesc, &uav_));
		}
	}