[Intel-gfx] [PATCH] igt/gem_exec_parse: Add a MI_LOAD_REGISTER_REG test.
Kenneth Graunke
kenneth at whitecape.org
Fri May 6 02:50:33 UTC 2016
This stores a known value to a register, copies it using
MI_LOAD_REGISTER_REG, then stores from the second register back to
memory, and verifies the value. This ensures that MI_LOAD_REGISTER_REG
is allowed by the command parser, and actually takes effect.
Cc: Chris Wilson <chris at chris-wilson.co.uk>
Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
---
lib/intel_reg.h | 2 ++
tests/gem_exec_parse.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
This tests functionality I've proposed to merge in version 7 of the
command parser. The corresponding kernel patch is:
drm/i915: Allow MI_LOAD_REGISTER_REG between whitelisted registers.
I'm not sure if there's some procedure for marking tests as requiring
a particular version of the command parser, or what the ordering constraints
on merging kernel patches vs. tests are, so...please advise, or just go ahead
and take care of it :)
Thanks!
diff --git a/lib/intel_reg.h b/lib/intel_reg.h
index 0ffa803..36da4f3 100644
--- a/lib/intel_reg.h
+++ b/lib/intel_reg.h
@@ -2566,6 +2566,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define MI_LOAD_SCAN_LINES_INCL (0x12<<23)
#define MI_LOAD_REGISTER_IMM ((0x22 << 23) | 1)
+#define MI_LOAD_REGISTER_REG (0x2A<<23)
+#define MI_STORE_REGISTER_MEM (0x24<<23)
/* Flush */
#define MI_FLUSH (0x04<<23)
diff --git a/tests/gem_exec_parse.c b/tests/gem_exec_parse.c
index 261d45f..aa6c74a 100644
--- a/tests/gem_exec_parse.c
+++ b/tests/gem_exec_parse.c
@@ -470,6 +470,25 @@ igt_main
0x12000000);
}
+ igt_subtest("load_register_reg") {
+ uint32_t pc[] = {
+ MI_LOAD_REGISTER_IMM,
+ 0x2600, /* CS_GPR0 */
+ 0x31337000,
+ MI_LOAD_REGISTER_REG | (3 - 2),
+ 0x2600, /* CS_GPR0 */
+ 0x2608, /* CS_GPR1 */
+ MI_STORE_REGISTER_MEM | (3 - 2),
+ 0x2608,
+ 0, /* To be patched */
+ MI_BATCH_BUFFER_END,
+ };
+ exec_batch_patched(fd, handle,
+ pc, sizeof(pc),
+ 32, /* patch offset, */
+ 0x31337000);
+ }
+
igt_fixture {
gem_close(fd, handle);
--
2.8.2
More information about the Intel-gfx
mailing list