ওপেনজিএল, জিএলএক্স, ডিআরআই এবং মেসা 3 ডি এর মধ্যে সম্পর্ক কী?


17

আমি লিনাক্সে কিছু নিম্ন স্তরের 3 ডি প্রোগ্রামিং শুরু করছি। উচ্চ স্তরের গ্রাফিক্স এপিআই ওপেনআইভেঞ্জর ব্যবহার করে আমার অনেক অভিজ্ঞতা আছে।

আমি জানি যে এই সমস্ত জিনিস একসাথে খাপ খায় সে সম্পর্কে সচেতন হওয়া কড়া নয় তবে আমি কেবল কৌতূহলী। আমি জানি ওপেনজিএল গ্রাফিক্স অ্যাপ্লিকেশনগুলির জন্য কেবল একটি মান। Mesa3D এই মানকটির একটি মুক্ত উত্স বাস্তবায়ন বলে মনে হচ্ছে।

তাহলে জিএলএক্স এবং ডিআরআই কোথায় ফিট? উইকিপিডিয়া এবং এই সমস্ত ওয়েবসাইটের চারপাশে খনন করা, আমি এখনও এটি কীভাবে একসাথে চলে যায় তার একটি ব্যাখ্যা খুঁজে পাইনি। হার্ডওয়্যার ত্বরণ কোথায় ঘটে? মালিকানাধীন ড্রাইভারদের এর সাথে কী করতে হবে?

উত্তর:


15

ওপেনজিএল ব্যতীত আমি কখনই সেগুলি গ্রন্থাগার ব্যবহার করি নি, তবে আমি আপনার মতো উইকিপিডিয়া পৃষ্ঠাগুলি পড়ে অনুমান করার চেষ্টা করব।

তুমি মেসার ব্যাপারে ঠিক বলেছ। আমাদের কাছে অতিরিক্ত তথ্য এখানে রয়েছে:

"এক্স উইন্ডো সিস্টেমটি একটি কম্পিউটার সফ্টওয়্যার সিস্টেম এবং নেটওয়ার্ক প্রোটোকল যা নেটওয়াক কম্পিউটারগুলির জন্য ভিত্তি জিইউআই সরবরাহ করে It এটি একটি হার্ডওয়্যার বিমূর্ত স্তর তৈরি করে।"

"জিএলএক্স এক্স উইন্ডো সিস্টেমের দ্বারা সরবরাহিত উইন্ডোর মধ্যে ওপেনগিএল ব্যবহার করতে ইচ্ছুক প্রোগ্রামগুলিকে সক্ষম করে
G জিএলএক্সের তিনটি অংশ রয়েছে:
- ওপেনজিএল ফাংশন সরবরাহ করে এমন একটি এপিআই
- এক্স প্রোটোকলের একটি এক্সটেনশন, যা ক্লায়েন্টকে 3D প্রেরণ করতে দেয় রেন্ডারিং কমান্ড - এক্স সার্ভারের একটি এক্সটেনশান যা ক্লায়েন্টের কাছ থেকে রেন্ডারিং কমান্ডগুলি গ্রহণ করে এবং ইনস্টলড ওপেনএল লাইব্রেরিতে এগুলি প্রদান করে
যদি ক্লায়েন্ট এবং সার্ভার একই কম্পিউটারে চলমান থাকে এবং একটি ত্বরণী 3 ডি গ্রাফিক্স কার্ড পাওয়া যায় তবে পূর্বের দুটি উপাদানগুলি ডিআরআই দ্বারা বাইপাস করা। ক্লায়েন্ট প্রোগ্রামটি সরাসরি গ্রাফিক্স হার্ডওয়্যার অ্যাক্সেসের অনুমতি দেওয়া হয়। "

"ডাইরেক্ট রেন্ডারিং ইনফ্রাস্ট্রাকচার (ডিআরআই) এক্স উইন্ডো সিস্টেমে ব্যবহৃত একটি ইন্টারফেস যা এক্স সার্ভারের মাধ্যমে ডেটা পাস করার প্রয়োজন ছাড়াই ব্যবহারকারী অ্যাপ্লিকেশনগুলিকে ভিডিও হার্ডওয়্যার অ্যাক্সেস করতে দেয়।"

"ওপেন উদ্ভাবক হ'ল একটি সি ++ থ্রি গ্রাফিক্স এপিআই যা ওপেনগিএলের জন্য উচ্চতর প্রোগ্রামিংয়ের স্তর সরবরাহ করতে ডিজাইন করা হয়েছে"

