не-не, еще не все дорешено :v2_dizzy_biggrin2:
Раз NASA WorldWind у тебя не падает, значит возможно есть способ обойти это и в эмуляторе. Или хотябы понять из-за чего это происходит.
Попробуй вот этот тест #4.
Вид для печати
Товарищи, ну почему с дотнетовскими вещами столько проблем?
Нет бы писать под MFC например, как я)
а при чем тут вообще дотнет? :confused:
Тут проблема в связке многопоточность-DirectX-видеокарта, на конкретной машине zebest, в единичном случае.
Вот мы и пытаемся разобраться в чем причина - толи дрова привередливые, толи чтото плохо установилось, толи в железе проблема.
---------- Post added at 15:48 ---------- Previous post was at 15:36 ----------
а что это у тебя affinity mask такая необычная?
6 ядер, а процессу доступно только 4... причем старшие биты както странно установлены, как будто ядер не меньше 7...
Кстати, а сколько у тебя дисплеев?
Вот новый тест #5 - отключил аппаратное ускорение 3D, в этом варианте как в NASA World Wind - программное. Может проблема в аппаратном ускорении...
Проблемы у тебя были другого плана - старая система и не полностью установленный DirectX.
1.1 не подходит, т.к. используются фичи 2.0. ДиректX потребовалось устанавливать заново, т.к. у тебя он не полностью был установлен, потому что когда ты его без дотнета устанавливал, он не полностью установился.
Собственно директ икс нужен от апреля 2006 года. Я не думаю что установить 6-летней давности директикс - это такая уж требовательность к новизне. :)
не-не, ты в системе ускорение Direct3D не выключай в операционной системе Direct3D должен быть включен, иначе не будет работать.
Я расчитываю что ты все эти тесты запускаешь при выкрученом на полную ускорении видеоадаптера (закладка Advanced в свойствах дисплея) и при включенном ускорении Direct3D на закладке dxdiag->Display. Если эти значения не включены, то смысла чтото проверять нет - Direcr3D будет просто недоступен.
generics - упрощают читаемость кода и значительно повышают производительность при работе с коллекциями. Кроме того, фреймворк 1.1 не совместим с последующими версиями. Код написаный под 1.1 и использующий специфические операции, может сбоить, если установлен фреймворк 2.0 или выше.
Чтобы было понятнее, фреймворк 1.1 - это была по сути демо-версия в которую не успели добавить важный функционал. А 2.0 - это уже полноценный релиз. Все последующие фреймворки - это расширение фреймворка 2.0. Поэтому смысла ориентироваться на 1.1 нет никакого.
---------- Post added at 19:07 ---------- Previous post was at 18:58 ----------
у тебя не хватало 4 файлов от DirectX, последний из этих файлов появился в 2006 году. Эмулятор ругался на то что у тебя нет файла который устанавливается с DirectX от 2005 года.
Ты эти файлы мог руками подкинуть в папку эмулятора, но правильнее запустить установку DirectX. Это нужно для того, чтобы быть увереным, что DirectX у тебя содержит все необходимые файлы и DirectX не поврежден. Ну и чтобы для остальных программ эти файлы не нужно было подкидывать руками.
.
Витамин, вот объясни, как один и тот же человек может в одном треде утверждать, что-то в духе "на ассемблере невозможно написать сложную программу", а в другом писать "Если архитектура продумана, то написать расширяемый софт можно практически на чем угодно". Я вижу только одно объяснение - день считается неполноценным, если вечерком никого не затроллить :) Сорри, но я отказываюсь вступать в холивар C++ vs .NET.
а где ты фреймворк брал? с сайта microsoft или с варезника?
Систему на вирусы проверял?
Эмулятор кстати с фиксом я еще не выкладывал, тестить надо было тесты которые я выкладывал, а эмулятор если тестить так вот эту тестовую версию: http://zx.pk.ru/attachment.php?attac...7&d=1350942731 (в ней есть исправления под твой тазик).
Как тесты на чистой машине отработали?
Вообще чудеса, не то слово - на всех машинах которые я видел, везде работает без проблем, уверен что на любой другой также будет работать. А тут попадается одна, на которой какие-то странные выкрутасы с видеокартой. И не поймешь причину, т.к. приложение крэшится прямо в момент инициализации Direct3D. Вдвойне удивительно то что крешится с С++-ым эксепшеном чистое дотнет приложение, где таких ошибок вообще фактически не бывает.
можешь дать ремоут десктоп к тазику на котором это происходит?
во первых эмулятор не использует нативных потоков.
А во вторых креш происходит в приложении не имеющем никаких потоков кроме основного. Крешится прямо в момент старта приложения во время создания Direct3D.Device. Или в момент вызова Direct3D.Device.Reset(PresentParameters presentParams). Крешится просто пустое приложение состоящее из пустого окна и инициализации Direct3D. Крешится с исключением AccessViolation. Поэтому в чем тут может быть причина и непонятно. Это примерно как hello world на си написал, а он крешится с AccessViolation - поди разбери откуда там такая ошибка.
Возможно полезная информация http://dlcorp.nedopc.com/viewtopic.php?f=24&t=1117
хех, да, с affinity mask косяк вышел :v2_rolley в спешке забыл вписать формат вывода и вывод по дефолту в десятичной системе счисления прозводился :) Значит тут все в порядке 63 - это 0x3F, все 6 ядер доступны...
По поводу скорости, даже на Dual Core 2GHz без проблем 50 Hz стабильно тянет. Ну да, на машинках 7-15 летней давности с производительностью туговато. Но так ли актуальны тазики 2005 года выпуска в 2012 году?
В остальном deathsoft видимо невнимательно читал - крешится не на любой WS2003, а только на той что у zebest. Я проверял и под WS2003 STANDARD и на ENTERPRISE - везде окей.
Проблема только на машине у zebest и то что мы тут делаем - пытаемся разобраться почему :)
---------- Post added at 00:48 ---------- Previous post was at 00:44 ----------
эмулятор где-то 3 потока создает, остальное - системные потоки, они вылизаны микрософтом до блеска, туда можно даже не заглядывать.
Только речь то идет о том что крешится не только эмулятор, но даже пустое приложение, без потоков и без логики - просто окно и инициализация Direct3D, больше ничего нет.
---------- Post added at 00:56 ---------- Previous post was at 00:48 ----------
[ну вот английский framework - отлично, теперь хоть сообщения об ошибках по человечески пишутся :)]
судя по логу эта ошибка при закрытии. При закрытии окна вначале уничтожается менюшка, при этом рабочая область увеличивается и успевает отработать Direct3D.Reset чтобы привести размеры буфферов в соответствие с новыми размерами окна.
Короче говоря, при закрытии происходит тот-же самый ресайз... Т.е. тут ничего нового. Тот-же самый Reset по ресайзу.
zebest а 3D игрушки использующие DirectX у тебя не крешатся при переходе из полноэкранного режима в оконный и наоборот?
попробуй вот этот вариант
из тестов ясно одно, что креш у тебя происходит только при вызове Direct3D.Reset. Почему - хз. В обычных приложениях этот вызов происходит редко, например если меняются настройки графики. Может поэтому и не проявляется. Непонятно только почему на всех остальных системах, в том числе и с ATI картой, такая проблема не наблюдается...
Попробуй включить/выключить в настройках системы отрисовку окна при перетаскивании. Изменится ли поведение?
Что в логе?
попробуй вот этот тест. Он по всей видимости тоже будет крэшиться, но интересует содержимое лога который он успеет записать до крэша.
Т.к. крэш может помешать записи лога, тест в двух вариантах - во втором Reset не вызывается вообще. Выложи логи от этого теста.
раз начало лога пишется, значит эксперимент не чистый - ты чтото изменил. Конфиг только указывает логгеру куда логи писать. Раз логгер смог создать файл, значит с логгером все в порядке.
Бред какой-то, выглядит все так, будто типичный сбой железа. Но ведь другой софт у тебя работает...
Попробуй еще запустить, убрав из конфига вот эту строку:
Цитата:
<supportedRuntime version="v2.0.50727"/>
ну вот - внутреняя ошибка драйвера... По этой-же причине и эмулятор на вызове Direct3D.Reset крешится. Но насколько я понял, пример инициализации с зеленым окном, у тебя запускается и более менее стабильно работает и ресайзится, да?
Попробуй еще этот вариант теста, я оконце желтым подкрасил, чтоб видно было работает отрисовка или нет. Если окно желтое - значит все ок.
Оффтоп: интересно, где ты такую систему откопал, это какая-то специальная сборка QA Edition? :v2_dizzy_biggrin2:
хех, видимо твой драйвер видеокарты не поддерживает 6 ядер, что странно, потому как должен поддерживать.
Но тут возможно еще накладываются особенности WIN API. Проверь как ведет себя TESTDX-8 на всех ядрах.
Кстати, эти два ядра, которые ты отключал, они случайно не "разлоченые"? :v2_wink2:
У deathsoft эмулятор без сбоев на 12 ядрах работает, так что тут дело не в эмуляторе и не в дотнете. Я тоже проверял на 6 ядрах под Windows Server 2003 R2 Enterprise - все ок.
Обновил эмулятор до версии 2670 - небольшие оптимизации и фиксы Direct3D рендерера, с учетом замеченых особенностей поведения на некоторых системах (zebest).
с системой у тебя все-же что-то не так, но я подкорректировал момент инициализации Direct3D, чтобы не нервировать твой драйвер :)
Остальные системы не столь требовательны к моменту инициализации.
Что касается зеленого приложения, то в нем просто нет проверки на нулевой размер окна, т.к. его цель продемонстрировать инициализацию, а не обработку событий
Обновил до версии 2680 - добавил модель спектрума ZX Spectrum +3, пока только ULA и память, контроллера диска нет
http://savepic.su/2709100.png
Обновил до версии 2682 - исправлено сохранение в SZX для модели Spectrum+3 и подкорректированы тайминги ULA Spectrum+3
Очень рад, что этот эмулятор активно развивается и поддерживается, появляются новые фичи/фикы и активно выслушиваются "хотелки" пользователей. Совсем недавно спрыгнул с Unreal именно на ZXMAK2 и практически не почувствовал душевной боли =)
Многие знают, что я записываю видео и звук с эмулятора (как софтово, так и железом) и в сравнении с тем же Unreal все таки есть небольшая разница. Во-первых звук, в ZXMAK2 очень резкий и звонкий и на слух воспринимается не так приятно, как с Unreal, ну и соответственно в записи тоже, с чем это связано? К выводу картинки вообще никаких претензий, но очень не хватает подвешенного на горячие клавиши NoFlick. Вот именно в моем случае (а он практически клинический) это решило бы массу проблем недовольных зрителей =) Т.е. эти пресловутые горячие клавиши хочется очень-очень, и если есть такая возможность на лету переключать режимы без лазанья по менюшкам и без каких-либо задержек, то это было бы очень кстати.
А вообще, я очень рад, что не Unreal`ом и Spectaculator`ом единым наслаждаются пользователи под Windows =)