Commit Graph

327 Commits

Author SHA1 Message Date
Mrozek, Michal
7f3c4d3d70 [22/n] Internal 4GB allocator.
- Finalize Instruction Heap removal.

Change-Id: Idd7df94a228238a5157c3251180fc3c8d3a189df
2018-03-29 08:17:32 +02:00
Mrozek, Michal
2be5934096 [21/n] Remove Instruction Heap from enqueue path.
- This removes Instruction Heap allocation from enqueue path
- Blocked path is handled as well
- Heap is no longer allocated on demand it is bind to kernelInfo.

Change-Id: I54545beceed3404ee0330a8bac2b0934944cac30
2018-03-28 20:15:55 +02:00
Mrozek, Michal
9bdf01468e [20/n] Internal 4GB allocator.
- Switch to internal heap for kernel ISA allocations.
- remove IH from various functions
- remove IHState from CSR , IH is never dirty
- ISA is no longer copied on enqueue calls.

Change-Id: I0099cf2a9ebab6192ea03a74dd35f7da963fd5a5
2018-03-28 16:07:26 +02:00
Milczarek, Slawomir
a02c3cb781 KM DAF AubCapture to recapture fill pattern allocations
The commit introduces a recapture of fill pattern allocations on every submit.

Change-Id: I634af075348dbc59c7809f58b8495326cab804e1
2018-03-27 16:38:41 +02:00
Mrozek, Michal
09923fcb39 [17/n] Internal 4GB allocator.
- Make sure that blocks ISA is made resident
- both blocked & non blocked path
- fix a bug where private surface was not made resident in blocked path.

Change-Id: Ie564595b176b94ecc7c79d7efeae20598c5874fb
2018-03-27 10:33:22 +02:00
Milczarek, Slawomir
32825e203e KM DAF AubCapture to recapture command streams and heap allocations
This commit introduces a recapture of CS and Heap resources on every submit.

Change-Id: I2a5a763e8988de804da1a6c2c8042154b0786b2e
2018-03-26 18:27:20 +02:00
Hoppe, Mateusz
7f32eb06d1 Kernel Source Level debugger support 4/n
- adding DebugSurface allocation and setup
- unit tests refactors:
  - mock kernel with kernel debug option
  - separating fixtures to headers
  - added helper for getting internal-options kernels
    filenames

Change-Id: I7b6f4d46e2ab7cff0da8d5212483f44ae0d4be31
2018-03-26 15:02:42 +02:00
Mateusz Jablonski
575d1bf381 Cmake refactor part 20
set global properties with runtime sources, libult sources and
os interface tests

Change-Id: I9a84edf2f021b4581a16c19c7dbb0b2f94c33f4d
2018-03-23 15:51:12 +01:00
Pawel Wilma
ff1d2361f3 Add patch info comments to AUB dump
Collect patching information and add as comments to AUB dump.

Change-Id: Ib7c903a2589d68b6e3e614c1774c7cd5a000c29f
2018-03-23 13:08:54 +01:00
Mrozek, Michal
d7fe01454b Make sure that gtpin callbacks are not executed in enqueue path.
-This is to make sure those functions are not called when gtpin is not used
-This preserves CPU instruction cache pollution.
-Our enqueue path needs to be as thin as possible, even with this small change
there is visible gain in ULT execution time.

Change-Id: I44cc2144754cda95ca1fe058184cd8a151b8d35c
2018-03-23 12:54:17 +01:00
Dunajski, Bartosz
516082e7c5 Kmd notify improvements [1/n]: Quick KMD sleep optimization
- KmdNotifyProperties struct for CapabilityTable that can be extended by
  incoming KmdNotify related optimizations
- Quick KMD sleep optimization that is called from async events handler
- Optimization makes a taskCount check in busy loop with much smaller
  delay than basic version of KMD Notify optimization

Change-Id: I60c851c59895f0cf9de1e1f21e755a8b4c2fe900
2018-03-21 20:41:33 +01:00
Woloszyn, Wojciech
ce2f1468b7 Implement cl_khr_mipmap_image [2/n]
- Add mipmap handling for clEnqueueCopyImage
- Add mipmap handling for clEnqueueCopyImageToBuffer
- Add mipmap handling for clEnqueueCopyBufferToImage
- Fix typos