জিনিসগুলি সহজ করে তুলতে, আসুন data সমস্ত API এর প্রত্যেকের এন্ট্রি এবং প্রস্থানকালে ঘটে যাওয়া ডেটা (এবং আদেশগুলি) এর সরলিকৃত প্রবাহটি কল্পনা করি। একেবারে শুরুতে আমাদের কাছে আপনার অ্যাপ্লিকেশন প্রোগ্রাম (সংকলিত কোড) রয়েছে যা আপনি আপনার কম্পিউটার থেকে চালাচ্ছেন। শেষে আমাদের চিত্রগুলি রয়েছে যা আপনার স্ক্রিনে প্রদর্শিত হয়।

বেশ কয়েকটি ক্ষেত্রে আমি এই প্রশ্নের উত্তরগুলিকে সংযত
রাখব : - আপনার কম্পিউটারে গ্রাফিক কার্ড (জিপিইউ), বা গ্রাফিক ফাংশনগুলি প্রক্রিয়াকরণের জন্য কেবল একটি সিপিইউ আছে?
-আপনার অ্যাপ্লিকেশনটি এক্স-উইন্ডো সিস্টেমের একটি উইন্ডোতে এম্বেড করা আছে?
-যদি আপনি এক্স উইন্ডো সিস্টেমটি ব্যবহার করেন, "কম্পিউটারের কম্পিউটারে বা নেটওয়ার্কের অন্য কোনও কম্পিউটারে" এক্স সার্ভার "চলছে?
আমি ধরে নিচ্ছি আপনার জিপিইউর জন্য ড্রাইভার রয়েছে এবং আপনার কাছে সফটওয়্যার রেন্ডারিংয়ের জন্য মেসা রয়েছে)।

প্রথম দৃশ্য: আপনি এক্স উইন্ডো সিস্টেমটি ব্যবহার না করেই ওপেনআইভেন্টর দিয়ে রচিত একটি গ্রাফিক অ্যাপ্লিকেশন চালনা করেন এবং আপনার গ্রাফিক কার্ড নেই। প্রোগ্রামের প্রবাহটি এর সাথে বেশ সমান হবে:

Your application
  ↓ (uses functions of)
OpenInventor
  ↓ (calls functions declared by)
OpenGL
  ↓ (redirects function calls to implementation defined by)
Mesa
  ↓ (implemented OpenGL functions to be run on the CPU)
[Probably] Operating System rendering API
  ↓
3D Images on your screen

এখানে যা ঘটে তাকে "সফটওয়্যার রেন্ডারিং" বলা হয়: গ্রাফিক্স কমান্ডটি কোনও গ্রাফিক হার্ডওয়্যার দ্বারা পরিচালিত হয় না, পরিবর্তে আপনার সাধারন সিপিইউ, সাধারণত প্রসেসর যা সফ্টওয়্যার চালায়।

দ্বিতীয় দৃশ্য: এখন কল্পনা করুন যে উপরের মতো একই শর্তের সাথে আপনার একটি গ্রাফিক কার্ড রয়েছে। প্রবাহটি আরও দেখতে লাগবে:

Your application
  ↓ (uses functions of)
OpenInventor
  ↓ (calls functions declared by)
OpenGL
  ↓ (redirects function calls to implementation defined by)
Proprietary Drivers
  ↓ (converts OpenGL commands to GPU commands)
Graphic Card
  ↓
3D Images on your screen

এখন যা ঘটে তাকে "হার্ডওয়ার ত্বরণ" বলা হয়, সাধারণত প্রথম দৃশ্যের চেয়ে দ্রুত faster

তৃতীয় দৃশ্য: এখন কয়েকটি উইকিপিডিয়া লাইনের উপর ভিত্তি করে এক্স উইন্ডো সিস্টেম প্রবাহ, বা কমপক্ষে আমি কীভাবে এটি মনে করি তা প্রবর্তন করি।
কিছুক্ষণের জন্য গ্রাফিক হার্ডওয়্যার এবং এপিআই সম্পর্কে ভুলে যাই। প্রবাহটি দেখতে এমন হওয়া উচিত:

Your application (X Window System sees it as an "X Client")
  ↓ (sends requests defined by the X Window System Core Protocol)
X Server
  ↓ (convert your request to graphic commands)
[Probably] Operating System rendering API
  ↓
Windows or 2D images on your screen

