Способ и система сохранения в памяти пиксельных данных, связанных с графическим объектом

Иллюстрации

Показать все

Изобретение относится к вычислительной технике. Технический результат заключается в сглаживании «пиксельного перепрыгивания» по частям линейной памяти в момент считывания пиксельных данных. Способ сохранения в памяти пиксельных данных, связанных с графическим объектом, отображаемым на устройстве вывода электронного устройства, пиксельные данные предназначены для отрисовки графического объекта, в котором: получают доступ к первой части разметки виртуальной памяти для получения пиксельных данных, связанных с множеством пикселей графического объекта, хранящегося в первой части разметки виртуальной памяти; идентифицируют в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразуют первый массив во второй массив, причем второй массив хранится во второй части разметки виртуальной памяти; получают запрос на создание дубликата по меньшей мере части графического объекта; идентифицируют соответствующие части второго массива, причем соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменяют идентифицированные соответствующие части для выполнения выбора подмножества из множества пикселей. 2 н. и 13 з.п. ф-лы, 7 ил.

Реферат

Область техники

[01] Настоящее техническое решение относится к системам и способам управления памятью и, конкретнее, к способу и системе сохранения в памяти пиксельных данных, связанных с графическим объектом.

Уровень техники

[02] Современные компьютеры обрабатывают огромное количество информации. Подобная обрабатываемая информация включает в себя графическую информацию, которая отображается на устройстве вывода компьютера. Подобная графическая информация может варьироваться от простого текста, фотографий, видео, до 3D игр и тому подобного. Существует ряд механизмов визуализации для отрисовки графической информации (например, объектов, которые будут отображаться на устройстве вывода и тому подобном). Например, библиотека визуализации графики на веб-страницах (или «WebGL») представляет собой JavaScript API для отрисовки интерактивной 3D и 2D компьютерной графики в веб-браузере без использования плагинов. WebGL обычно используется в мобильных играх, мобильных приложениях, видео проигрывателях, браузерах и тому подобном.

[03] WebGL позволяет модулю аппаратного обеспечения, например, видеокарте компьютера, отрисовывать графику. Основным достоинством архитектуры WebGL является тот факт, что аппаратная отрисовка графики обычно является более эффективной, чем программная отрисовка графической информации. Поскольку аппаратная отрисовка обычно обладает более высокой скоростью обработки, она, как правило, позволяет отрисовывать более сложную графику по сравнению с обычными способами программной отрисовки. Тем не менее, WebGL использует линейно организованную разметку памяти под пиксельные данные.

[04] В патенте США № US 6924811 описан способ сохранения текселей (texture element - текстурный элемент) в кэше текселей. Описанный способ включает в себя считывание координаты t текселя, которая включает в себя множество бит, считывание координаты s текселя, которая включает в себя множество бит, формирование смещения путем конкатенации бит координаты t с битами координаты s, и формирование индекса путем конкатенации бит координаты t с битами координаты s.

Раскрытие

[05] Настоящее техническое решение может уменьшить по меньшей мере некоторые недостатки, присущие текущему уровню техники, в отношении обработки поисковых запросов.

[06] Варианты осуществления настоящего технического решения были разработаны с учетом определения изобретателями по меньшей мере одного технического недостатка, связанного с известным уровнем техники. Описание WebGL обеспечивает максимум от 2048 до 16000 пикселей для каждой линейной части разметки виртуальной памяти. WebGL сохраняет пиксельные данные объекта в одномерном массиве. Если для данного объекта нет необходимости сохранять пиксельные данные размером больше 16000 пикселей, простейшим решением является создание второго линейного измерения для сохранения остальных пиксельных данных (далее, при необходимости, третьего и так далее). Аналогичные технические проблемы присутствуют в других случаях, например, при использовании OpenGL или DirectX.

[07] Не ограничиваясь каким-либо конкретным вариантом, разработчики приняли во внимание техническую проблему, которая проистекает из того факта, что каждая отдельная линейная часть разметки виртуальной памяти может быть записана в физической памяти, например, ячейки разметки виртуальной памяти, хранящие пиксели, которые будут последовательно отрисованы при отрисовке, могут быть размещены непоследовательно в разметке виртуальной памяти. Эта проблема усугубляется, когда компьютеру необходимо совершать действия над пиксельной информацией, связанной с объектом. Например, подобные действия могут потребоваться в том случае, когда компьютер изменяет визуальный параметр объекта. Например, подобное изменение параметра может быть процедурой Mip-текстурирования, которая использует последовательность структур, каждая из которых обладает последовательно снижающимся разрешением (например) объекта.