Change-Id: Ie1a23b1699135afa17fe11bcba3c1e8bdf9a3dd9
2018-03-21 17:04:12 +01:00
Woloszyn, Wojciech
0ad81024b7 Implement cl_khr_mipmap_image [1/n]
- Add mipmap image handling for clEnqueueReadImage, clEnqueueWriteImage
- Fix mipmap image handling for clCreateImage

Change-Id: I42938a330b55c7e69a16c26dce3ab5d66f8a8938
2018-03-21 10:51:13 +01:00
Dunajski, Bartosz
94033a1c51 Update FlushStamp for output Event on CPU data transfer operations
- Previously only taskCount was updated
- This improves KMD notify usage for Events handled asynchronously

Change-Id: I283982890579254033557de0e1cef2239c0035e2
2018-03-20 15:29:35 +01:00
Mrozek, Michal
7644209288 Add debug flag to dump dispatch parameters.
- Also refactor debug manager tests , they now check for default value
in igdrcl.config file
- There is no need to write dedicated tests now , so I remove them.

Change-Id: Ib338ca05b6059302c29469c673239e7886dc4b9b
2018-03-16 11:13:35 +01:00
Hoppe, Mateusz
a1a20a3b34 Service read only memory passed as host_ptr
- read only memory cannot be used for allocation,
Oses cannot create graphics alocation for such memory
- if memory allocation fails for host_ptr passed
to enqueueWrite calls, then try doing new allocation
and copy host_ptr on cpu

Change-Id: I415a4673ae1319ea8f77e53bd8fba7489fe85218
2018-03-14 13:16:36 +01:00
Mateusz Jablonski
c6441eba9b Cmake refactor part 10
Cleanup cmake files in runtime dir
Add missing files to solution

Change-Id: I5d0cf8b658039f7bdf21681ac6e3750a5699d311
2018-03-08 15:35:25 +01:00
Mrozek, Michal
1602fa5a88 [7/n] Internal 4GB allocator
- rename getBase to getCpuBase
- change some test names accordingly.

Change-Id: I6fb2e4714298250147ea7766a916d7f5d62edc54
2018-03-05 22:16:14 +01:00
Dunajski, Bartosz
1fce275542 Remove forced DC flush and disabled out of order execution for shared objects
Change-Id: I0de86c3d5af488a347e83858f5dddbac2ef53c17
2018-03-05 09:45:18 +01:00
Zdanowicz, Zbigniew
533afe472a Program preemption mode in Interface Descriptor Data
Change-Id: I7fce731d71dd0b6dc8505ebfe45d24c65898a08b
2018-03-05 09:36:53 +01:00
Mateusz Jablonski
d1aa5f978d Cmake refactor part 6
Add macro to add all subdirectories
Add macro to create project source tree based on target sources
Small cleanup runtime/CMakeLists.txt

Change-Id: I9b99145c544f648c4c3fe7421752d0c5d9504edf
2018-03-02 00:39:41 +01:00
Mrozek, Michal
3da9df23a9 Flush DC in case shared objects are used.
- Due to use cases where one shared buffer may be mapped to multiple CL
buffers we need to flush DC between enqueues.

Change-Id: I05d7f844afe31d52a0004f5e2e5efa776f9dadbe
2018-02-26 15:51:06 +01:00
Mrozek, Michal
7255b17d6b Move register definition to common header file.
- It is not gen9 specific.
- Remove now obsolete header.

Change-Id: I03e7631c60e4263bcc52dca9f9df19fdba1ed702
2018-02-26 08:33:46 +01:00
Dunajski, Bartosz
dd44a87d5f Map/unmap enqueue fixes [6/n]: Support multiple map operations
- Dont make cpu/gpu writes on read-only unmap
- Read/Write on limited map range only
- Overlaps checks for non read-only maps
- Fixed cmd type on returned event