নোট করুন যে এক্স উইন্ডো সিস্টেমটি ব্যবহার করার সময়, আপনার স্ক্রিন এবং যে কম্পিউটার থেকে আপনি আপনার অ্যাপ্লিকেশনটি চালাচ্ছেন সেগুলি "সরাসরি" সংযুক্ত নাও হতে পারে, তবে একটি নেটওয়ার্কের মাধ্যমে সংযুক্ত হতে পারে।

চতুর্থ দৃশ্য: ধরুন আপনি পূর্বের উদাহরণ থেকে আপনার এক্স ক্লায়েন্ট অ্যাপ্লিকেশনটিতে অভিনব 3D গ্রাফিক রেন্ডারিং যুক্ত করতে চান। আমার কাছে মনে হচ্ছে এক্স উইন্ডো সিস্টেমটি মূলত এটি করতে সক্ষম নয়, বা কমপক্ষে একটি ওপেনগিএল এপিআই ফাংশনের সমতুল্য সম্পাদন করার জন্য অনেকগুলি সংশ্লেষিত কোডের প্রয়োজন হবে।
ভাগ্যক্রমে আপনি GLX ব্যবহার করে সিস্টেমে ওপেনএল কমান্ডগুলির সমর্থন যোগ করতে পারেন। আপনার এখন আছে:

Your application
  ↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
X Server with the GLX extension
  ↓ (convert your request to OpenGL commands)
OpenGL
  ↓ (redirects function calls to implementation defined by)
 ...

এখন আপনি প্রথম দৃশ্যে "ওপেনজিএল" এর পরে সেই শেষ তীরটিকে আবার সংযুক্ত করতে পারেন: আপনি আপনার স্ক্রিনে 3 ডি চিত্র পেতে পারেন!

অবশেষে আমি ডিআরআই সম্পর্কে যা বুঝি সে সম্পর্কে:
মেসাকে জিপিইউতে অ্যাক্সেসের অনুমতি দেওয়া হয়েছে বলে মনে হচ্ছে, যাতে এটি আমাদের প্রথম দৃশ্যের প্রবাহকে পরিবর্তিত করে:

...
  ↓
Mesa
  ↓ (forwards OpenGL commands)
DRI
  ↓ (converts OpenGL commands to GPU commands)
Graphic Card
  ↓
3D Images on your screen

এটির সার্ভার এবং ক্লায়েন্ট একই কম্পিউটারে রয়েছে এবং আপনার একটি জিপিইউ রয়েছে এই শর্ত দিয়ে জিএলএক্স ব্যবহার করার সময় প্রবাহটিকে শর্ট সার্কিট বলে মনে হয়। সেক্ষেত্রে আমাদের চতুর্থ দৃশ্যের গ্রাফটি সহজভাবে হয়ে উঠবে:

Your application
  ↓ (sends graphic requests defined by the "GLX extension to the X Protocol")
DRI
  ↓ ("catches" OpenGL commands and converts them to GPU commands)
Graphic Card
  ↓
3D Images on your screen

এটাই !
এখন মনে রাখবেন যে আমি ইউনিক্স পরিবেশে বিশেষজ্ঞ নই, তাই আমার সেরা পরামর্শটি হ'ল তারা কী করতে পারে তা সুনির্দিষ্টভাবে জানার জন্য সেই সমস্ত এপিআইয়ের ডকুমেন্টেশন অধ্যয়ন করা।
পূর্ববর্তী চার্টটিকে একটিতে একত্রিত করা বিষয়গুলি বুঝতে সহজতর হতে পারে। আমি এটি একটি অনুশীলন হিসাবে আপনাকে দিন!


1
এটি কেবলমাত্র কয়েকটি বাক্য থেকে ছাড়ের ভিত্তিতে একটি তত্ত্ব theory এটা সত্য নয়।
কাওয়াইএক্সএক্স

8

ওপেনজিএল প্ল্যাটফর্ম অজিনস্টিক; তার মানে ওপেনজিএল এপিআই প্ল্যাটফর্ম স্বতন্ত্র।

ওপেনজিএল রাজ্যগুলি এবং বাফারগুলি একটি বিমূর্ত বস্তু দ্বারা সংগ্রহ করা হয়, যাকে সাধারণত প্রসঙ্গ বলা হয়।

অন্তর্নিহিত প্ল্যাটফর্মের জন্য ওপেনএল প্রসঙ্গটি তৈরি করতে কিছু এপিআই সরবরাহ করার জন্য হোস্টিং প্ল্যাটফর্ম দায়বদ্ধ। উইন্ডোজে ডাব্লুজিএল * রুটিন রয়েছে (উইন্ডোজের জন্য জিএল), ইউনিক্সে রয়েছে গ্ল্যাক্স * রুটিন (এক্স এর জন্য জিএল)।