[08] В соответствии с подходом Mip-текстурирования, когда запрашивается отрисованный объект с более низким разрешением, Mip-текстурирование инициирует модуль WebGL «обрезать» конкретное число пикселей в конкретном порядке (например, каждый третий пиксель объекта) при считывании из разметки виртуальной памяти в порядке уменьшения качества и/или размера и/или разрешения последнего отрисованного изображения (или другого параметра отрисовки). При выполнении подобной обрезки пикселей, модуль WebGL считывает из разметки виртуальной памяти, можно сказать, что WebGL «перепрыгивает» по разным частям памяти (поскольку пиксельные данные расположены не последовательно в рядах разметки виртуальной памяти). Это «перепрыгивание» приводит к меньшей производительности и менее эффективному использованию памяти модуля WebGL (например, видеокарты), а также компьютера в целом.

[09] Настоящее решение нацелено на решение заявленных технических проблем. Варианты осуществления настоящего технического решения описывают способ сохранения в памяти (например, на видеокарте) пиксельных данных компьютерного объекта, пиксельные данные компьютерного объекта превышают 16000 пикселей, поэтому может быть использован по меньшей мере один из: сервисов на основе WebGL, OpenGL или DirectX.

[10] В широком смысле, варианты осуществления настоящего технического решения используют алгоритм пространственного заполнения (Z-код, код Гильберта и аналогичные алгоритмы). Эти алгоритмы широко известны и используются в многомерном пространстве для линейного (одномерного) преобразования. Описанное выше решение описывает процесс организации (преобразования) «линейного» разметки памяти в многомерную память с помощью алгоритмов заполнения пространства, которые, в определенном смысле, применяются в обратную сторону.

[11] Для сглаживания технических эффектов «пиксельного перепрыгивания» по частям линейной памяти в момент считывания пиксельных данных, описанные способы преобразовывают разметку виртуальной памяти в многомерное (или «непрерывное») пространство (в двумерную матрицу объектов памяти). В двухмерной матрице каждые два пикселя, которые отрисовываются последовательно при отрисовке устройством вывода компьютера, также располагаются в последовательных ячейках двухмерной матрицы.

[12] Отдельный технический эффект относится по меньшей мере к некоторым вариантам технического решения, является быстрое считывание из разметки памяти тех частей памяти, которые представляют соседние элементы (т.е. последовательно отрисованные пиксели) исходного объекта (кривой).

[13] Первым объектом настоящего технического решения является способ сохранения информации о пиксельных данных в памяти. Пиксельные данные связаны с графическим объектом, который отображается на устройстве вывода электронного устройства, пиксельные данные отрисовываются в графическом объекте. Способ выполняется электронным устройством. Способ включает в себя: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.

[14] В некоторых вариантах осуществления способ выполняется программным модулем электронного устройства, модуль электронного устройства управляет памятью.

[15] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда включает в себя применение алгоритма на основе заполняющей пространство кривой, алгоритм на основе заполняющей пространство кривой предназначен для определения по меньшей мере одного из порядка записи и считывания множества ячеек в первом ряду.

[16] В некоторых вариантах осуществления способа, алгоритм на основе заполняющей пространство кривой представляет собой одно из: алгоритм Z-кода и алгоритм кривой Гилберта.

[17] В некоторых вариантах осуществления способа, идентификация соответствующих частей второго массива включает в себя считывание рядов массива в порядке считывания, который следует заранее определенному сдвигу.

[18] В некоторых вариантах осуществления способа, изменение идентифицированных соответствующих частей включает в себя выполнение алгоритма изменения графического объекта.

[19] В некоторых вариантах осуществления способа, алгоритм изменения графического объекта представляет собой один из: алгоритм MIP-текстурирования, алгоритм анти-алиасинга, алгоритм анизотропной фильтрации, улучшенное MIP-текстурирование с алгоритмом анизотропной фильтрации и алгоритм пирамидальной обработки изображений.