Change-Id: I98ca542e8d369d2426a87279f86cadb0bf3db299
2018-02-23 10:45:06 +01:00
Mrozek, Michal
0825c009cf Fix incorrect profiling handling.
- For context specific timestamps driver needs to use only low part

Change-Id: I579a68d8b3c1c4d5a8b40bf3a526963bea84fd11
2018-02-23 10:04:31 +01:00
Dunajski, Bartosz
b4f79e036f Map/unmap enqueue fixes [5/n]: Unify offset calculation
Change-Id: I53eafe89532d43c5cf5139ed3fac0a87619dc7a3
2018-02-21 20:12:52 +01:00
Dunajski, Bartosz
f6825252fc Map/unmap enqueue fixes [4/n]: Return slice/row pitch
When queue is blocked on non-blocking call, map operation is added to
waitlist dependencies. Returning slice/row pitch for map image was skipped

Change-Id: I46f97590315e7aee7fbbfbdb615f383cdb666307
2018-02-20 14:30:35 +01:00
Dunajski, Bartosz
1292c3d533 Improve thread arbitration policy programming
Change-Id: Ibd764352e14d1a5112034b1c5a1fc6d6d67ebac0
2018-02-20 11:05:54 +01:00
hjnapiat
5909a6b3d3 Add support for GT-Pin Callbacks [3/n]
Change-Id: Iea4b49efc9a666fde310ece15a9c69686d22f627
2018-02-19 10:43:19 +01:00
mplewka
e738e6aa48 Hint for map/unmap when queue is blocked
Change-Id: I8b2c79fac77325e26e2ead663177cef09b17e00b
2018-02-16 15:57:44 +01:00
Zdanowicz, Zbigniew
86bb715b95 HostPtr surface makeResident must be called once
Change-Id: I9cb04e3affdd8b8634466621b50326a088ecdcf9
2018-02-16 11:11:37 +01:00
Dunajski, Bartosz
e0ca78ccea Map/unmap enqueue fixes [3/n]: Map params inconsistency
- Introducing MapInfo struct which will be used as container for multiple
  map operations
- Unified mapped offset and size for Buffers and Images
- Fixed incorrect map params for CPU and GPU path
- Missing API level checks


Change-Id: Ib4077c9e2c0c333b131ffd5ccbc4a1404920eb5b
2018-02-16 08:28:29 +01:00
Artur Harasimiuk
a95e7c67a3 Instrumentation refactoring
- Tweak naming

Change-Id: I37e6a5c5553a4b0fb6d51891d193cae435f9abe6
2018-02-15 23:58:24 +01:00
Mrozek, Michal
2d0af9d4a4 Make sure that local workgroup size is properly passed for IOH estimation.
Change-Id: I0ad5da4fffd1575f64d44803ce8eb4a6a0ab1532
2018-02-15 07:57:39 +01:00
Zdanowicz, Zbigniew
45dedb37f3 For HostPtr surfaces of enqueue calls use GPU address
Change-Id: I67bf5076d23d43438f5e82c5cb6cbd3b9ed2f152
2018-02-14 15:44:27 +01:00
Dunajski, Bartosz
4f2a05ac88 Map/unmap enqueue fixes [2/n]: CPU operations on limited range
- Curently each non-zerocopy CPU operation on map/unmap make a full copy
  using hostPtr
- This commit adds functionality to select specific range of copy
- Multiple mapping with different size is not supported yet,
  so copy will be made on full range for now. This is for future usage.

Change-Id: I7652e85482ba6fffb2474169447baf9b080dcd1e
2018-02-13 16:29:01 +01:00
Mrozek, Michal
d563059c14 Remove redundant code from flushWaitList.
Change-Id: Iab4cb856ce324a785b052b8638ef23aef43c9bc9
2018-02-13 10:40:33 +01:00
Mrozek, Michal
b5dab07aa2 Do not allow out of order execution for shared objects.
Change-Id: I2dbbd8f09485bd894774eb2c4548326475a41221
2018-02-12 10:36:23 +01:00
Dunajski, Bartosz
72b78d15ee Map/unmap enqueue fixes [1/n]: Unify Buffer and Image paths
Change-Id: I59bf18072c15367ff6caec5dbdc1350ea2d93281
2018-02-09 17:35:03 +01:00
Mrozek, Michal
6bb83fb95a Do not noop pipe controls if call is returning event on IOQ.
-For in order queue application can have fine grain granularity of completion
-For out of order queue application wants to execute workloads concurrently
-This change disables pipe control nooping for ioq calls when event returned.