প্রকৃতপক্ষে জিএলএক্স একটি এপিআই ছাড়া আর কিছুই নয় যা অ্যাপ্লিকেশনকে ওপেনগিএল প্রসঙ্গ তৈরি করতে দেয়, যাতে ওপেনজিএল এপিআই ব্যবহার করতে পারে।

সাধারণ ডাব্লুজিএল / জিএলএক্স অপারেশনগুলি হ'ল একটি উইন্ডো তৈরি করা, অফ-স্ক্রিন বাফার তৈরি করা, ওপেন জিএল প্রসঙ্গটি কোনও থ্রেডে বর্তমান করা, ড্র বাফারগুলি অদলবদল করা ...

এর পরিবর্তে ডিআরআই হ'ল একটি কার্নেল স্তর যা এক্সগ্রাফিকের মাধ্যমে গ্রাফিক কার্ডের সাথে সরাসরি যোগাযোগের অনুমতি দেয়, প্রকৃতপক্ষে ওপেনএল রুটিন ব্যবহার করে অ্যাপ্লিকেশনটি গতিময় করে।


3

http://www.bitwiz.org.uk/s/how-dri-and-drm-work.html

ডাইরেক্ট রেন্ডারিং ইনফ্রাস্ট্রাকচার, যা ডিআরআই নামেও পরিচিত, এটি এক্স উইন্ডো সিস্টেমের অধীনে গ্রাফিক্স হার্ডওয়্যারকে নিরাপদ এবং দক্ষ পদ্ধতিতে সরাসরি অ্যাক্সেসের অনুমতি দেওয়ার জন্য একটি কাঠামো। এটিতে এক্স সার্ভারে, বেশ কয়েকটি ক্লায়েন্ট লাইব্রেরিতে এবং কার্নেলের (ডিআরএম, ডাইরেক্ট রেন্ডারিং ম্যানেজার) পরিবর্তন অন্তর্ভুক্ত রয়েছে। ডিআরআই-এর সবচেয়ে গুরুত্বপূর্ণ ব্যবহার হ'ল মেসার জন্য হার্ডওয়্যার ত্বরণ সরবরাহকারী দ্রুত ওপেনজিএল বাস্তবায়ন তৈরি করা। থ্রিডিএফএক্স, এএমডি (পূর্বে এটিআই), ইন্টেল এবং ম্যাট্রাক্স প্রযোজিত চিপসেটের ড্রাইভার সহ ডিআরআই স্পেসিফিকেশনে বেশ কয়েকটি থ্রিডি ত্বরিত ড্রাইভারকে লেখা হয়েছে।


2

এটিকে সহজভাবে বলতে গেলে ওপেনজিএল হ'ল গ্রাফিক্স লাইব্রেরির ধরণ এবং স্পেসিফিকেশন। মেসা একটি বেস অনুপ্রেরণা। ডিআরআই একটি হার্ডওয়্যার ইন্টারফেস সিস্টেম।

মেসা মূলত পুরো কাঠামোকে বোঝায়। তবে, আমি ধরে নেব আপনি মেসা হার্ডওয়্যার ড্রাইভারের কথা বলছেন।

ডিআরআই মূলত হার্ডওয়্যারটি পরিচালনা করার জন্য কার্নেল ইন্টারফেস। এটি প্রযুক্তিগতভাবে অন্যান্য জিনিসের জন্য ব্যবহার করা যেতে পারে তবে এটি মেসার জন্য তৈরি এবং মূলত মেসার জন্য ব্যবহৃত হয়।

জিএলএক্স এটি এক্স এর সমস্ত ইন্টারফেস কীভাবে !!

প্রতিটি অংশ কী তা বোঝার জন্য, আপনাকে এটি এক সাথে কীভাবে ফিট করে তা জানতে হবে।

কোনও প্রোগ্রাম কোনও ওপেনজিএল লাইব্রেরির সাথে ইন্টারফেস করার জন্য ডিজাইন করা হয়েছে।

জিএলএক্স এক্স 11 এর সাথে বা তার মাধ্যমে ওপেনলএলকে ইন্টারফেস করার একটি মাধ্যম। আপনার "ডাইরেক্ট" ইন্টারফেস বা "অপ্রত্যক্ষ" ইন্টারফেস রয়েছে কিনা তা নির্ভর করে আপনার প্রোগ্রামটি এটি নিয়ে চিন্তিত হবে কিনা।