[20] В некоторых вариантах осуществления способ дополнительно включает в себя отрисовку дубликата на устройстве вывода.

[21] В некоторых вариантах осуществления способа, отрисовка включает в себя выполнение по меньшей мере одного из WebGL, OpenGL и DirectX.

[22] В некоторых вариантах осуществления способа, заранее определенное число пикселей определяется заранее с помощью по меньшей мере одного из WebGL, OpenGL и DirectX.

[23] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти предназначены для управления памятью электронного устройства.

[24] В некоторых вариантах осуществления способа, память представляет собой видеокарту.

[25] В некоторых вариантах осуществления способа, первая разметка виртуальной памяти и вторая разметка виртуальной памяти хранятся в другом устройстве памяти, отдельном от видеокарты.

[26] В некоторых вариантах осуществления способа, реорганизация первого ряда и второго ряда во втором массиве позволяет осуществлять логически-последовательное считывание пиксельных данных без пиксельного «перепрыгивания».

[27] Другим объектом настоящего технического решения является компьютерная система. Компьютерная система включает в себя: процессор; память, соединенную с процессором; устройство вывода, соединенное с процессором; модуль отрисовки, соединенный с процессором, устройством вывода и памятью, модуль отрисовки поддерживает разметку виртуальной памяти; модуль отрисовки выполнен с возможностью получать информацию о пиксельных данных из памяти, пиксельные данные, связанные с графическим объектом, отображаются на устройстве вывода, пиксельные данные предназначены для обработки графического объекта; процессор выполняет один или несколько программных модулей, данный один из одного или нескольких программных модулей выполнен с возможностью осуществлять: получение доступа к первой части разметки виртуальной памяти для получения пиксельных данных, связанных со множеством пикселей графического объекта, которые хранятся в первой части разметки виртуальной памяти, множество пикселей включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель расположены как последовательно-отрисовываемые при отображении графического объекта на устройстве вывода; первая часть разметки виртуальной памяти организована в первом массиве с заранее определенным числом пикселей, которые организованы в одном ряду из множества рядов, которые формируют первый массив, организация множества рядов в первом массиве не учитывается для последовательно-отрисовываемой связи первого пикселя и второго пикселя; идентификацию в первом ряду, окончания первого ряда и начала второго ряда таким образом, что окончание первого ряда включает в себя первый пиксель, а начало второго ряда включает в себя второй пиксель; преобразование первого массива во второй массив, второй массив сохраняется во второй части разметки виртуальной памяти, преобразование включает в себя: реорганизацию первого ряда и второго ряда во втором массиве таким образом, чтобы две ячейки первого ряда и второго ряда включали в себя, соответственно, два последовательно-отрисовываемых пикселя, которые расположены на заранее определенном сдвиге друг от друга, заранее определенный сдвиг представляет собой одно из: (i) сдвиг позиции на один ряд и (ii) сдвиг позиции на один столбец; две любых ячейки являются любыми двумя ячейками, отличными от начала первого ряда и окончания второго ряда; получение запроса на создание дубликата по меньшей мере части графического объекта, дубликат обладает по меньшей мере одним параметром отрисовки, который отличается от параметра графического объекта, создание дубликата выполняется путем выбора подмножества из множества пикселей, подмножество из множества пикселей включает в себя третий пиксель и четвертый пиксель, которые являются непоследовательно-отрисовываемыми пикселями; идентификацию соответствующих частей второго массива, соответствующие части являются рядами, на которых расположены третий и четвертый пиксели; и изменение идентифицированных соответствующих частей для выполнения выбора подмножества из множества пикселей.

[28] В контексте настоящего описания, если четко не указано иное, "электронное устройство", "пользовательское устройство", "сервер", "удаленный сервер" и "компьютерная система" подразумевают под собой аппаратное и/или системное обеспечение, подходящее к решению соответствующей задачи. Таким образом, некоторые неограничивающие примеры аппаратного и/или программного обеспечения включают в себя компьютеры (серверы, настольные компьютеры, ноутбуки, нетбуки и так далее), смартфоны, планшеты, сетевое оборудование (маршрутизаторы, коммутаторы, шлюзы и так далее) и/или их комбинацию.

