-There was a precision problem with timestamp calculation, all math was using
integers which are not very precise in overflow scenarios
-Change the logic to use doubles and cast back to uint64_t at the end.
Change-Id: Ia08d504a90a43df7330f398af966535ed944650d
remove not needed global variable from mock device and refactor gmm
context initialization for ULTs
Change-Id: I594938a7df7dfaaf7a3cf73f8a13ad85a7b58401
- 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
-If out of order flag was disabled then pipe control was not having dc flush.
-This could led to a batch buffer that doesn't end with dc flush.
-This change adds differentiation between pipe controls that may be erased and
pipe controls that are used as a part of epilogue command
Change-Id: Ic9c970c75c89ff524a0e40506eff6dd097760145
RT must override engineType at DeviceFactory, since Wddm CSR uses HardwareInfo
at its ctor.
AUB tests must override engineType at Device ctor since they bypass
DeviceFactory.
Change-Id: I73e4066e9b16aed0410fe39a82726d3baea2e67f
because of deffered deletion some variables are dereferenced after
leaving test scope. this causes invalid stack memory accesses reported
by GCC 7.
Change-Id: I183be8ec3c815a41a75a1f71635d9afb560c7457
- 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
-Do not flush dc for every command in batched mode
-Do that only in immediate mode
-For commands that needs DC do not noop pipe controls
-Ensure that each command buffer in batching mode ends with dc flush.
Change-Id: I3cd9d1831c19b69c66092687922f20df7e330245
AUB tests do not use DeviceFactory class to create Device objects but still
need to have a functionality to override default engine type
Change-Id: I6841cb0a9c5726ac4308c742c78cf7a61829f168
-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
- account for initial setting (when set mode was equal to initial(Disabled))
estimate size in cmdStreamCS, program MMIO
Change-Id: Ice218ae986583c8f3bab4f4f6979e38f03e30d7e
mapGPUVA will fail when allocation is still in deferred deleter and using
the same base pointer to map, while there is no reserveGPUVA for SVM range.
In that case driver should drain deleter and retry mapGPUVA call
Change-Id: I4ded7d79e0cd935ec62d7fae785d66570c847535
- 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
- Tag should be updated only as a part of epilogue.
- Level change should only emit pipe control with cs stall
Change-Id: I6e04f794641818b0d046523776d3ce87aec9f606
This commit adds support for Debug Assistance Functionality (DAF)
aka "Driver Aubcapture" to debug builds on Windows.
Change-Id: I7e859d32af17a6fcee23868392df6cd1390e4afd
- Fix a data race where setting flush stamp with default value was
setting the flushtamp to initialized state
Change-Id: Ifc6bdd341b5fe2f2cf4e28bbff271b9a90915db5
-Do not inc/dec reference count for flush stamps while used only for
update
-FlushStamp doesn't need to be atomic,replace with atomic bool flag
to prevent usage while uniinitialized
-Clean not needed private new
Change-Id: Idad2b318f988de1e7af7642047c67f931e9772aa
- 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
- 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
- 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
For the new Linux/Fedora configuration with introduction of gcc 7.2,
compilation of this file issues a new warning due to the correct
diagnosis of an ambiguous 'else'. As warnings are being treated as
errors, this aborts the build.
The diagnostic:
vpg-compute-neo/unit_tests/elflib/elflib_tests.cpp:123:12:
error: suggest explicit braces to avoid ambiguous 'else'
[-Werror=dangling-else]
if (nonfailingAllocation == failureIndex)
^
Diagnosis: The diagnostic suggested that this:
if (nonfailingAllocation == failureIndex)
ASSERT_NE(nullptr, pWriter);
should be changed to:
if (nonfailingAllocation == failureIndex) {
ASSERT_NE(nullptr, pWriter);
}
This is a valid suggestion. The same is true for EXPECT_EQ.
Pick the files in repository
ssh://gerrit-gfx.intel.com:29418/mirrors/github/google/googletest
for tracing the definition. (There are many versions of gtest.h under
the ufo tree).
Starting in file include/gtest/gtest.h, the definition of ASSERT_NE can
be traced back towards its origin as follows:
ASSERT_NE include/gtest/gtest.h
GTEST_ASSERT_NE include/gtest/gtest.h
ASSERT_PRED_FORMAT2 include/gtest/gtest_pred_impl.h
GTEST_PRED_FORMAT2_ include/gtest/gtest_pred_impl.h
GTEST_ASSERT_ include/gtest/gtest_pred_impl.h
where GTEST_ASSERT_ indeed *should* be enclosed in braces.
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (const ::testing::AssertionResult gtest_ar = (expression)) \
; \
else \
on_failure(gtest_ar.failure_message())
The correct fix would be to place the braces in the macro definition.
However, as file gtest.h comes from Google, and as there are 37
different versions of it in the source tree, this workaround will
address the macro invocations. Should it be desirable, it is left
to others to correct gtest.h and friends.
Change-Id: I870d38ba623fc7564f894c7b1ea7512b74244ee2
Signed-off-by: Dale Stimson <dale.b.stimson@intel.com>
- In case of mismatched access qualifiers it would return
CL_INVALID_KERNEL_ARGS. This is not correct, CL_INVALID_ARG_VALUE
should be returned instead.
Change-Id: I0dc929e22269b4e34e347502c6cc4067e67ba165
- fix deletion of constant program surface
- fix deletion of global program surface
- move program_data tests to shared code
- make program_data tests SKU agnostic
Change-Id: Icf3e9fd035416072699336c4f86e49703ef48cc5
This commit moves the allocation's aubfile write permission property
from OS agnostic MemoryAllocation to general GraphicsAllocation class.
Change-Id: I82ca2716d6b65d314460bd9f5d33e1113f9d7c07
- Dont program clear color aux params for multisampled images (depth or MCS)
- Mock Gmm PageTable manager default actions
- Local Wddm for WddmCsr tests to make expects on creation
- Set Gmm PageTable manager for Wddm Memory Manager tests without WddmCsr
Change-Id: I8ccfddb06340bc81184e07eff5a7078756d28571
- Program one PS with gpgpu selection and media sampler
- Program PS only when media sampler requirement changed
or when preamble was not sent
Change-Id: I85ba3f74087733e79d048e120aeb8b4b04796e00
Fixing InterfaceDescriptor programming for
blocked commands when MidThread preemption is
enabled
Additionally, fixing couple of tests that block
global preemption enabling in ULTs
Change-Id: I454c9608f8606f23d7446785ac24c7c7d8701ae0
This commit changes the default dispatch mode for AUB CSR
from the immediate dispatch to the batched dispatch mode.
Change-Id: Idca914475a9a38788fd94e16eb6db4c0afb1bdd6
- It should use thread count not EU count.
- change variable name to reflect that we work on sublices.
- fix test description, add missing test
- change hasBarrier variable to be boolean
Change-Id: I627bdf17b661d2f9b5eb3d8cd6ca53eba5d46b81
- Call waitForTaskCountAndCleanAllocationList with latest flushed task count
to reflect what was actually sent to HW.
- refactor cleanAllocationList to waitForTaskCountAndCleanAllocationList
Change-Id: I5301185c5fce212e39eb017b952b43c279559cf4
This commit as aimed to add support for batched dispatch,
but doesn't make it the default mode for AubCSR yet.
Change-Id: I4dc366ec5f01adf2c4793009da2100ba0230c60a
- Uses GTest option --gtest_filter=<pattern> to define tests
that should not be executed.
- This allows making experiments with tests as prototyping, debugging etc.
Change-Id: Iabcd06dc1311a2edb0ad67564c542fec3a9b2e98
- Fix SUPPORT_X and TESTS_X flags in cmake
Previously it was possible to enable TESTS_X with disabled SUPPORT_X
- Remove genX dirs from include paths
Change-Id: I70aa6ee4df6cc1ca641cce2e99b66f92f99fd4e1
- Prevents destruction of MemObj while it may still be in use.
- Add UNRECOVERABLE to check whether object is deleted while having
dependencies, fix all problems is tests due to that fact.
- Fix special queue setting, clean interfaces.
Change-Id: I2a467e80df00ea1650decdcfa6866acf10b441f8
- When command queue is blocked, all heaps are being stored in temporary
allocations, command buffers are being pre-programmed, heaps are being set
on those temporary allocations with the assumption that all heaps start with
offset 0.
- Problem was when the actual submissions happened, all those temporary heaps
were just copied to appended command queue heaps, so when something was there
then new stuff was copied right after it. It means that all state was
incorrect as the offsets are not valid anymore and will point to wrong
location.
- This change releases command queue heaps when blocked command is being
submitted to make sure they will be programmed with the proper offset in newly
allocate command queue heap.
Change-Id: I3e30be13caf4df8621ddb18f8448ffaf0f1278d1
- due to the fact that device mutex was obtained to prevent threaded access to
image there was a problem when other thread was also doing readImage call
That thread got read Image kernel mutex first and then it was acquiring device
mutex, which was taken by other thread doing mapImage call.
- In current code device mutex is not taken to service mapImage call, instead
image is being guarded by its own mutex.
Change-Id: Ic4c5a019708d7ec5b240bc5b08c5a65173827392
- clSVMAlloc allocates 64KB pages as memory storage for both
fine grain and coarse grain allocation
Change-Id: I2068ffb9f5577761f739df47b54bc382e971949c
We shouldn't test using huge amount of memory. Execution environment may
have less memory. it also increases memory pressure and overall system
load during parallel ULT execution.
Let's cap max to currently used maximum and then we can refactor tests
to use less.
Change-Id: I869f77d59344faef5399896727f1b0381932bde0
- Fix tests that were triggering the UNRECOVERABLE scenario
- Change UNRECOVERABLE to DEBUG_BREAK in some places
Change-Id: I479baac4941b485af9ea81a61a1a03d2f3f42e6a
- This causes event tree update if virtual event is holding commands or
callbacks
- That causes race between other threads that may be updating the tree
Change-Id: Ic80a8b71ed1e1c1deab8af1bc64f8ce81c21de1b