libGL বেশ অনেকগুলি এইগুলির জন্য ইন্টারফেস। আপনি মেসা ড্রাইভার ব্যবহার করতে থাকলে এটি সাধারণত মেসার দ্বারা সরবরাহ করা হয়।

একটি পরোক্ষ সেটআপে এটি নিম্নলিখিত হিসাবে যায়: অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (যেমন হার্ড-লিখিত অ্যাপ্লিকেশন, ইঞ্জিন বা বিমূর্তি API) | লিবিজিএল | মেসা ড্রাইভার | ডিআরআই | হার্ডওয়্যারের

এই কনফিগারেশনে, আপনার প্রোগ্রামটির জিএল ব্যবহার এবং অন্যান্য প্রোগ্রামগুলির মধ্যে ইন্টারফেসিং পরিচালনা করার জন্য কেবলমাত্র জিএলএক্স ব্যবহার করা হয়েছে। এক্স 11 স্ট্যাকের জন্য যোগাযোগের প্রয়োজন হয় এমন জিএলএক্স নির্দিষ্ট কলগুলির ব্যতীত অন্যগুলি এবং এর সমর্থন প্রোগ্রামগুলি (যেমন উইন্ডো ম্যানেজার) জিএলএক্স মূলত অস্পৃশ্য। এই ব্যবস্থা।

তদুপরি, কমান্ড পাসথ্রু এবং ভাগ করা মেমরি এই সিস্টেমে স্তরগুলি আরও অনুকূলিত করতে ব্যবহৃত হতে পারে। এগুলি সমস্ত হার্ডওয়্যার অ্যাক্সেসের জন্য বিলম্বকে হ্রাস করে এবং গতির উন্নতি করে। এটি সাধারণত আপনি চান

অপ্রত্যক্ষের জন্য এটি আপনার অ্যাপ্লিকেশন ফ্রেমওয়ার্ক | LibGL (ব্যবহারকারীর পক্ষ) | লিবিজিএলএক্স | লিবিজিএল (এক্স 11 সাইড) | মেসা হার্ডওয়্যার ড্রাইভার | ডিআরআই | হার্ডওয়্যারের

এর সুবিধাটি হ'ল এই সেটআপটি ব্যবহার করার জন্য আপনার হার্ডওয়ারের সাথে সরাসরি ভাগ করা মেমরি বাফারের দরকার নেই। (নেটওয়ার্ক ক্লায়েন্টদের পাশাপাশি আরও দৃust়তা এবং আরও সুরক্ষিত সেটআপের অনুমতি দেওয়া))

এই সেটআপটি একক ভিডিও কার্ড ভাগ করে নেওয়া বা এমনকি কোনও নেটওয়ার্ক জুড়ে অ্যাক্সেস করার কারণে একাধিক ভিএম জুড়ে কাজ করতে পারে। নতুন এক্সটেনশনের কারণে ভাগ করা মেমোরি বা ভার্চুয়াল ভাগ করা "ক্লোনড" মেমরির কিছু ফর্ম ব্যবহার করা যেতে পারে, তবে এটি সরাসরি রেন্ডারিং মোডে পাওয়া সরাসরি ভিডিও মেমরি অ্যাক্সেস নয়।

অসুবিধাটি হ'ল এক্স 11 এর সাথে ইন্টারফেসের জন্য পাইপ বা নেটওয়ার্ক সকেটের ব্যবহার ধীর হতে পারে, খুব ভালভাবে অনুকূলিত প্রোগ্রামগুলির জন্য খুব কম সময়ে বিলম্বিতকরণগুলি প্রবর্তন করা যেতে পারে এবং সবচেয়ে খারাপভাবে, দুর্বলতমরূপে অনুকূলিতকরণগুলির উপর ফ্রেম-হারগুলি হ্রাস করতে পারে।

নেটওয়ার্ক ধরণের ক্লায়েন্ট, সেটআপগুলিকে আরও দৃust় সুরক্ষার প্রয়োজন হয় এমন সেটআপগুলি এবং একই জিএল স্ট্যাকের মাধ্যমে একাধিক অপারেটিং সিস্টেমের হার্ডওয়্যার ভাগ করে নেওয়া প্রয়োজন এমন সেটআপগুলির জন্য এই ধরণের সেটআপটি ভাল। এটি সর্বোত্তম থেকে অনেক দূরে তবে এটি আপনাকে কিছুটা হার্ডওয়্যার ত্বরণ দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.