[29] В контексте настоящего описания, если четко не указано иное, "машиночитаемый носитель" и "память" подразумевает под собой носитель абсолютно любого типа и характера, не ограничивающие примеры включают в себя ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB-ключи, флеш-карты, твердотельные накопители и накопители на магнитной ленте.

[30] В контексте настоящего описания, если четко не указано иное, «указание» информационного элемента может представлять собой сам информационный элемент или указатель, отсылку, ссылку или другой косвенный способ, позволяющий получателю указания найти сеть, память, базу данных или другой машиночитаемый носитель, из которого может быть извлечен информационный элемент. Например, указание на файл может включать в себя сам файл (т.е. его содержимое), или же оно может являться уникальным дескриптором файла, идентифицирующим файл по отношению к конкретной файловой системе, или каким-то другими средствами передавать получателю указание на сетевую папку, адрес памяти, таблицу в базе данных или другое место, в котором можно получить доступ к файлу. Как будет понятно специалистам в данной области техники, степень точности, необходимая для такого указания, зависит от степени первичного понимания того, как должна быть интерпретирована информация, которой обмениваются получатель и отправитель указателя. Например, если до установления связи между отправителем и получателем понятно, что признак информационного элемента принимает вид ключа базы данных для записи в конкретной таблице заранее установленной базы данных, содержащей информационный элемент, то передача ключа базы данных - это все, что необходимо для эффективной передачи информационного элемента получателю, несмотря на то, что сам по себе информационный элемент не передавался между отправителем и получателем указания.

[31] В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной взаимосвязи между этими существительными. Так, например, следует иметь в виду, что использование терминов «первый сервер» и «третий сервер» не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) серверов/между серверами, равно как и их использование (само по себе) не предполагает, что некий "второй сервер" обязательно должен существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание «первого» элемента и «второго» элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, «первый» сервер и «второй» сервер могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.

[32] Каждый вариант осуществления настоящего технического решения преследует по меньшей мере одну из вышеупомянутых целей и/или объектов. Следует иметь в виду, что некоторые объекты данной технического решения, полученные в результате попыток достичь вышеупомянутой цели могут удовлетворять и другим целям, отдельно не указанным здесь.

[33] Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящего технического решения станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.

Краткое описание чертежей

[34] Для лучшего понимания настоящего технического решения, а также других его аспектов и характерных черт сделана ссылка на следующее описание, которое должно использоваться в сочетании с прилагаемыми чертежами, где:

[35] На Фиг. 1 представлена диаграмма компьютерной системы, которая подходит для реализации вариантов настоящего технического решения, и/или которая используется в сочетании с вариантами осуществления настоящего технического решения.

[36] На Фиг. 2 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с первым неограничивающим вариантом осуществления настоящего технического решения.

[37] На Фиг. 3 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии со вторым неограничивающим вариантом осуществления настоящего технического решения.

[38] На Фиг. 4 представлена принципиальная схема разметки виртуальной памяти, которая поддерживается компьютерной системой, показанной на Фиг. 1, разметка виртуальной памяти реализована в соответствии с третьим неограничивающим вариантом осуществления настоящего технического решения.

[39] На Фиг. 5 представлена блок-схема способа сохранения в памяти пиксельных данных, связанных с графическим объектом, который будет отрисован, способ выполняется компьютером из компьютерной системы, показанной на Фиг. 1, способ исполняется в соответствии с неограничивающими вариантами осуществления настоящего технического решения.

[40] На Фиг. 6 представлена блок-схема способа сохранения пиксельных данных, способ выполняется компьютерной системой, показанной на Фиг. 1.

[41] На Фиг 7 представлена принципиальная схема графического объекта, который может быть отрисован на устройстве вывода компьютерной системы, показанной на Фиг. 1.

[42] Также следует отметить, что чертежи выполнены не в масштабе, если не специально указано иное.

Осуществление

[43] Все примеры и используемые здесь условные конструкции предназначены, главным образом, для того, чтобы помочь читателю понять принципы настоящего технического решения, а не для установления границ его объема. Следует также отметить, что специалисты в данной области техники могут разработать различные схемы, отдельно не описанные и не показанные здесь, но которые, тем не менее, воплощают собой принципы настоящего технического решения и находятся в границах его объема.

