MCPcopy Create free account
hub / github.com/defold/defold / opencl_create_context

Function opencl_create_context

engine/dlib/src/basis/encoder/basisu_opencl.cpp:804–874  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

802 };
803
804 opencl_context_ptr opencl_create_context()
805 {
806 if (!opencl_is_available())
807 {
808 ocl_error_printf("opencl_create_context: OpenCL not initialized\n");
809 assert(0);
810 return nullptr;
811 }
812
813 interval_timer tm;
814 tm.start();
815
816 opencl_context* pContext = static_cast<opencl_context * >(calloc(sizeof(opencl_context), 1));
817 if (!pContext)
818 return nullptr;
819
820 // To avoid driver bugs in some drivers - serialize this. Likely not necessary, we don't know.
821 // https://community.intel.com/t5/OpenCL-for-CPU/Bug-report-clCreateKernelsInProgram-is-not-thread-safe/td-p/1159771
822
823 pContext->m_command_queue = g_ocl.create_command_queue();
824 if (!pContext->m_command_queue)
825 {
826 ocl_error_printf("opencl_create_context: Failed creating OpenCL command queue!\n");
827 opencl_destroy_context(pContext);
828 return nullptr;
829 }
830
831 pContext->m_ocl_encode_etc1s_blocks_kernel = g_ocl.create_kernel("encode_etc1s_blocks");
832 if (!pContext->m_ocl_encode_etc1s_blocks_kernel)
833 {
834 ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel encode_etc1s_block\n");
835 opencl_destroy_context(pContext);
836 return nullptr;
837 }
838
839 pContext->m_ocl_refine_endpoint_clusterization_kernel = g_ocl.create_kernel("refine_endpoint_clusterization");
840 if (!pContext->m_ocl_refine_endpoint_clusterization_kernel)
841 {
842 ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel refine_endpoint_clusterization\n");
843 opencl_destroy_context(pContext);
844 return nullptr;
845 }
846
847 pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel = g_ocl.create_kernel("encode_etc1s_from_pixel_cluster");
848 if (!pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel)
849 {
850 ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel encode_etc1s_from_pixel_cluster\n");
851 opencl_destroy_context(pContext);
852 return nullptr;
853 }
854
855 pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel = g_ocl.create_kernel("find_optimal_selector_clusters_for_each_block");
856 if (!pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel)
857 {
858 ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel find_optimal_selector_clusters_for_each_block\n");
859 opencl_destroy_context(pContext);
860 return nullptr;
861 }

Callers 1

initMethod · 0.85

Calls 10

opencl_is_availableFunction · 0.85
ocl_error_printfFunction · 0.85
callocFunction · 0.85
opencl_destroy_contextFunction · 0.85
debug_printfFunction · 0.85
create_command_queueMethod · 0.80
create_kernelMethod · 0.80
get_elapsed_secsMethod · 0.80
assertFunction · 0.50
startMethod · 0.45

Tested by

no test coverage detected