Change-Id: Iaeaf677f768f7434b2efa1842b50653ab80777ad
2018-02-09 11:57:44 +01:00
mplewka
4db1e3af6a Check zeroCopy flag for r/w images/buffers
Change-Id: I7047ae8458bdf3528d6014137522a37561d15ab6
2018-02-08 13:55:44 +01:00
Mateusz Jablonski
ea021f8d69 Cmake refactor part 1: fix dependencies with including os_inc.h
Remove some not needed includes

Change-Id: I158ad663ccfcec4822e3768df9d05090c5e096f9
2018-02-08 09:40:40 +01:00
Mrozek, Michal
d8f2142faa Enable out of order execution for all submissions.
- This change enabled multiple independent command queues to execute
concurrently without stalling pipe controls in between
- This change removes L3 flushes between kernels
- Dependencies between commands are resolved via task level mechanism
- Out of order queues are not changing task level between submissions
- In order queues are increasing task level between submissions
- Whenever task level changes there is pipe control with cs stall emitted
between GPGPU_WALKERs

Change-Id: I558653b296424e4775d060df3072e2a50684b715
2018-02-08 08:22:04 +01:00
mplewka
21c1dce943 Enable zero copy for enqueueImage r/w with hints
Change-Id: I6d4379b4bebaca162f859ea790f6a77475f7e94e
2018-02-06 19:00:15 +01:00
Zdunowski, Piotr
1cfe5344fc Enable throttle hints extension.
Change-Id: I996fce8dbc792d77dc85df143ba5c0aa1cad83e5
2018-02-06 17:01:37 +01:00
Mateusz Jablonski
b027a82442 Cmake refactor part 2:
Move defining runtime sources into cmake files in subdirectories

Change-Id: Ic83c12fee65e04d19e7c8e1f88b939f03af7fa28
2018-02-05 13:40:46 +00:00
Dunajski, Bartosz
844f956244 Remove redundant/recursive checks in unmap operations
- Some of the paths were made only for ULTs
- Params like mappedPtr were ignored
- Improve confusing method names
- Fix for memory leak in map shared buffer path (not tested code)

Change-Id: I8a69035f1d1c340f2d131a6f8d7e13116e3ddabc
2018-02-02 10:36:09 +01:00
Mrozek, Michal
e35a066f79 Change the instruction heap size to be at least 512KB.
- Instruction heap is currently heavily used as every kernel copies ISA into
 it.
- It dries out very fast and each change to new heap requires whole pipeline
drain that prevents concurrency
- Problem is even larger when sip kernel is used as it limits the total heap
size
- In order to maximize heap re-use and to limit the count of pipeline drains
this change introduces new minimal size for instruction heap 512 KB.

Change-Id: Ic54e9ef4448b1d35dab01b084ee1d59b509642cb
2018-02-01 13:10:39 +01:00
Mrozek, Michal
37c7e27276 Fix heap size programming.
- In various scenarios code was not programming the max heap size correctly
- It was possible for SSH to overcome the limit
- Size was programmed smaller then it really was, which resulted in smaller
reuse, which led to SBA reprogramming which led to lower performance in ooq
scenarios
- This change fixes the heap size programming by always utilizing full
allocation size and always limiting SSH at proper value

Change-Id: Ib703d2b0709ed8227a293def3a454bf1bb516dfd
2018-01-31 17:35:32 +01:00
mplewka
377fc8d20b Enable zero copy for enqueueReadBufferRect with hint
Change-Id: I4e7d89edfcff2674e7c163d70ad974d3464bf64f
2018-01-25 13:17:59 +01:00