[44] Кроме того, для ясности в понимании, следующее описание касается достаточно упрощенных вариантов осуществления настоящего технического решения. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящего технического решения будут обладать гораздо большей сложностью.

[45] Некоторые полезные примеры модификаций настоящего технического решения также могут быть охвачены нижеследующим описанием. Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящего технического решения. Эти модификации не представляют собой исчерпывающего списка, и специалисты в данной области техники могут создавать другие модификации, остающиеся в границах объема настоящего технического решения. Кроме того, те случаи, где не были представлены примеры модификаций, не должны интерпретироваться как то, что никакие модификации невозможны, и/или что то, что было описано, является единственным вариантом осуществления этого элемента настоящего технического решения.

[46] Более того, все заявленные здесь принципы, аспекты и варианты осуществления настоящего технического решения, равно как и конкретные их примеры, предназначены для обозначения их структурных и функциональных основ. Таким образом, например, специалистами в данной области техники будет очевидно, что представленные здесь блок-схемы представляют собой концептуальные иллюстративные схемы, отражающие принципы настоящего технического решения. Аналогично, любые блок-схемы, диаграммы, псевдокоды и т.п. представляют собой различные процессы, которые могут быть представлены на машиночитаемом носителе и, таким образом, использоваться компьютером или процессором, вне зависимости от того, показан явно подобный компьютер или процессор, или нет.

[47] Функции различных элементов, показанных на фигурах, включая функциональный блок, обозначенный как «процессор» или «графический процессор», могут быть обеспечены с помощью специализированного аппаратного обеспечения или же аппаратного обеспечения, способного использовать подходящее программное обеспечение. Когда речь идет о процессоре, функции могут обеспечиваться одним специализированным процессором, одним общим процессором или множеством индивидуальных процессоров, причем некоторые из них могут являться общими. В некоторых вариантах осуществления настоящего технического решения процессор может являться универсальным процессором, например, центральным процессором (CPU) или специализированным для конкретной цели процессором, например, графическим процессором (GPU). Более того, использование термина "процессор" или "контроллер" не должно подразумевать исключительно аппаратное обеспечение, способное поддерживать работу программного обеспечения, и может включать в себя, без установления ограничений, цифровой сигнальный процессор (DSP), сетевой процессор, интегральная схема специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянное запоминающее устройство (ПЗУ) для хранения программного обеспечения, оперативное запоминающее устройство (ОЗУ) и энергонезависимое запоминающее устройство. Также может быть включено другое аппаратное обеспечение, обычное и/или специальное.

[48] На Фиг. 1 представлена схема системы 100, реализованной в соответствии с неограничивающими вариантами осуществления настоящего технического решения. Физическое осуществление компьютерной системы 100 никак конкретно не ограничено. Компьютерная система 100 может, например, в качестве не ограничивающего примера, представлять собой настольный компьютер, ноутбук, смартфон (например, Apple iPhone™ or a Samsung Galaxy S5™), персональный цифровой помощник (PDA) или другое устройство, включающее в себя функциональность вычисления и возможности передачи данных. Альтернативно, компьютерная система 100 может быть реализована как сервер или другой сетевой компонент.

[49] Компьютерная система 100 (которая также может упоминаться здесь периодически как «компьютер 100», «электронное устройство 100», «устройство 100 обработки») может содержать среди прочего внутренние аппаратные компоненты, включая один или несколько мультиядерных процессоров, которые коллективно упоминаются здесь как процессор 102. С процессором 102 соединена (например, через USB) память 106 (например, ОЗУ). Память 106 может охватывать один или несколько носителей и в целом предоставлять место для хранения компьютерного кода (например, программного и/или аппаратного обеспечения) и данных. В качестве примера, память 106 может включать разнообразные материальные машиночитаемые носители, включая постоянное запоминающее устройство ПЗУ (ROM) и/или оперативное запоминающее устройство ОЗУ (RAM). Как широко известно в данной области техники, ПЗУ передает данные и команды однонаправленно процессору 102, а ОЗУ обычно используется для передачи данных и команд двунаправленно.

[50] Память 106 может также включать одно или несколько стационарных запоминающих устройств, в виде, среди прочих подходящих форм памяти, например, жестких дисков (HDD), твердотельных накопителей (SSD), карт флэш-памяти (например, безопасные цифровые карты или SD-карты, встроенные мультимедийные карты или еММС карты), соединенных двунаправленно с процессором 102. Информация может также располагаться на одном или нескольких съемных носителях, загруженных или установленных в компьютерную систему 100, когда это необходимо.

[51] Память 106 может хранить среди прочего серию машиночитаемых инструкций, выполнение которых позволяет процессору 102 выполнять различные операции, описанные здесь.

[52] Несмотря на то, что память 106 представлена в качестве единого физического блока, это не является необходимым в каждом варианте осуществления настоящего технического решения. Таким образом, память 106 может быть реализована в виде нескольких отдельных частей памяти. Эти отдельные части могут быть реализованы как отдельные физические устройства, которые необязательно являются одинаковыми. Тем не менее, части памяти могут быть реализованы как часть единого физического устройства, которое разделено на виртуальные/логические части.

[53] Процессор 102 также соединен с устройством 112 вывода (которое также упоминается здесь иногда как «устройство ввода-вывода»). В общем случае, устройство 112 вывода выполнено с возможностью предоставлять визуальную информацию пользователю (не показан) компьютерной системы 100. Устройство 112 вывода может быть реализовано как экран или монитор. Устройство 112 вывода может включать в себя одно или несколько устройств ввода и устройств вывода. Например, устройство 112 вывода может представлять собой жидкокристаллический дисплей (LCD), светодиодный дисплей (LED), дисплей на основе интерферометрической модуляции (IMOD) или дисплей на основе любой другой подходящей технологии. В некоторых вариантах осуществления настоящего технического решения, устройство 112 вывода может быть многофункциональным модулем, например, сенсорным экраном, который выполняет функцию как устройства вывода (для предоставления пользователю информации), так и устройства ввода (для получения команд от пользователя).

[54] Другими словами, устройство 112 вывода в общем случае выполнено с возможностью отображать графический интерфейс пользователя (GUI), который предоставляет простой в использовании графический интерфейс между пользователем компьютерной системы 100 и операционной системой или приложением(ями), установленном на компьютерной системе 100. В общем случае графический интерфейс пользователя (GUI) представляет программы, файлы и операционные опции с помощью графических изображений. В время проведения операции пользователь может выбрать и активировать разнообразные графические изображения, отображенные на дисплее, для инициации функций и задач, связанных с ними.

[55] Также с процессором 102 соединен модуль 104 отрисовки. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован как аппаратный модуль, способный отрисовывать графику для представления на устройстве 112 вывода. В некоторых вариантах осуществления настоящего технического решения, модуль 104 отрисовки реализован в соответствии со стандартом WebGL.

[56] Несмотря на то что в представленном варианте осуществления технического решения, модуль 104 отрисовки представлен как аппаратный модуль, это не является обязательным в каждом варианте осуществления настоящего технического решения. Например, в альтернативных вариантах осуществления настоящего технического решения, модуль 104 отрисовки может быть реализован как аппаратный модуль, соединенный с аппаратным модулем видеокарты (модулем видеочипсета), например, nVIDIA GeForce™ 970. В другом варианте осуществления настоящего технического решения, модуль отрисовки может быть реализован как программный модуль, соединенный с модулем видеочипсета видеокарты.

[57] В еще одном варианте осуществления настоящего технического решения, модуль 104 отрисовки может быть выполнен как часть программного модуля, например, как веб-браузер (например, Mozilla Firefox™, Yandex Browser™ и так далее). В конкретном варианте осуществления настоящего технического решения, где модуль 104 отрисовки реализован как часть веб-браузера, модуль 104 отрисовки может также отрисовывать веб-страницы, веб-графику, например, он-лайн видео фрагменты, изображения, анимацию, стили CSS, HTML и так далее.

[58] В общем случае, модуль 104 отрисовки выполнен с возможностью (i) получать пиксельные данные, связанные с графическим объектом, пиксельные данные могут храниться в памяти 106 и (ii) обрабатывать пиксельные данные для отрисовки и отображения на устройстве 112 вывода. Природа графического объекта никак конкретно не ограничена. Например, графический объект может представлять собой изображение, часть карты, часть видеоролика, часть трехмерной игры и так далее. Следует отметить, что модуль 104 отрисовки выполнен с возможностью обрабатывать графический объект, который будет отображен в различных разрешениях, с разным уровнем детализации, с различными неотображаемыми данными (например, метаданными) или с любым другим изменяющимся параметром отрисовки графического объекта.

[59] В компьютерной системе 100 также предусмотрена разметка 108 виртуальной памяти. Разметка 108 виртуальной памяти поддерживается модулем 104 отрисовки и/или процессором 102. В общем случае, функция разметки 108 виртуальной памяти заключается в предоставлении разметки части памяти (например, адрес или указатель другого типа) в памяти 106, где хранятся пиксельные данные, связанные с конкретным пикселем графического объекта, который будет отрисован модулем 104 отрисовки.

[60] То, как именно организовано и поддерживается разметка 108 виртуальной памяти, будет более подробно описано далее.

[61] Процессор 102 выполнен с возможностью выполнять один или несколько программных модулей 110. Один или несколько программных модулей 110 может выполнять различные процедуры и управлять различными компонентами компьютерной системы 100. Данный из одного или нескольких программных модулей 110 может выполнять процедуру управления модулем отрисовки. Как часть процедуры управления модулем отрисовки, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять: (i) управление разметкой 108 виртуальной памяти, (ii) получение доступа и получение данных (например, пиксельных данных из памяти 106), (iii) получение доступа, получение и реорганизацию данных, хранящихся в разметке 108 виртуальной памяти.

[62] Конкретнее, в соответствии с вариантами осуществления настоящего технического решения, данный один из одного или нескольких программных модулей 110 выполнен с возможностью осуществлять способ сохранения пиксельных данных в памяти 106 путем реорганизации разметки 108 виртуальной памяти.

[63] В первую очередь, данный один из одного или нескольких программных модулей 110 выполнен с возможностью получать доступ к первой части разметки 108 виртуальной памяти для получения пиксельных данных, которые связаны со множеством пикселей графического объекта, хранящегося в первой части разметки 108 виртуальной памяти. Для целей описания, которое будет представлено ниже, следует предположить, что первая часть разметки 108 виртуальной памяти организована в соответствии с известным уровнем техники, например, описанным в патенте US 6924811. На Фиг. 2 представлена часть Фиг. 15, на которой показан вариант осуществления технического решения из патента US 6924811. На Фиг 2 представлена организация разметки 108 виртуальной памяти до выполнения способа, реализованного в соответствии с вариантами осуществления настоящего технического решения.

[64] Множество пикселей, которые формируют графический объект, включает в себя первый пиксель и второй пиксель, первый пиксель и второй пиксель являются последовательно-отрисовываемыми при отображении графического объекта на устройстве 112 вывода. На Фиг. 7 представлен вариант графического объекта 702, который может отображаться на устройстве 112 вывода. На Фиг. 7 показаны (в увеличенном виде) первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710. Первый пиксель 704, второй пиксель 706, третий пиксель 708 и четвертый пиксель 710 в представленном порядке являются последовательно-отрисовываемыми. С другой стороны, первый пиксель 704 и четвертый пиксель 710 являются непоследовательно-отрисовываемыми, поскольку между ними находится ряд промежуточных пикселей (второй пиксель 706 и третий пиксель 708). Последнее также применяется, например, ко второму пикселю 706 и четвертому пикселю; а также к первому пикселю 702 и третьему пикселю 708, и так далее.

[65] На Фиг. 2 разметка 108 виртуальной памяти организована в первом массиве 202 с заранее определенным числом пикселей 704, 706, 708, 710 (в представленном варианте, заранее определенное число пикселей 704, 706, 708, 710 - четыре), которые организованы в один ряд 204, 206 из множества рядов 207, которые формируют первый массив 202, каждый пиксель 704, 706, 708, 710 сохраняется в соответствующей ячейке 203. Как будет описано ниже, организация множества рядов 207 в первом массиве 202 не учитывается для последовательно-отрисовываемых связей первого пикселя 704, 706, 708, 710 и второго пикселя 704, 706, 708, 710.

[66] В соответствии с различными вариантами осуществления настоящего технического решения, при отрисовке графического объекта на устройстве 112 вывода, отрисованный графический объект состоит из множества пикселей 704, 7